Статьи
Форум
Q&A
Полезные коды
Войти
Регистрация
Привет, Гость!
Войти
Войти с VK
Войти с Google
Регистрация
Информация
Вопросы и ответы
Вопрос
-2 голоса
625 просмотров
27.08.2019 / 14:17
Nolosha
Не получается отфильтрировать код от тега script
Php
domdoc
Моя цель такова: отфильтрировать html код от тегов script в php. Вот что я написала:
[копировать]
[скачать]
$d
=
new
DOMDocument
;
$d
->
loadHTML
(
$html
)
;
$script
=
$d
->
getElementsByTagName
(
"script"
)
;
foreach
(
$script
as
$i
)
{
$i
->
parentNode
->
removeChild
(
$i
)
;
}
$doneHTML
=
$d
->
saveHTML
(
)
;
Но в итоге, код остается без изменений. Теги script и их контент не удалились из кода.
Прошу объяснить в чем проблема.
Изм.
Nolosha
от 27.08.2019 / 14:23
Ответы
1 голос
#
28.08.2019 / 17:36
vlavolk
Суть здесь в том, что
$d->getElementsByTagName("script");
возвращает элемент
DOMNodeList
, который
нельзя
итерировать в циклах. Потому необходимо пользоваться методом
DOMNodeList::item
который возвращает искомый элемент по индексу.
Вот решение
Открыть спойлер
Закрыть спойлер
[копировать]
[скачать]
$d
=
new
DOMDocument
;
$d
->
loadHTML
(
$html_src
)
;
$elements
=
$d
->
getElementsByTagName
(
"script"
)
;
for
(
$i
=
$elements
->
length
;
--
$i
>=
0
;
)
{
$href
=
$elements
->
item
(
$i
)
;
$href
->
parentNode
->
removeChild
(
$href
)
;
}
$html_clean
=
$d
->
saveHTML
(
)
;
Здесь посмотреть
https://ideone.com/NmSGWD
Изм.
vlavolk
от 28.08.2019 / 17:37
0 голосов
#
28.08.2019 / 18:17
MasterOS
Хватит либо всем бан
*- кажется я получил бан
28.08.2019 / 20:17
Витаминыч
Таки да
Всего: 2
Вопросы и ответы
Топ участников
Последние ответы
Комментарии
Поделиться
Разделы
Авторские статьи
Вопросы и ответы
Полезные коды
Форум
Гостевая книга
Реклама
Мы в соцсетях