Хорошо, это заводит меня с ума. Я пытаюсь к экрану, скрести следующий бит, казалось бы, тривиальной HTML с phpQuery:Выбор определенного текстового узла с помощью phpQuery
<td><nobr>10-05-2009</nobr><br>06:10<br>17:35 -1</td>
Дата легко, так как она обернута в NOBR тега, так например. $element[':first-child']->text()
делает трюк. Но как мне получить мои грязные рукавицы на второй бит текста?
CSS работает только с элементами, поэтому nth-child(2),(3)
возвращает окружающие <br>
теги, а не текст.
Если бы я мог XPath, вторым узлом в .//text()
было бы золото. Но, видимо, в phpQuery-land контекст для $element->xpath->query('.//text()')
- это корень документа, поэтому я получаю каждый фрагмент текста во всем документе!
Идеи? Все решения в How do I select text nodes with jQuery?, по-видимому, связаны с действиями Javascript DOM, которые значительно менее злы, чем ужасный API DOM от PHP. Может быть, просто демпинг весь элемент строки и взрываются его на <br>
это путь ...
Спасибо, что в основном работает, но вам нужно передать в DOMNode (вместо phpQueryObject), а затем преобразовать результат, и по причинам я действительно не понимаю селектор XPath '.// text() [ 1] 'не работает, но запрос' xpath-> ('.// text()') -> item (1) 'делает. Таким образом, конечный код заканчивается следующим образом: '$ src_time = pq ($ element) -> xpath-> query ('.// text()', $ element) -> item (1); $ src_time = pq ($ src_time) -> text(); ' Довольно чудовищно, но выполняет свою работу, поэтому спасибо! – jpatokal