html获取php对象属性,PHP DOM XPath获取HTML节点方法大全

本文介绍了如何使用PHP的DOMDocument和DOMXPath类快速解析HTML,包括获取img src、指定class的id值以及完整HTML内容。通过实例演示了XPath表达式的应用,提高效率,避免正则表达式的复杂性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PHP的有些技巧可能大家并不常用到,比如DOM相关的对象。

这些方法几乎和Javascript一样的方便,轻松一句就能获取到HTML DOM节点的数据。

相比于使用正则表达式,这个方法更简单快捷。

我就就常用DOMDocument和XPath两个类做一个介绍。

假设有这样一个HTML页面(部分),其内容如下:

$html = <<

img2.jpg

img3.jpg

Welcome PHP!

HTML;

我们把它赋值给字符串变量$html。

我们将$html加载到DOM对象,再用DOMXPath解析处理。

$dom = new DOMDocument();

$dom->loadHTML($html);

$xpath = new DOMXPath($dom);

1 DOMXPath用法

接下来我们将用DOMXPath的方法来解析。

DOMXPath有两个核心的部分:传入的表达式和返回值。

2 获取img src

获取第一个图片的src内容:

echo $src = $xpath->evaluate('string(//img/@src)');

/*输出:

/images/img1.jpg

*/

获取全部IMG SRC内容

$nodeList = $xpath->query("//img");

$srcList = [];

foreach ($nodeList as $node) {

$srcList[] = $node->attributes->getNamedItem('src')->nodeValue;

}

print_r($srcList);

/*输出:

Array

(

[0] => /images/img1.jpg

[1] => /images/img2.jpg

[2] => /images/img3.jpg

)

*/

3 获取特定class DOM

获取所有class等于content的id值,这里class值必须是唯一的:

$nodeList = $xpath->query('//*[@class="icon"]');

$result = [];

foreach ($nodeList as $node) {

$result[] = $node->attributes->getNamedItem('id')->nodeValue;

}

print_r($result);

/*输出:

Array

(

[0] => content

)

*/

获取所有class包含icon的节点的id值:

$nodeList = $xpath->query('//*[contains(@class, "icon")]');

$result = [];

foreach ($nodeList as $node) {

$result[] = $node->attributes->getNamedItem('id')->nodeValue;

}

print_r($result);

/*输出:

Array

(

[0] => img2

[1] => img3

[2] => content

)

*/

获取所有class包含icon的节点的完整HTML内容:

$nodeList = $xpath->query('//*[contains(@class, "icon")]');

$result = [];

foreach ($nodeList as $node) {

$result[] = $dom->saveHTML($node);

}

print_r($result);

/*输出:

Array

(

[0] => img2.jpg

[1] => img3.jpg

[2] =>

Welcome PHP!

)

*/

参考地址:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值