preg_match()[function.preg-match]:未知的修饰符

时间:2012-12-19 09:19:55

标签: php preg-match ereg

我收到此错误消息:

  

preg_match()[function.preg-match]:第13行/home/public_html/checkem.php中的未知修饰符'='

当我转到以下行时,我得到了这个:

<?php
    //thx to http://www.phpit.net/code/valid-email/ for valid_email
    function valid_email($email) {
    // First, we check that there's one @ symbol, and that the lengths are right
    if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
        // Email invalid because wrong number of characters in one section, or wrong number @ symbols.
        return false;
    }
    // Split it into sections to make life easier
    $email_array = explode("@", $email);
    $local_array = explode(".", $email_array[0]);
    for ($i = 0; $i < sizeof($local_array); $i++) {
        if (!preg_match("/^(([A-Za-z0-9!#$%&#038;'*+/=?^_`{|}~-][A-Za-z0-9!#$%&#038;14.'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/", $local_array[$i])) {
            return false;
        }
    }  
    if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name
        $domain_array = explode(".", $email_array[1]);
            if (sizeof($domain_array) < 2) {
                return false; // Not enough parts to domain
            }
        }
    }
?>

我已将ereg更改为preg_match,然后将代码包装为//,因为ereg显示为已弃用。我仍然是编码的初学者,非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

if /是你的模式分隔符,它必须用模式中的反斜杠进行掩码。并且必须(应该)屏蔽PHP字符串的反斜杠。

preg_match("/^(([A-Za-z0-9!#$%&#038;'*+/=?^_`{|}~-][A-Za-z0-9!#$%&#038;14.'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/", $local_array[$i])

preg_match("/^(([A-Za-z0-9!#$%&#038;'*+\\/=?^_`{|}~-][A-Za-z0-9!#$%&#038;14.'*+\\/=?^_`{|}~\\.-]{0,63})|(\\"[^(\\\\|\\")]{0,62}\\"))$/", $local_array[$i])

BurninLeo

答案 1 :(得分:0)

preg_match("/^(([A-Za-z0-9!#$%&#038;'*+/=?^_`{|}~-][A-Za-z0-9!#$%&#038;14.'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/
            ^                          ^
            |                          |
          start                       end

/不是分隔符时,您需要引用\/作为@。或者,选择不在表达式中的分隔符,例如{{1}}。