首页 > 解决方案 > preg_replace 带有通配符的语法

问题描述

我已经尝试了几个小时。它是简单的文本(字符串)。有人可以告诉我这种语法有什么问题。不工作

$finalcontent = preg_replace('/<h2>.*?<\/div><\/div>/', '</h2>$variable</div></div>', $finalcontent);

提前致谢。

标签: phpsyntaxpreg-replace

解决方案


最好是使用DOM而不是regex为了操纵HTML。使用DOM您可以有效地操作HTML文档,在DOMNode::appendChildDOMDocument::createTextNode的帮助下,您可以插入来自元素$variable之后的文本。h2

h2我们获取元素 ( )的父元素$doc->getElementsByTagName('h2')->item(0)->parentNode并为其添加一个子元素,该子元素将放置在h2. 该子节点是从输入$variable( $doc->createTextNode($variable)) 创建的文本节点。

$html = '<div><div><h2>Hi</h2></div></div>';
$variable = 'Hello Stackoverflow';
$doc = new DOMDocument();
$doc->loadHTML($html, LIBXML_HTML_NODEFDTD | LIBXML_HTML_NOIMPLIED);
$newTextNode = $doc->createTextNode($variable);
$doc->getElementsByTagName('h2')->item(0)->parentNode->appendChild($newTextNode);
echo $doc->saveHTML();

结果是:

<div><div><h2>Hi</h2>Hello Stackoverflow</div></div>

推荐阅读