PHP DOM属性通配符

时间:2012-08-18 08:35:05

标签: php dom web-scraping

我已经四处寻找,我一​​直无法找到它。我只想使用通配符从html中选择元素。例如,对于我正在抓取的页面,此选择器在Jquery的控制台中完美运行:

$("tr[id^='informal_']")

换句话说,抓住id为'informal_'开头的所有行。我试过xpath但没有运气。 xpath是XML独有的吗?无论如何,如果有人有任何解决方案,我将非常感激。

修改

我使用的xpath:

  $doc = new DOMDocument($html);
  $doc->strictErrorChecking = false;
  $xpath = new DOMXPath($doc);
  $table_rows = $xpath->query("//*tr[starts-with(@id, 'informal_')]");

我决定选择:http://code.google.com/p/phpquery/

以下是代码:

require('phpQuery/phpQuery.php');

    $doc = phpQuery::newDocumentHTML($html);;
    $table_rows = $doc->find("tbody tr[id^='informal_']");

2 个答案:

答案 0 :(得分:3)

等同于jQuery选择器

tr[id^='informal_']

在XPath中,是

//tr[starts-with(@id, 'informal_')]

你非常接近答案,只有*阻碍了它。

答案 1 :(得分:0)

当您将通配符与文字节点名称混合时,

*tr是无效的XPath。

您只需要*,即*[starts-with...