170 похожих чатов

Доброго вечера, столкнулся с тем, что через DOMDocument removeChild не

прибивается <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 с такой же особенностью? Что делать?

16 ответов

31 просмотр
Dimases- Автор вопроса

Никто не сталкивался? А то приходится через $html = preg_replace("/<script[^>]*?>.*?<\/script>/isu", " ", $html); прибивать, что тоже совсем не правильно...

может соберешь примерчик тестовый на https://3v4l.org/

Dimases- Автор вопроса

может соберешь примерчик тестовый на https://3v4l....

попробую... там html файл из файла тягается. если file_get_content позволит... ну сейчас, напишу, как закончу

Dimases
попробую... там html файл из файла тягается. если ...

если на простой разметке сработает, то оставь от него только этот скрипт и еще какой-нибудь тэг. $html = <<<HTML тут тэги убрать лишнее HTML; # инициализация DOMDocument # очистка

Dimases- Автор вопроса

если на простой разметке сработает, то оставь от н...

оставляет все, что в <script></script> прибивая при это тег

Dimases- Автор вопроса

если на простой разметке сработает, то оставь от н...

если удаляю: <div class=\"t-btn_effects\"></div> все обрабатывается нормально https://3v4l.org/cRNhX

Dimases
если удаляю: <div class=\"t-btn_effects\"></div> в...

этот документ с ошибками, ты их отключил. если оставить только этот скрипт в <body> то он и так удаляется (неважно что внутри append() будет).

Dimases- Автор вопроса

этот документ с ошибками, ты их отключил. если ост...

чем бы лечить ошибки? tidy не помогает =(

Dimases
чем бы лечить ошибки? tidy не помогает =(

а я хз🤤 ну может опции задай tidy более агрессивные

Dimases- Автор вопроса
Dimases
чем бы лечить ошибки? tidy не помогает =(

браузер же выдает корректную разметку, значить и tidy должен (в теории)

Dimases- Автор вопроса
Dimases
поиграюсь, сайты на тильде - зло

парсить чужеродную разметку - зло🤤

Dimases- Автор вопроса

парсить чужеродную разметку - зло🤤

а что делать? SEO-тулзы сами себя не напишут, сравнивать разные сайты надо

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта