使用文本片段获取class和id值

时间:2018-05-20 00:33:12

标签: php xml xpath

我知道你可以在特定的类中获取文本,并使用类似的内容来识别:

//*[(@id='att1' and @class='att2') or (@id='att3' and @class='att4')]/text()

我的问题是:是否可以扭转搜索。 所以我有一个来自文本的字符串,我想从最近的标签中获取类和id。

所以例如:

我们有一个类似的源代码:

...<td><span class="1" id="11"><div class="2" id="22">
This is a unique text string on this page</div><div class="3" id="33">
Another Text</div></span></td>...

我正在寻找包含文本片段“ique text string”的最近标记的类值和id值(在我们的示例中是第一个&lt; div&gt;标记)。

有没有xpath给我2和22作为请求值?

或者有没有办法通过PHP解决它?当然我在php变量中有html源代码。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用evaluate()string()组合:

$content = '
<td><span class="1" id="11"><div class="2" id="22">
This is a unique text string on this page</div><div class="3" id="33">
Another Text</div></span></td>';

$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'), LIBXML_HTML_NOIMPLIED);
$xpath = new DOMXPath($doc);

$class = $xpath->evaluate('string(//div[contains(., "unique text")]/@class)', null);
$id = $xpath->evaluate('string(//div[contains(., "unique text")]/@id)', null);