Получить значения класса и id с помощью текстового фрагмента - PullRequest
0 голосов
/ 20 мая 2018

Я знаю, что вы можете получить текст внутри определенного класса и идентификатор с чем-то вроде:

//*[(@id='att1' and @class='att2') or (@id='att3' and @class='att4')]/text()

Мои вопросы: можно ли обернуть поиск?Итак, у меня есть строка из текста, и я хотел бы получить класс и идентификатор из ближайшего тега.

Так, например:

у нас есть исходный код, такой как:

...<td><span class="1" id="11"><div class="2" id="22">
This is a unique text string on this page</div><div class="3" id="33">
Another Text</div></span></td>...

И я ищу значение класса и значение id ближайшего тега (в нашем примере первый тег

), который включает фрагмент текста «ique text string».

есть лиxpath, который дает мне 2 и 22 в качестве запрошенных значений?

Или есть способ решить это через php?Конечно, у меня есть html исходный код в переменной php.

Заранее благодарю за любую помощь!

1 Ответ

0 голосов
/ 20 мая 2018

Вы можете использовать evaluate() и string() комбинацию:

$content = '
<td><span class="1" id="11"><div class="2" id="22">
This is a unique text string on this page</div><div class="3" id="33">
Another Text</div></span></td>';

$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'), LIBXML_HTML_NOIMPLIED);
$xpath = new DOMXPath($doc);

$class = $xpath->evaluate('string(//div[contains(., "unique text")]/@class)', null);
$id = $xpath->evaluate('string(//div[contains(., "unique text")]/@id)', null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...