Как установить simple html dom
Перейти к содержимому

Как установить simple html dom

  • автор:

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

Go

$e->tag Прочитать или записать название тега элемента. $e->outertext Прочитать или записать внешний HTML-текст элемента (т.е. вместе с внешним тегом). $e->innertext Прочитать или записать внутренний HTML-текст элемента (т.е. без внешнего тега). $e->plaintext Прочитать или записать текст элемента (без тегов HTML).

Трюки

См. также: , , , , , , , ,

Simple HTML DOM PHP примеры

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:35

    1 ответ 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 Автор вопроса
    я лазяю уже весь день

    artzolin

    php, WordPress разработка сайтов artzolin.ru

    У вас не получится сделать методом тыка

    1. Печатайте переменные
    2. Читайте документацию. Например, переопределять значения рекомендуется так: $e->href = ‘my link’;
    3. Если не найдет ->find() , будет критическая ошибка
    4. Класс — это не атрибут
    5. removeAttribute() — это функция js, а не php
    6. file_put_contents() возвращает false, в случае ошибки, пишите это условие для дебага

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *