<?php
$s = file_get_contents("data/a.txt"); //文件1
$p = file_get_contents("data/b.txt"); //文件2// 把文件2的内容处理成正则表达式的规则串
$p = str_replace(".","\\.",$p);
$p = str_replace("*",".*",$p);
$p = str_replace("@",".+@",$p);
$pattern = split("[\r\n]+",$p);
if(empty($pattern[count($pattern)-1]))
array_pop($pattern);
$pattern = join("|",$pattern);// 匹配文件1的内容
preg_match_all("/$pattern/",$s,$regs);// 查看被找到的邮件地址
print_r($regs[0]);
?>
$s = file_get_contents("data/a.txt"); //文件1
$p = file_get_contents("data/b.txt"); //文件2// 把文件2的内容处理成正则表达式的规则串
$p = str_replace(".","\\.",$p);
$p = str_replace("*",".*",$p);
$p = str_replace("@",".+@",$p);
$pattern = split("[\r\n]+",$p);
if(empty($pattern[count($pattern)-1]))
array_pop($pattern);
$pattern = join("|",$pattern);// 匹配文件1的内容
preg_match_all("/$pattern/",$s,$regs);// 查看被找到的邮件地址
print_r($regs[0]);
?>
$email_text = "
[email protected]
[email protected]
[email protected]
";
$email_pattern = "
@hot*.com
@ww.com
@*.aa.bb
";
preg_match_all("(@[\w\-\.\*]+)",$email_pattern,$arr);
$pattern_arr = str_replace(array(".","*"),array("\\.","[\\w\\-]+"),$arr[0]);$pattern = "/(([\w\-]+)((".implode(")|(",$pattern_arr).")))(\s+|$)/is";
preg_match_all($pattern,$email_text,$r_arr);
echo "<xmp>";print_r($r_arr[1]);echo "</xmp>";
?>
@hot*.com
@ww.com
@*.aa.bb
其中*代表1到多个字符,@前面的字符任意这些规则有问题啊。而且*代表的是0到多个,+代表的是1到多个。
$pattern = "/(([\w\-]+)((".implode(")|(",$pattern_arr).")))(\s+|$)/is";
=>
$pattern = "/([\w\-]+(".implode("|",$pattern_arr)."))(\s+|$)/is";效率高一些
Warning: Unknown modifier 'j' ....
谢谢各位的指点。
$pattern = "/([\w\-\.]+(".implode("|",$pattern_arr)."))(\s+|$)/is";很少见到邮箱账号允许.出现的