2011-12-16 111 views
2

我一整天都在乱搞DOM XPath的东西 - 四处阅读并撕掉我的头发!所以,最后的办法,问你们 - 专业人士!PHP Dom XPath - 为什么它不工作?

我想要做的是检索(在一个数组中)all the titles of threads here

我想使用XPath来做到这一点(除非有人能告诉我更好的方式);目前我只是试图让只有1题来检查我的代码是否在工作(显然不是......!)

我使用:

$list3 = $xpath3 
    ->evaluate("//a[contains(@style, 'font-weight:bold') and 
    contains(@href, 'showthread.php?t=3499047')]"); 

但是没有什么是越来越检索

+0

你读过的线程(即后面的链接)不再粗体,是这个问题吗? – AakashM 2011-12-16 15:24:02

+0

我觉得表情很紧张,你可以试着去除风格条款吗?并且href比较变为'?t = 3499047`而没有路径 – ajreal 2011-12-16 15:24:09

回答

2

你没有得到任何结果的原因是没有满足这两个条件的元素<a>

这些都是@href包含“3499047”的链接:

<a href="showthread.php?s=9bc55ab5990282a5353fb20d505d577e&amp;t=3499047" id="thread_title_3499047">Tesco misprices and discussion (Thread 12)</a> 
<a href="showthread.php?s=9bc55ab5990282a5353fb20d505d577e&amp;t=3499047">1</a> 
<a href="showthread.php?s=9bc55ab5990282a5353fb20d505d577e&amp;t=3499047&amp;page=2">2</a> 
<a href="showthread.php?s=9bc55ab5990282a5353fb20d505d577e&amp;t=3499047&amp;page=3">3</a> 
<a href="showthread.php?s=9bc55ab5990282a5353fb20d505d577e&amp;t=3499047&amp;page=110">Last Page</a> 
<a href="member.php?s=9bc55ab5990282a5353fb20d505d577e&amp;find=lastposter&amp;t=3499047" rel="nofollow">ExiledCockney</a> 
<a href="misc.php?do=whoposted&amp;t=3499047" onclick="who(3499047); return false;">2,184</a> 
<a rel="shadowbox;width=732;height=527;player=iframe;" href="wow.php?t=3499047" target="_blank" style="display: block; width: 100%; height: 100%; cursor: pointer;"> 
     <div style="width: 100%; height: 100%; background-image: url('http://images2.moneysavingexpert.com/images/forum_style_2/misc//wow_big_faint_grey.gif');"> 
      <div style="padding: 12px 0px 0px 0px;"> 
       <strong>3</strong> 
      </div> 
     </div> 
    </a> 

正如你可以看到,他们没有包含“‘字体重量:大胆’”的样式属性。

如果在浏览器中查看页面时,页面上的标记包含所需组合的元素,则可能是通过javascript添加的。 DOM不会运行任何JavaScript,因此您必须检查使用DOM获取的标记。

0

确保DOM不在HTML上嗅探。对畸形的html非常挑剔。加载页面后,请立即查看调用产生的->saveHTML()。如果你得到不同/截断的东西,你的输入是畸形的,必须先清理。

+0

这不是非常挑剔。 – Gordon 2011-12-16 15:40:28

0

我看了一下这个html,但是我没有看到任何带有href的链接,它们也有style="font-weight: bold;"。我其实没有在页面上看到任何大胆的链接。无论如何,当我删除这种情况时,我得到evaluate()的五个DOME元素。