1

我在 9 年前使用了一个 PHP 脚本。

将 PHP 版本更新到最新的稳定版本(PHP 5.4.1.1)后,我的脚本不再工作。

我找到了问题区域,谁能帮我把这个旧的 PHP 代码转换为最新的 PHP 5.4.11。

if ((strlen($user_name)<$nick_min_length) or (strlen($user_name)>$nick_max_length)) {
    $error_text ="$w_incorrect_nick<br><a href=\"index.php\">$w_try_again</a>";
    include($file_path."designes/".$design."/error_page.php");
    exit;
}
if (ereg("[^".$nick_available_chars."]", $user_name)) {
    $error_text ="$w_incorrect_nick<br><a href=\"index.php\">$w_try_again</a>";
    include($file_path."designes/".$design."/error_page.php");
    exit;
}
if (strtolower($user_name) == strtolower(strip_tags($w_rob_name))) {
    $error_text ="$w_incorrect_nick<br><a href=\"index.php\">$w_try_again</a>";
    include($file_path."designes/".$design."/error_page.php");
    exit;
}
4

2 回答 2

5
if (ereg("[^".$nick_available_chars."]", $user_name)) {

应该:

if (preg_match("/[^" . preg_quote($nick_available_chars) . "]/", $user_name)) {

ereg()已弃用,不应使用。此外,使用preg_match()你想确保你的变量中的特殊字符被正确转义,所以你会使用preg_quote()并且正则表达式需要delimiters,我/在这种情况下。

于 2013-01-25T06:21:01.113 回答
1

问题在于ereg它现在已弃用,可能会在此版本中删除。

使用preg_match而不是ereg

于 2013-01-25T06:23:42.527 回答