项目需求,使用domDocument操作节点树
不多说,直接上贴代码
<?php
$content = file_get_contents('tpl2.html');
$dom = new \DOMDocument();
$dom->loadHTML(html_entity_decode($content));
$body = $dom->getElementsByTagName('body')[0];
var_dump($body->textContent);
die;
<!-- tpl2.html -->
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<script type="text/javascript">
var abc = '<div>123<p></p></div>';
</script>
</body>
</html>
提取body中的所有文本内容,却发现有部分文本内容丢失
// 理想状态应该是这样的
var abc = '<div>123<p></p></div>';
最后的解决办法
普通玩法:
正则提取出来,并使用易标识方法(例如<script>xxx</script>替换成<ssssss></ssssss>)暂时替换,后续完成节点更改再使用正则换回来
高级玩法(目前知道的):
还是正则,只不过法子变了,用preg_replace_callback()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。