Intereting Posts
Как удалить строку с помощью первичного ключа с использованием внешнего ключа из другой таблицы? Использование long int в PHP Есть ли способ отключить ссылку href при щелчке на n дней использовать файлы cookie в JavaScript Изображение PHP GD не отображается в Chrome window.onbeforeunload не должно работать при обновлении страницы нажатием кнопки jquery добавить класс к этому кликнутому элементу Предварительная обработка Javascript перед загрузкой на клиентскую машину PHP MySQL Сортировать по нескольким столбцам Схват атрибута href элемента A Как определить, когда пользователь успешно завершил загрузку файла в php Переупорядочение страницы PHP так, чтобы заголовок был до HTML Удаление всех символов перед определенной строкой Вход в Google OAuth2 – получите ник и реальный адрес электронной почты YouTube Может ли файл загружать тайм-аут в PHP? Запрос на создание системы сообщений из разных соединенных таблиц

PHP Strip_tags для div с определенным идентификатором?

Кто-нибудь знает, существует ли измененная функция strip_tags, где вы можете указать идентификатор тегов, которые нужно удалить, и, возможно, также указать, чтобы удалить ВСЕ ДАННЫЕ В ТЕГИ. Возьмем, к примеру:

<div id="one"> <div id="two"> bla bla bla </div> </div> Running: new_strip_tags($data, 'two', true); 

Должен вернуться:

 <div id="one"> </div> 

Есть что-то в этом роде?

Это не совсем то, что делает strip_tags, оно разделяет теги, но оставляет содержимое. То, что вы хотите, это примерно так:

 function remove_div_with_id($html, $id) { return preg_replace('/<div[^>]+id="'.preg_quote($id, '/').'"[^>]*>(.*?)<\/div>/s', '', $html); } 

Обратите внимание, что это будет работать неправильно с вложенными тегами. Если вам это нужно, вы можете использовать представление DOM вашего HTML.

Для этого вы можете использовать DOMDocument и DOMXPath .

 <?php $html = '<html><head><title>...</title></head><body> <div id="one"> <div id="two"> bla bla bla </div> </div> </body></html>'; $doc = new DOMDocument; $doc->preserveWhiteSpace = false; $doc->loadhtml($html); $xpath = new DOMXPath($doc); $ns = $xpath->query('//div[@id="two"]'); // there can be only one... but anyway foreach($ns as $node) { $node->parentNode->removeChild($node); } echo $doc->savehtml();