#php #domdocument
#php #domdocument
Вопрос:
Я пытаюсь с помощью приведенного ниже кода удалить все содержимое скриптов в html-контенте:
$dom = new DOMDocument();
$dom->loadHTML('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' . $html);
$script = $dom->getElementsByTagName('script');
$remove = [];
foreach($script as $item)
{
$remove[] = $item;
}
foreach ($remove as $item)
{
$item->parentNode->removeChild($item);
}
$dom->saveHTML();
Скрипт, который я пытаюсь удалить, это:
<script type="text/javascript">
/* DO NOT MODIFY */
(function(w,d) {
w.cdxhd = w.cdxhd || [];
w.cdxhd.push({
"cdxhd_bpid":158716,
"cdxhd_w" :300,
"cdxhd_h" :250,
"cdxhd_vtag":20140808,
"cdxhd_slot":w.cdxhd.length
});
d.write('<div class="cdxhd_' cdxhd[(cdxhd.length-1)]['cdxhd_bpid'] ' cdxhd_slot" id="cdxhd_bpid_' cdxhd[(cdxhd.length-1)]['cdxhd_bpid'] '_' cdxhd[(cdxhd.length-1)]['cdxhd_slot'] '" style="position:relative;"></div>');
var s = d.createElement("script"); s.async = true;
s.src = (d.location.protocol==="https:"?"https":"http") '://ca.cubecdn.net/js/loader_v2.js?cb=' (new Date().getMinutes() new Date().getHours());
var a = d.getElementsByTagName("script")[0]; a.parentNode.insertBefore(s,a);
}(this,document));
</script>
но я все равно получаю:
var s = d.createElement("script"); s.async = true;n
s.src = (d.location.protocol==="https:"?"https":"http") '://ca.cubecdn.net/js/loader_v2.js?cb=' (new Date().getMinutes() new Date().getHours());n
var a = d.getElementsByTagName("script")[0]; a.parentNode.insertBefore(s,a);n
}(this,document));
Последний раздел скрипта не удаляется.
Есть ли какое-либо решение для удаления всех скриптов и их содержимого без регулярных выражений?