0

<a>我的文档中有几种类型。我只想选择<a>title属性以文本“更多数据......”开头的<a title="more data *">

例如,给定下面的标记,我想选择第一个和第二个<a>,但跳过第三个,因为title不以 开头more data,跳过第四个,因为<a>甚至没有标题属性。

<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');
4

1 回答 1

1

您可以使用如下查询:

//a[starts-with(@title, "more data ")]

它使用谓词,使得title属性的值必须以指定的字符串开头。


一个例子

$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;
}

是上面在线运行的示例

于 2012-11-28T23:01:43.327 回答