function getEmail($str) {
$pattern = "/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i";
preg_match_all($pattern,$str,$emailArr);
return $emailArr[0];
}
$emailstr = "[email protected]俺不是米vi地方就开iid邮件列表:[email protected][email protected];.;;,[email protected],[email protected]";
$emailArr = getEmail($emailstr);
echo "<pre>";
print_r($emailArr);
echo "</pre>";上面的程序是正常的,可以正常输出,也就是验证了提取邮件地址这个方法可行。
但是我想在网页源代码里提取就不行了。
比如
$url='http://hi.baidu.com/dspace/blog/item/daebac6e9f9e8cdc81cb4afb.html'; //这个网页里绝对含有邮件地址。
$content=file_get_contents($url);//得到源代码print_r(getEmail($content));//这样是不行的,没有任何输出。也就是采集不到任何东西,为啥呢?正常来说是可以采集到的。我把源代码中的串复制到本地用串来操作,也是不能输出。是不是这些源代码中某些字符敏感原因呢???

解决方案 »

  1.   

    <?php
    $url='http://hi.baidu.com/dspace/blog/item/daebac6e9f9e8cdc81cb4afb.html'; //这个网页里绝对含有邮件地址。
    $content=file_get_contents($url);
    echo $content;
    function getEmail($str) {
    //$pattern = "/([a-z0-9]*[-_\.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?/i";
    $pattern = "/([a-z0-9\-_\.]+@[a-z0-9]+\.[a-z0-9\-_\.]+)/";
    preg_match_all($pattern,$str,$emailArr);

    return $emailArr[0];
    } print_r( getEmail($content));
    ?>