[英]How can I use “PHP Simple HTML DOM Parser” to get the contents of an <h1></h1> tag?
[英]How can i use Regex or DOM with PHP to get a slice of HTML?
如果我有一个HTML块并希望获得某些节点和子节点的确切HTML内容,例如下面的<ul>
块,我应该使用类似preg_match
的内容还是解析内容或类似DOM Parsing的内容?
<html>
<head>
</head>
<body>
<h2>List</h2>
<ul class="my-list" id="my-list">
<li class="item first">item1</li>
<li class="item second">item2</li>
<li class="item third">item3</li>
</ul>
</body>
</html>
<ul class="my-list" id="my-list">
<li class="item first">item1</li>
<li class="item second">item2</li>
<li class="item third">item3</li>
</ul>
如您所见,我想保留所有属性(类,ID等)。
我知道使用DOM
解析我可以访问所有这些属性( $items->item($i)->getAttribute('class')
),但DOM可以轻松(并自动)重建原始代码的一部分无需手动循环并构建HTML? (我知道DOM
有echo $DOM->saveXML()
,但我相信echo $DOM->saveXML()
适用于整个页面。
我知道如何使用正则表达式和PHP很容易实现这一点,但我认为这不是一个好习惯。
使用jQuery这很简单:
jQuery('ul').clone()
我怎样才能用PHP实现同样的目的? (抓取远程HTML,然后使用DOM获取一部分并再次将其输出为HTML)
它与dom函数并没有那么糟糕,可能比它应该更冗长:
$dom = new DOMDocument();
@$dom->loadHTML($html);
# or
# @$dom->loadHTMLFile($url);
$xpath = new DOMXPath($dom);
echo $dom->saveXML($xpath->query("//ul")->item(0));
我建议使用DOM解析,因为如果HTML结构发生更改,它将更易于维护,并且比正则表达式更容易理解(读取代码)。
这取决于您对数据源的信任程度。 它会保持一致吗? 标记中可能有错误吗? 你知道会发生什么吗?
如果它与您的样本一样简单或相对接近,我认为正则表达式不是一个完全有效的选择。
例如,如果有多个<ul>
,则会变得更加困难。 只要有一些独特的识别它或它总是以相同的顺序,它应该不是一个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.