我知道你可以在特定的类中获取文本,并使用类似的内容来识别:
//*[(@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源代码。
提前感谢您的帮助!
答案 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);