这段代码中的ERROR是什么......? PHP

时间:2018-02-07 18:40:56

标签: php

这是随机密码生成器代码。我尝试运行时遇到此错误。

我也尝试在一些在线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);

    ?>

3 个答案:

答案 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()