我有这个HTML模板:
<center>
<img src="image1">
<br><br>
<img src="image2">
<br><br>
<strong><em>TITLE1 :</em></strong> DESC1<br>
<strong><em>TITLE2 :</em></strong> DESC2<br>
<strong><em>TITLE3 :</em></strong> DESC3<br>
<strong><em>TITLE4 :</em></strong> DESC4<br>
<strong><em>TITLE5 :</em></strong> DESC5<br><br><br>
<img src="image3">
<br><br><br>DESC_GEN
</center>
我想使用xpath获得预期结果:
TITLE 1 = DESC 1
TITLE 2 = DESC 2
TITLE 3 = DESC 3
TITLE 4 = DESC 4
TITLE 5 = DESC 5
general = DESC_GEN
在数组中,这样我就可以在代码的其他地方使用这些值。
这是我尝试过的:
$dom = new DOMDocument();
$dom->loadHTML($html_string);
$xpath = new DOMXpath($dom);
$elements = $xpath->query("//em");
foreach($elements as $e) {
echo $e->nodeValue . '<br/>';
}
但不幸的是,这只会返回TITLE 1,TITLE 2,TITLE 3等。
我想获取它们各自的值(在这种情况下为DESC 1,DESC 2等...)。
我可以采取什么方法来实现这一目标?
答案 0 :(得分:0)
仅供参考,您使用的HTML模板不是格式正确的xml文档。根据您的解析器,它可能会或可能不会导致问题。
获得所需内容的最简单方法可能是先获得具有标题的列表
//em/text()
然后使用获取描述列表
//em/following::text()[1]
然后使用
//center/text()[last()]
最后,只需进行一些字符串操作即可将其转换为所需的形式。
请注意,实际的xpath表达式可能会有所不同,具体取决于特定的HTML文档。但是,以上内容应适用于您提供的模板。
答案 1 :(得分:0)
步行到xpah中的父em
或strong
,然后选择..
text()