可能重复:
使用 preg_match php 获取包装元素
我想获取包装指定字符串的元素,例如:
$string = "My String";
$code = "<div class="string"><p class='text'>My String</p></div>";
那么我如何能够<p class='text'></p>
通过使用正则表达式模式匹配它来包装字符串。
可能重复:
使用 preg_match php 获取包装元素
我想获取包装指定字符串的元素,例如:
$string = "My String";
$code = "<div class="string"><p class='text'>My String</p></div>";
那么我如何能够<p class='text'></p>
通过使用正则表达式模式匹配它来包装字符串。
使用 PHP 的 DOM 类,您可以做到这一点。
$html = new DomDocument();
// load in the HTML
$html->loadHTML('<div class="string"><p class=\'text\'>My String</p></div>');
// create XPath object
$xpath = new DOMXPath($html);
// get a DOMNodeList containing every DOMNode which has the text 'My String'
$list = $xpath->evaluate("//*[text() = 'My String']");
// lets grab the first item from the list
$element = $list->item(0);
现在我们有了整个<p>
-tag。但是我们需要删除所有子节点。这里有一个小功能:
function remove_children($node) {
while (($childnode = $node->firstChild) != null) {
remove_children($childnode);
$node->removeChild($childnode);
}
}
让我们使用这个功能:
// remove all the child nodes (including the text 'My String')
remove_children($element);
// this will output '<p class="text"></p>'
echo $html->saveHTML($element);