php - preg_replace 带有通配符的语法
问题描述
我已经尝试了几个小时。它是简单的文本(字符串)。有人可以告诉我这种语法有什么问题。不工作
$finalcontent = preg_replace('/<h2>.*?<\/div><\/div>/', '</h2>$variable</div></div>', $finalcontent);
提前致谢。
解决方案
最好是使用DOM
而不是regex
为了操纵HTML
。使用DOM
您可以有效地操作HTML
文档,在DOMNode::appendChild和DOMDocument::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>
推荐阅读
- react-native - 如何弯曲 react-navigation-material-bottom-tabs 的前两个角?
- python - 在 PyTorch 中将张量矢量化分配给切片
- jquery - 带有滑块和百分比显示的 Jquery 缩放
- neo4j - 查找接口方法的实现
- javascript - 获取未定义的值而不是返回的字符串?
- excel - 如何在“对于每个循环”中进行偏移
- git - 可能有一个分支是 GitHub 上的 master 上的补丁?
- java - “如何解决“使用毕加索库无法将图像上传到 firebase-storage 的问题”
- python - FTP文件传输期间的Python数据通道超时
- javascript - Nest JS GraphQL“不能为非空返回空”