Для парсинга использую simple html dom parser. Есть такая разметка:
<span data-toggle="tooltip" title="" data-timestamp="15555555" class="catalog_podarkov" data-original-title="10.08.2017 в 10:02">В 2017 году</span>
Мне нужно получить значение атрибута data-original-title
Обращаюсь к этому элементу так:
$dates = $catalog->find('.catalog_podarkov');
В итоге получаю В 2017 году
пробовал так:
$dates = $catalog->find('.catalog_podarkov');
$dates = $dates[0]->attr['data-original-title'];
В итоге ошибка:
Notice: Undefined index: data-original-title
Что я делаю не так?
Как вы проверяете что именно вы получили? PHP позволяет разработчикам реализовывать метод __toString
, который вызывается автоматически при приведении объекта к строке (как например в случае echo $dates;
). Если вы хотите во время отладки узнать, что находится в переменной, используйте var_dump
.
Далее, из документации либы следует, что для доступа к атрибутам, надо дёргать одноимённые свойства найденных элементов. То есть:
$elements = $catalog->find('.catalog_podarkov'); // тут вы получаете коллекцию элементов, даже если элемент всего один
foreach ($elements as $element) {
echo $element->{'data-original-title'}; // синтаксис с фигурными скобками, позволяет обратиться к свойству с нестандартным именем
}
Код целиком, для невнимательных:
<?php
require __DIR__ . '/vendor/autoload.php';
$html = '<span data-toggle="tooltip" title="" data-timestamp="15555555" class="catalog_podarkov" data-original-title="10.08.2017 в 10:02">В 2017 году</span>';
$dom = \Sunra\PhpSimple\HtmlDomParser::str_get_html($html);
$elements = $dom->find('.catalog_podarkov');
foreach ($elements as $element) {
echo $element->{'data-original-title'}, "\n";
}
// выводит 10.08.2017 в 10:02
Всё выдаёт.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
вывожу данные с помощью echo из массива $arr_val[1] отображает {"id_event":18,"id_user":2,"id_pr":2}
Помимо банальной опечатки с вызовом функции, в этом коде действительно не хватает важного пункта - настройки mysqli таким образом, чтобы она...
Сохраняю форму в бд автоматическим методом, как в уроке laracasts:
Мне нужно чтобы задача в очереди зависимости от Exception могла либо выполнятся далее, либо прерываться, и помещаться в таблицу failed_jobsСейчас пытаюсь...