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 ответов

11 просмотров
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-тулзы сами себя не напишут, сравнивать разные сайты надо

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

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

Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
@NikaBelurgHR Бот? Ассемблер?
КТ315
11
юзеры Jetpack Compose тут?
Qtless Qtless
7
Добрый день! Подскажите, пожалуйста: какими компетенциями нужно обладать, чтобы претендовать на работу эрланг (отдельная благодарность, если про элексир тоже подскажете) разр...
via ☸️ led
20
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Карта сайта