прибивается <script>...</script> если в теле JS есть вывод HTML-кода, например:
.....append('<div class="t-btn_effects"></div>');
Убиваю рекурсивной функцией:
function cleanup($node, $tags)
{
if ($node->hasChildNodes()) {
$to_delete = [];
foreach ($node->childNodes as $child_node) {
if (in_array(strtolower($child_node->nodeName), $tags)) {
$to_delete[] = $child_node;
}
}
foreach ($to_delete as $child_node) {
$node->removeChild($child_node);
}
foreach ($node->childNodes as $child_node) {
cleanup($child_node, $tags);
}
}
}
cleanup($dom, [
'head',
'script',]);
Подскажите, может бы у кого-то опыт по чистке HTML с такой же особенностью? Что делать?
Никто не сталкивался? А то приходится через $html = preg_replace("/<script[^>]*?>.*?<\/script>/isu", " ", $html); прибивать, что тоже совсем не правильно...
может соберешь примерчик тестовый на https://3v4l.org/
попробую... там html файл из файла тягается. если file_get_content позволит... ну сейчас, напишу, как закончу
если на простой разметке сработает, то оставь от него только этот скрипт и еще какой-нибудь тэг. $html = <<<HTML тут тэги убрать лишнее HTML; # инициализация DOMDocument # очистка
вот: https://3v4l.org/BCGAI
оставляет все, что в <script></script> прибивая при это тег
если удаляю: <div class=\"t-btn_effects\"></div> все обрабатывается нормально https://3v4l.org/cRNhX
этот документ с ошибками, ты их отключил. если оставить только этот скрипт в <body> то он и так удаляется (неважно что внутри append() будет).
чем бы лечить ошибки? tidy не помогает =(
а я хз🤤 ну может опции задай tidy более агрессивные
да все уже перепробовал =(
браузер же выдает корректную разметку, значить и tidy должен (в теории)
поиграюсь, сайты на тильде - зло
парсить чужеродную разметку - зло🤤
а что делать? SEO-тулзы сами себя не напишут, сравнивать разные сайты надо
Обсуждают сегодня