Задать вопрос
@xaam

PHP Simple HTML DOM Parser как найти текст?

Как найти элемент по тексту между тегами? Например Employment type
Пробовал
$html->find([text()='Employment type'])
$html->find('Employment type')
Вставлял готовый xpath .//*[text()='Employment type'] по которому в Мозилле в FirePath находится.....
не получается(
  • Вопрос задан
  • 3520 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@xaam Автор вопроса
В итоге сделал так.
$a='';
  $j=0;
  while (strcmp('Employment type',$a)) {
   $j++;
   $a=$htm3->find('[@id=box-Details]/div[2]/div/div/dl/dt['.$j.']',0)->plaintext;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
muhammad_97
@muhammad_97
PHP-разработчик
https://github.com/imangazaliev/didom - ваш код должен работать:

use DiDom\Document;
...
$document = new Document($html);
$elements = $documents->xpath('//*[text()="foo"]');

var_dump($elements);
Ответ написан
glebovgin
@glebovgin
Full Stack Web Developer
Именно про PHP Simple HTML DOM Parser говорить не берусь, потому как не использую его, но про чистый xpath сказать могу вот что:

//*[text()[contains(normalize-space(.),"Employment type")]]


normalize-space() нужен для того, чтобы избежать проблем с пробелами. Именно это выражение у меня на чистом xpath сработало как надо.
Ответ написан
Комментировать
petermzg
@petermzg
Самый лучший программист
все текстовые блоки
$es = $html->find('text');
а далее по ним foreach
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы