我的文档中有几种<a>
类型。我只想选择其<a>
属性以文字&#34开头的title
;更多数据......&#34;比如<a title="more data *">
例如,如果给出下面的标记,我想选择第一个和第二个<a>
,但跳过第三个,因为title
并不以more data
开头,并跳过第4,因为<a>
甚至没有title属性。
<a title="more data some text" href="http://mypage.com/page.html">More</a>
<a title="more data other text" href="http://mypage.com/page.html">More</a>
<a title="not needed" href="http://mypage.com/page.html">Not needed</a>
<a href="http://mypage.com/page.html">Not needed</a>
我正在使用DOMXPath。我的查询怎么样?
$xpath = new DOMXPath($doc);
$q = $xpath->query('//a');
答案 0 :(得分:1)
您可以使用以下查询:
//a[starts-with(@title, "more data ")]
使用predicate,title
属性的值必须start with指定的字符串。
示例
$doc = new DOMDocument;
$doc->loadXML('<example>
<a title="more data some text" href="http://mypage.com/page.html">More</a>
<a title="more data other text" href="http://mypage.com/page.html">More</a>
<a title="not needed" href="http://mypage.com/page.html">Not needed</a>
<a href="http://mypage.com/page.html">Not needed</a>
</example>');
$xpath = new DOMXPath($doc);
$links = $xpath->query('//a[starts-with(@title, "more data ")]');
echo "Found {$links->length} links", PHP_EOL;
foreach ($links as $link) {
echo $link->getAttribute('href'), PHP_EOL;
}