5

我收到此错误消息:

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
            }
        }
    }
?>

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

4

2 回答 2

1

如果 / 是您的模式分隔符,则必须在模式中使用反斜杠对其进行屏蔽。并且 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

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

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

于 2012-12-19T09:46:29.400 回答