文字列の文字をランダムに替える関数、str_shuffleです。
そんなに用途はないですが、パスワード生成の際にランダム文字列を作る際などに使われるかと。
str_shuffle ( string $str ) : string
str_shuffle() は文字列をシャッフルします。 考えられるすべての順列のうちのひとつを作成します。
使用例:
<?php
$str = 'abcdef';
$shuffled = str_shuffle($str);
// bfdaec のような文字列を返します
echo $shuffled;
?>
配列を作ったあとに、事情により要素をランダムに変えたい場合などがあるかと思われます。
そんな時に役立つのがshuffleです。
shuffle ( array &$array ) : bool
この関数は、配列をシャッフル (要素の順番をランダムに) します。 この関数が使う疑似乱数生成器は、暗号学的な使い方には適していません。
使い方例
<?php
numbers = range(1, 20);
shuffle($numbers);
foreach ($numbers as $number) {
echo "$number ";
}
?>
注意: この関数は、 array パラメータの要素に対して新しいキーを割り当てます。 その際、単純にキーを並べ替える代わりに、 すでに割り当てられている既存のキーを削除してしまいます。
さらにこのstr_shuffleを用いれば、
ある程度ランダム性のあるパスワードを生成することも。
echo substr(str_shuffle('1234567890abcdefghijklmnopqrstuvwxyz'), 0, $length);
このようにすると、$lengthに数字を送ると、その文字数のランダム文字列が出力されます。
この場合、この文字列の順番を変えるだけですので、
同じ文字は1度まで、最大でも36文字の文字列になります。
仮にパスワードとして使うと、脆弱過ぎるので、
簡易的なパスワードに用いる場合などに。
もう少し複雑にしたい場合、
str_shuffle の対象文字列を、
1234567890abcdefghijklmnopqrstuvwxyz の後ろに A~Z の大文字アルファベット26文字も入れれば、大文字も入り、少し複雑になります。
同じように、!"#$%&'()=- とかも入れれば記号も入り複雑になります。
こうちゃん
0 件のコメント:
コメントを投稿