PHP的有些技巧可能大家并不常用到,比如DOM相关的对象。
这些方法几乎和Javascript一样的方便,轻松一句就能获取到HTML DOM节点的数据。
相比于使用正则表达式,这个方法更简单快捷。
我就就常用DOMDocument和XPath两个类做一个介绍。
假设有这样一个HTML页面(部分),其内容如下:
$html = <<<HTML <div> <img id="img1" src="/images/img1.jpg" /> <img id="img2" src="/images/img2.jpg" /> <img id="img3" src="/images/img3.jpg" /> <p id="content">Welcome PHP!</p> </div> HTML;
我们把它赋值给字符串变量$html。
我们将$html加载到DOM对象,再用DOMXPath解析处理。
$dom = new DOMDocument(); $dom->loadHTML($html); $xpath = new DOMXPath($dom);
接下来我们将用DOMXPath的方法来解析。
DOMXPath有两个核心的部分:传入的表达式和返回值。
表达式是W3C标准的XPath表达式,语法:https://www.w3schools.com/xml/xpath_syntax.asp。
返回值是DOMNodeList对象,有若干属性和方法,也是W3C标准:https://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html。
获取第一个图片的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 ) */
获取所有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] => <img id="img2" src="/images/img2.jpg"> [1] => <img id="img3" src="/images/img3.jpg"> [2] => <p id="content">Welcome PHP!</p> ) */
参考地址:
本文向大家介绍JS 获取HTML标签内的子节点的方法,包括了JS 获取HTML标签内的子节点的方法的使用技巧和注意事项,需要的朋友参考一下 子节点的个数: 注意: 标签开/闭合算2个节点 第几个子几点: 示例: 这里是 length-4 处,margin-left:20px 输出:length=8 实例: 以上就是小编为大家带来的JS 获取HTML标签内的子节点的方法的全部内容了,希望对大家有所帮
问题内容: 我想知道,JavaScript提供了多种方法来从任何元素中获取第一个子元素,但是哪种方法最好呢?最好的意思是:在行为方面,大多数跨浏览器兼容,最快,最全面且可预测。我用作别名的方法/属性的列表: 这适用于两种情况: 在表单或迭代的情况下。如果我可能遇到文字元素: 据我所知,使用来自的NodeList ,并使用。我将这一假设基于MDN参考: 是对元素节点的第一个子元素的引用,或者如果不存
我想知道,JavaScript提供了多种方法从任何元素中获取第一个子元素,但哪种方法最好?我所说的“最佳”是指:在行为方面,最兼容跨浏览器、最快、最全面、最可预测。我用作别名的方法/属性列表: 这适用于两种情况: 这是表单的情况,或
本文向大家介绍layer页面跳转,获取html子节点元素的值方法,包括了layer页面跳转,获取html子节点元素的值方法的使用技巧和注意事项,需要的朋友参考一下 1、jsp页面,携带值跳转到新页 original.jsp 2、后台跳转类 SwitchAction.java 3、struts配置文件,根据返回字符串跳转到新页 4、将需要填充的html字符串填充到新页的表格(newPage.jsp)
本文向大家介绍javascript 获取HTML DOM父、子、临近节点,包括了javascript 获取HTML DOM父、子、临近节点的使用技巧和注意事项,需要的朋友参考一下 在Web应用程序特别是Web2.0程序开发中,经常要获取页面中某个元素,然后更新该元素的样式、内容等。如何获取要更新的元素,是首先要解决的问题。令人欣慰的是,使用JavaScript获取节点的方法有很多种,这里简单做一下
本文向大家介绍Python获取任意xml节点值的方法,包括了Python获取任意xml节点值的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python获取任意xml节点值的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。