• 35648

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

php DomDocument::loadHTML() 导致js文本中的标签丢失

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/jsh/2019/0823/107886.html 1190000020156469
项目需求,使用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中的所有文本内容,却发现提取的文本丢失

clipboard.png

    // 理想状态应该是这样的
    var abc = '<div>123<p></p></div>';

最后的解决办法
普通玩法:
正则提取出来,并使用易标识方法(例如<script>xxx</script>替换成<ssssss></ssssss>)暂时替换,后续完成节点更改再使用正则换回来

高级玩法(目前知道的):
还是正则,只不过法子变了,用preg_replace_callback()

相关文章

暂住......别动,不想说点什么吗?
  • 全部评论(0
    还没有评论,快来抢沙发吧!