php DomDocument::loadHTML() 致使js文本中的標籤丟失

項目需求,使用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

clipboard.png

// 理想狀態應該是這樣的
    var abc = '<div>123<p></p></div>';

最後的解決辦法
普通玩法:
正則提取出來,並使用易標識方法(例如<script>xxx</script>替換成<ssssss></ssssss>)暫時替換,後續完成節點更改再使用正則換回來html

高級玩法(目前知道的):
仍是正則,只不過法子變了,用preg_replace_callback()java

相關文章
相關標籤/搜索