项目需求,使用domDocument操做节点树
很少说,直接上贴代码javascript
<?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中的全部文本内容,却发现提取的文本丢失php
// 理想状态应该是这样的 var abc = '<div>123<p></p></div>';
最后的解决办法
普通玩法:
正则提取出来,并使用易标识方法(例如<script>xxx</script>替换成<ssssss></ssssss>)暂时替换,后续完成节点更改再使用正则换回来html
高级玩法(目前知道的):
仍是正则,只不过法子变了,用preg_replace_callback()java