PHP DOMDocument运行不正常

时间:2012-05-15 15:18:07

标签: php dom

我正在尝试使用以下代码从网站上获取电子邮件帐户。但是它产生了像

这样的输出
%3e%61%2f%3c%6d%6f%63%2e%6c%69%61%6d%67%40%6f%63%73%6e%61%69%70%6d%61%20%3e%22%6d%6f%63%2e%6c%69%61%6d%67%40%6f%63%73%6e%61%69%70%6d%61%3a%6f%74%6c%69%61%6d%22%3d%66%65%72%68%20%61%3c %3e%61%2f%3c%6d%6f%63%2e%65%76%69%6c%40%34%34%34%73%71%20%3e%22%6d%6f%63%2e%65%76%69%6c%40%34%34%34%73%71%3a%6f%74%6c%69%61%6d%22%3d%66%65%72%68%20%61%3c %3e%61%2f%3c%6e%69%2e%70%6f%68%73%6c%61%74%69%67%69%64%6e%65%67%79%78%6f%40%6f%66%6e%69%20%3e%22%6e%69%2e%70%6f%68%73%6c%61%74%69%67%69%64%6e%65%67%79%78%6f%40%6f%66%6e%69%3a%6f%74%6c%69%61%6d%22%3d%66%65%72%68%20%61%3c %3e%61%2f%3c%6d%6f%63%2e%73%6e%61%72%6f%6f%6a%6e%61%6d%40%6f%66%6e%69%20%3e%22%6d%6f%63%2e%73%6e%61%72%6f%6f%6a%6e%61%6d%40%6f%66%6e%69%3a%6f%74%6c%69%61%6d%22%3d%66%65%72%68%20%61%3c %3e%61%2f%3c%6d%6f%63%2e%6c%69%61%6d%67%40%6c%65%74%6f%68%61%79%69%72%70%20%3e%22%6d%6f%63%2e%6c%69%61%6d%67%40%6c%65%74%6f%68%61%79%69%72%70%3a%6f%74%6c%69%61%6d%22%3d%66%65%72%68%20%61%3c %3e%61%2f%3c%6d%6f%63%2e%6c%69%61%6d%67%40%61%72%70%61%6e%6e%75%70%68%63%72%75%68%63%79%65%6e%6e%61%79%69%76%20%3e%22%6d%6f%63%2e%6c%69%61%6d%67%40%61%72%70%61%6e%6e%75%70%68%63%72%75%68%63%79%65%6e%6e%61%79%69%76%3a%6f%74%6c%69%61%6d%22%3d%66%65%72%68%20%61%3c %3e%61%2f%3c%6d%6f%63%2e%6c%69%61%6d%67%40%74%6e%65%6d%65%67%6e%61%6d%65%72%6f%63%6e%61%76%61%72%74%20%3e%22%6d%6f%63%2e%6c%69%61%6d%67%40%74%6e%65%6d%65%67%6e%61%6d%65%72%6f%63%6e%61%76%61%72%74%3a%6f%74%6c%69%61%6d%22%3d%66%65%72%68%20%61%3c %3e%61%2f%3c%6d%6f%63%2e%6b%75%65%67%6e%61%68%63%78%65%74%6e%65%6d%79%6f%6c%70%6d%65%65%68%74%40%68%73%65%72%75%73%20%3e%22%6d%6f%63%2e%6b%75%65%67%6e%61%68%63%78%65%74%6e%65%6d%79%6f%6c%70%6d%65%65%68%74%40%68%73%65%72%75%73%3a%6f%74%6c%69%61%6d%22%3d%66%65%72%68%20%61%3c %3e%61%2f%3c%6d%6f%63%2e%6c%69%61%6d%67%40%68%70%6e%6f%6d%62%61%6a%75%73%20%3e%22%6d%6f%63%2e%6c%69%61%6d%67%40%68%70%6e%6f%6d%62%61%6a%75%73%3a%6f%74%6c%69%61%6d%22%3d%66%65%72%68%20%61%3c 

我正在使用的代码是

<?php    
$html = new DOMDocument();
@$html->loadHtmlFile('http://www.quickerala.com/listings?searchString=&districtId=1&go=Go');
$xpath = new DOMXPath( $html );
$nodelist = $xpath->query( "//span[@class='listEmail']" );
foreach ($nodelist as $n){
    echo $n->nodeValue."\n";
}
?>

1 个答案:

答案 0 :(得分:2)

不,这实际上是正确的。我认为你必须手动urldecode

更正,你还必须strrev

这可能是垃圾邮件保护;从他们的代码我设法解除这个代码块:

$(".listEmail").each(function(index){
    var strEm = unescape($(this).html());
    var reversedStr=strEm.split("").reverse().join("");
    $(this).html(reversedStr)});
}

所以:

$value = strrev(urldecode($n->nodeValue));

仍然会返回一段HTML,所以你也必须解析它:)

相关问题