Intereting Posts
Могу ли я использовать точку и обратную косую черту вместо dirname ()? Как обновить строку MySQL в PHP? Добавить переменную php внутри инструкции echo как адрес ссылки href? Что быстрее? file_put_contents (); Еореп (); FWRITE (); fclose () ;? Tidy replacement & nbsp; с странным характером Doctrine 2 – Как использовать столбец дискриминатора в разделе where Кодировка UTF-8 для получателя в контактной форме Как извлечь весь текст из XML-данных с помощью PHP (например, SimpleXmlElement)? CakePHP 3: Отсутствует ошибка маршрута для маршрута, который существует Как отображать дату как формат iso 8601 с помощью PHP Использование переменных статического класса – в heredoc Как повторно использовать экземпляр браузера Dusk test? Как проверить адрес электронной почты в PHP Как я могу использовать file_put_contents () с FILE_APPEND | Безопасность LOCK_EX? Magento – добавить пользовательский блок с помощью настраиваемого модуля на странице корзины покупок

Извлеките все теги text и img из HTML в PHP.

Возможный дубликат:
Лучшие методы анализа HTML с помощью PHP

Для проекта мне нужно взять HTML-страницу и извлечь из нее все ее тексты и теги img и сохранить их в том же порядке, что и на веб-странице.

Так, например, если веб-страница:

<p>Hi</p> <a href ="test.com" alt="a link"> text link</a> <img src="test.png" /> <a href ="test.com"><img src="test2.png" /></a> 

Я хотел бы получить эту информацию в этом формате:

 text - Hi Link1 - <a href ="test.com">text link</a> notice without alt or other tag Img1 - test.png Link2 - <a href ="test.com"><img src="test2.png" /></a> again no tag 

Есть ли способ сделать это в PHP?

Solutions Collecting From Web of "Извлеките все теги text и img из HTML в PHP."

Есть ли способ сделать это в php?

Да, вы можете сначала удалить все теги, которые вам не интересны, а затем использовать DOMDocument для удаления всех нежелательных атрибутов. Наконец, вам нужно повторно запустить strip_tags чтобы удалить теги, добавленные DomDocument :

 $allowed_tags = '<a><img>'; $allowed_attributes = array('href', 'src'); $html = strip_tags($html, $allowed_tags); $dom = new DOMDocument(); $dom->loadHTML($html); foreach($dom->getElementsByTagName('*') as $node) { foreach($node->attributes as $attribute) { if (in_array($attribute->name, $allowed_attributes)) continue; $node->removeAttributeNode($attribute); } } $html = $dom->saveHTML($dom->getElementsByTagname('body')->item(0)); $html = strip_tags($html, $allowed_tags); 

демонстрация

Я бы использовал HTML Parser, чтобы вытащить информацию из веб-сайта. Получить чтение.