PHP의 ‘d79jd8c’와 같은 (의사) 랜덤 영숫자 문자열을 생성하려면 어떻게 해야 합니까?
질문에 대한 답변
먼저 가능한 모든 문자를 포함하는 문자열을 만듭니다.
$characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
range()를 사용하여 이를 보다 빠르게 수행할 수도 있습니다.
그런 다음 루프에서 난수를 선택하여 이 값을 인덱스로 사용합니다.$characters
string: 임의의 문자를 가져와 문자열에 추가합니다.
$string = '';
$max = strlen($characters) - 1;
for ($i = 0; $i < $random_string_length; $i++) {
$string .= $characters[mt_rand(0, $max)];
}
$random_string_length
는 랜덤 문자열의 길이입니다.
나는 그 일에 이 기능이 좋다.
function randomKey($length) {
$pool = array_merge(range(0,9), range('a', 'z'),range('A', 'Z'));
for($i=0; $i < $length; $i++) {
$key .= $pool[mt_rand(0, count($pool) - 1)];
}
return $key; }
echo randomKey(20);
openssl_random_pseudo_bytes 함수를 사용하여 암호화적으로 강력한 랜덤(잠재적)8 문자의 문자열을 생성합니다.
echo bin2hex(openssl_random_pseudo_bytes(4));
절차 방법:
function randomString(int $length): string {
return bin2hex(openssl_random_pseudo_bytes($length)); }
업데이트:
PHP7은random_x()
더 나은 기능을 제공합니다.PHP 5.X에서 온 경우 PHP 7에서 random_bytes() 및 random_int()의 폴리필인 우수한 paragonie/random_compatibrary를 사용합니다.
function randomString($length) {
return bin2hex(random_bytes($length)); }
단일 라인 솔루션:
echo substr( str_shuffle( str_repeat( 'abcdefghijklmnopqrstuvwxyz0123456789', 10 ) ), 0, 7 );
문자열에 다른 길이를 설정하기 위해 기판 파라미터를 변경할 수 있습니다.
ASCII 테이블을 사용하여 문자 범위를 선택합니다.여기서 $range_start, $range_end는 ASCII 테이블의 10진수 컬럼 값입니다.
문자의 범위가 다른 문자열 내에서 구체적으로 정의되어 있는 방법에 비해 이 방법이 더 좋다고 생각합니다.
// range is numbers (48) through capital and lower case letters (122) $range_start = 48; $range_end
= 122; $random_string = ""; $random_string_length = 10;
for ($i = 0; $i < $random_string_length; $i++) {
$ascii_no = round( mt_rand( $range_start , $range_end ) ); // generates a number within the range
// finds the character represented by $ascii_no and adds it to the random string
// study **chr** function for a better understanding
$random_string .= chr( $ascii_no ); }
echo $random_string;
상세보기: