Доступ к атрибутам

$e->tag Прочитать или записать название тега элемента. $e->outertext Прочитать или записать внешний HTML-текст элемента (т.е. вместе с внешним тегом). $e->innertext Прочитать или записать внутренний HTML-текст элемента (т.е. без внешнего тега). $e->plaintext Прочитать или записать текст элемента (без тегов HTML).
Трюки
См. также: , , , , , , , ,
Simple HTML DOM PHP примеры

PHP Simple HTML DOM — это php библиотека с помощью которой можно написать парсер html страниц(ы). После загрузки страницы библиотека создает объект со всеми элементами, которые находились на странице и к которым теперь можно получить быстрый доступ с помощью встроенных функций.
Примеры Simple HTML DOM
Инициализация объекта (загрузка html-страницы)
require 'simple_html_dom.php'; //подключаем библиотеку $html = file_get_html( 'http://www.example.com/' ); // получаем страницу //во время работы из командной строки в windows (без http-сервера) лучше использовать следующую конструкцию: $load = file_get_contents( $link ); $html= str_get_html( $load ); // и дальше работаем с переменной $html
Найдем нужный элемент
$element = $html->find( '.myclass' );
Функция find() — создаст нам массив со всеми доступными элементами с классом .myclass. Для того чтобы их все обработать придется сначала пропустить переменную через цикл для массива:
foreach( $element as $item ) < //тут уже обрабатываем все элементы по очереди >
Или как вариант — сразу выбрать нужный элемент указав индекс (как в массиве, начинается с нуля):
$element = $html->find( '.myclass', 0 );
Получим дочерний элемент:
Можно бродить по дереву вложенности, полезно если нужно обрабатывать страницу последовательно:
$element->children(0)->class; // класс первого дочернего элемента $element->children(0)->children(1)->id //получил id вложенного элемента $element->children(0)->outertext; //html-код элемента $element->children(0)->innertext; //html-код внутри элемента $eleemnt->children(0)->plaintext; //Текст внутри (очищенный от html) $eleemnt->children(0)->tag; //html-тэг
Для обработки множества вложенных тегов последовательно можно пользоваться такими функциями:
$element->children($i)->tag; $element->children(0)->children($i)->tag; //и т.д.
Дополнительно можно добавить собственные функции обработки:
// запишем в функцию параметр "$element" function my_callback($element) < // скрыть все теги if ($element->tag=='b') $element->outertext = ''; > // Регистрируем обратный вызов с именем нашей функции $html->set_callback('my_callback'); // Функция будет вызвана во время вывода echo $html;
Дополнительные примеры можно найти в официальной документации.
Поиск по блогу:
- Администрирование (16)
- Linux Desktop (5)
- Лайфхак (7)
- Программное обеспечение (2)
- Для себя (2)
- Статистика (2)
- CMS (1)
- Полезные команды для работы с exim
- Отключить потенциально опасные функции php
- Компиляция и установка php8.2 на Ubuntu 18.04
- Re: Permission denied error.log VestaCP
- Ротация логов logrotate в VestaCP
Спарсить лишь текст с помощью PHP Simple Html Dom
Использую PHP Simple Html Dom для получения содержимого div’a, значение получаю, все в порядке, но дело в том, что значение передается вместе с html, то есть уже с тем дизайном, которым установлен на сайте источнике. Можно ли как нибудь вытянуть лишь содержимое в виде текста, чтоб я мог самостоятельно изменять дизайн? Код:
find('.maincounter-number', 0); echo ''.$cases.''; ?>Отслеживать
задан 20 мар 2020 в 17:23
Максим Закревский Максим Закревский
347 1 1 золотой знак 5 5 серебряных знаков 14 14 бронзовых знаков
20 мар 2020 в 17:34
есть же дока по библиотеке см . Element methods & properties
20 мар 2020 в 17:351 ответ 1
Сортировка: Сброс на вариант по умолчанию
Цитата из оф.доки (блок DOM methods & properties):
plaintext — возвращает содержимое, извлеченное из HTML.
Т.е., подставьте свойство plaintext: $html->find(‘.maincounter-number’, 0)->plaintext
Лишние пробелы можно удалить с помощью штатной ф-ции trim() :
require 'simple_html_dom.php'; $html = file_get_html('https://www.worldometers.info/coronavirus/'); $cases = trim($html->find('.maincounter-number', 0)->plaintext); echo '' . $cases . '';Как удалить, установить и сохранить атрибут с помощью simple html dom?
Как сделать то что написано в теме вопроса? Как не пробовал не получается, мне нужно удалить все class, потом установить их с новым значением и сохранить это все.
$data = file_get_html('index.html'); foreach( $data->find('div')->class as $div ) < removeAttribute($div); >file_put_contents('index.html', $data); $data->clear(); unset($data);- Вопрос задан более трёх лет назад
- 73 просмотра
1 комментарий
Простой 1 комментарий
Зачем так мучаться, берешь файл str_replace и всё сохраняешь
Решения вопроса 0
Ответы на вопрос 2
xmoonlight @xmoonlight
https://sitecoder.blogspot.com
Документацию читайте!
Ответ написан более трёх лет назад
Нравится 1 1 комментарий
greenline111 @greenline111 Автор вопроса
я лазяю уже весь день
php, WordPress разработка сайтов artzolin.ru
У вас не получится сделать методом тыка
1. Печатайте переменные
2. Читайте документацию. Например, переопределять значения рекомендуется так: $e->href = ‘my link’;
3. Если не найдет ->find() , будет критическая ошибка
4. Класс — это не атрибут
5. removeAttribute() — это функция js, а не php
6. file_put_contents() возвращает false, в случае ошибки, пишите это условие для дебага