这是随机密码生成器代码。我尝试运行时遇到此错误。
我也尝试在一些在线PHP执行器上运行此代码。
ERROR:
PHP致命错误:未捕获错误:在/home/cg/root/1626987/main.php:26中调用未定义的函数split() 堆栈跟踪: #0 /home/cg/root/1626987/main.php(44):randomPass(10,1,'lower_case,uppe ...') #1 {main} 在第26行的/home/cg/root/1626987/main.php中引发
请帮我处理以下代码
<?php
function randomPass($length,$count, $characters) {
$symbols = array();
$passwords = array();
$used_symbols = '';
$pass = '';
$symbols["lower_case"] = 'abcdefghijklmnopqrstuvwxyz';
$symbols["upper_case"] = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$symbols["numbers"] = '1234567890';
$symbols["special_symbols"] = '!?~@#-_+<>[]{}';
$characters = split(",",$characters);
foreach ($characters as $key=>$value) {
$used_symbols .= $symbols[$value];
}
$symbols_length = strlen($used_symbols) - 1;
for ($p = 0; $p < $count; $p++) {
$pass = '';
for ($i = 0; $i < $length; $i++) {
$n = rand(0, $symbols_length);
$pass .= $used_symbols[$n];
}
$passwords[] = $pass;
}
return $passwords;
}
$my_passwords = randomPass(10,1,"lower_case,upper_case,numbers,special_symbols");
print_r($my_passwords);
?>
答案 0 :(得分:4)
split()
https://secure.php.net/manual/en/function.split.php上的手册指出:
警告强>
此功能在PHP 5.3.0中已弃用,在PHP 7.0.0中已被删除。
此功能的替代方案包括:
旁注,根据备注:
从PHP 5.3.0开始,不推荐使用提示 split()。 preg_split()是此功能的建议替代方案。如果您不需要正则表达式的强大功能,则使用explode()会更快,这不会产生正则表达式引擎的开销。
答案 1 :(得分:2)
使用explode()
代替split()
$characters = explode(",",$characters);
答案 2 :(得分:1)
警告 此函数在PHP 5.3.0中已弃用,在PHP 7.0.0中已被删除。
此功能的替代方案包括:
preg_split()
explode()
str_split()