> 백엔드 개발 > PHP 튜토리얼 > PHP는 임의의 문자열을 생성합니다(3가지 방법)_php 팁

PHP는 임의의 문자열을 생성합니다(3가지 방법)_php 팁

WBOY
풀어 주다: 2016-05-16 20:07:19
원래의
1463명이 탐색했습니다.

임의 비밀번호 생성을 위해 사용자가 등록한 경우, 비밀번호를 재설정하려면 사용자도 무작위 비밀번호를 생성해야 합니다. 무작위 비밀번호는 고정된 길이의 문자열입니다. 이 기사에서는 무작위 문자열을 생성하는 여러 가지 방법을 요약합니다.
방법 1

1. 35와 같이 33~126 사이의 임의의 정수를 생성합니다.

2. 35를 해당 ASCII 코드 문자로 변환합니다(예: #에 해당하는 35).

3. 위의 1단계와 2단계를 n번 반복하여 n자리 비밀번호로 연결합니다.

이 알고리즘은 주로 두 가지 함수를 사용합니다. mt_rand(int $min, int $max) 함수는 임의의 정수를 생성하는 데 사용됩니다. 여기서 $min – $max는 ASCII 코드의 범위입니다. 필요에 따라 조정 범위를 사용할 수 있습니다. 예를 들어 ASCII 코드 표의 97 – 122 비트는 영문자 a – z에 해당합니다. 자세한 내용은 ASCII 코드 표를 참조하십시오. 해당 정수 $ascii를 해당 문자로 변환합니다.

function create_password($pw_length =  
{ 
$randpwd = ”; 
for ($i = 0; $i < $pw_length; $i++) 
{ 
$randpwd .= chr(mt_rand(33, 126)); 
} 
return $randpwd; 
} 
// 调用该函数,传递长度参数$pw_length = 6 
echo create_password(6); 
로그인 후 복사

방법 2

1. a – z, A – Z, 0 – 9 및 일부 특수 문자를 포함하는 $chars 문자열을 미리 설정합니다.

2. $chars 문자열에서 문자를 무작위로 선택합니다.

3. 길이가 n인 비밀번호를 얻으려면 두 번째 단계를 n번 반복하세요.

function generate_password( $length = 8 ) { 
// 密码字符集,可任意添加你需要的字符 
$chars = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/&#63;|'; 
$password = ”; 
for ( $i = 0; $i < $length; $i++ ) 
{ 
// 这里提供两种字符获取方式 
// 第一种是使用 substr 截取$chars中的任意一位字符; 
// 第二种是取字符数组 $chars 的任意元素 
// $password .= substr($chars, mt_rand(0, strlen($chars) – 1), 1); 
$password .= $chars[ mt_rand(0, strlen($chars) - 1) ]; 
} 
return $password; 
} 
로그인 후 복사

방법 3

1. a – z, A – Z, 0 – 9 및 일부 특수 문자를 포함하는 문자 배열 $chars를 사전 설정합니다.

2. array_rand()를 통해 $chars 배열에서 $length 요소를 무작위로 선택합니다.

3. 획득한 키 이름 배열 $keys에 따라 $chars 배열에서 문자를 꺼내고 문자열을 연결합니다. 이 방법의 단점은 동일한 문자를 반복해서 검색할 수 없다는 것입니다.

function make_password( $length = 8 ) 
{ 
 
// 密码字符集,可任意添加你需要的字符 
$chars = array(‘a', ‘b', ‘c', ‘d', ‘e', ‘f', ‘g', ‘h', 
‘i', ‘j', ‘k', ‘l','m', ‘n', ‘o', ‘p', ‘q', ‘r', 's', 
‘t', ‘u', ‘v', ‘w', ‘x', ‘y','z', ‘A', ‘B', ‘C', ‘D', 
‘E', ‘F', ‘G', ‘H', ‘I', ‘J', ‘K', ‘L','M', ‘N', ‘O', 
‘P', ‘Q', ‘R', ‘S', ‘T', ‘U', ‘V', ‘W', ‘X', ‘Y','Z', 
‘0′, ‘1′, ‘2′, ‘3′, ‘4′, ‘5′, ‘6′, ‘7′, ‘8′, ‘9′, ‘!', 
‘@','#', ‘$', ‘%', ‘^', ‘&', ‘*', ‘(‘, ‘)', ‘-', ‘_', 
‘[', ']‘, ‘{‘, ‘}', ‘<', ‘>', ‘~', ‘`', ‘+', ‘=', ‘,', 
‘.', ‘;', ‘:', ‘/', ‘&#63;', ‘|'); 
 
// 在 $chars 中随机取 $length 个数组元素键名 
$keys = ($chars, $length); 
$password = ”; 
for($i = 0; $i < $length; $i++) 
{ 
// 将 $length 个数组元素连接成字符串 
$password .= $chars[$keys[$i]]; 
} 
return $password; 
} 
로그인 후 복사

시간 효율성 비교

다음 PHP 코드를 사용하여 위의 세 가지 임의 비밀번호 생성 기능의 실행 시간을 계산하여 6자리 비밀번호를 생성한 후 시간 효율성에 대한 간단한 비교를 수행합니다. 최종 결과는 다음과 같습니다.

방법 1: 9.8943710327148E-5초
방법 2: 9.6797943115234E-5초
방법 3: 0.00017499923706055초
방법 1과 방법 2의 실행 시간은 비슷한 반면, 방법 3의 실행 시간은 약간 더 길다는 것을 알 수 있습니다.
세 가지 방법의 구현 과정을 비교하고 시간 효율성을 비교하면서 PHP에서 임의의 문자열을 생성하는 세 가지 방법을 배웠습니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿