-1
$email_address_pattern="([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~]+\\.)+[a-zA-Z]{2,6}";
$address= "abc@gmail.com";
$length=strlen($address);

for($position=0;$position<$length;) {
    $match=preg_split($email_address_pattern,strtolower(substr($address,$position)),2);
    print_r($match);

    if(count($match)<2)
        break;

    $position+=strlen($match[0]);
    $next_position=$length-strlen($match[1]);
    $found=substr($address,$position,$next_position-$position);

    if(!strcmp($found,""))
        break;
    if(IsSet($addresses[$found]))
        $addresses[$found]++;
    else {
        $addresses[$found]=1;
        $position=$next_position;
    }
}

我收到警告:

警告:preg_split():第 10 行 /home/www/html/cusidevelopment/test.php 中的未知修饰符“+”

我该如何解决?

提前致谢

4

2 回答 2

0

尝试这个

$email_address_pattern="/([-!#\$%&'*+.\/0-9=?A-Z^_`a-z\{|\}~]+)@([-!#\$%&'*+\/0-9=?A-Z^_`a-z\{|\}~]+).[a-zA-Z]{2,6}/";
于 2013-01-25T07:37:11.633 回答
0

您必须添加开始和结束符号。添加ü给出了一个有效的正则表达式。(此外,此站点将您的反引号解释为格式,因此您需要对问题中的反斜杠进行转义。)

尝试这个:

$email_address_pattern="ü([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~]+\.)+[a-zA-Z]{2,6}ü";

正如您当然知道的那样,正则表达式不适合描述电子邮件地址。

于 2013-01-25T07:21:39.107 回答