Ответ 1
Я не знаю эту библиотеку, но, возможно, что-то вроде этого
$siblings = $tag->siblings();
if (($siblingCount = count($siblings)) && $siblings[$siblingCount - 1]->tagName === 'a') {
echo ...
}
Я использую phpquery для извлечения некоторых данных с веб-страницы. Мне нужно определить меню страницы. Моя реализация заключается в том, чтобы найти каждый элемент с сибилизациями > 0, а last-child - "a"
. Мой код:
foreach($this->doc['*'] as $tagObj){
$tag = pq($tagObj);
if(count($tag->siblings()) > 0){
if($tag->find(":last-child")->tagName === "a")
echo trim(strip_tags($tag->html())) . "<br/>";
}
}
Однако я не получаю никаких результатов из-за
$tag- > найти ( ": последний-ребенок" ) → тэгу
который ничего не возвращает. В чем причина этого?
Я не знаю эту библиотеку, но, возможно, что-то вроде этого
$siblings = $tag->siblings();
if (($siblingCount = count($siblings)) && $siblings[$siblingCount - 1]->tagName === 'a') {
echo ...
}
Возможно, вам следует использовать : last вместо : last-child
Согласно странице Google Google:
$li = null;
$doc['ul > li']
->addClass('my-new-class')
->filter(':last') // <--- :last
->addClass('last-li')
// save it anywhere in the chain
->toReference($li);
Вы можете сделать это с обратной проверкой на a:last-child
:
Например:
foreach($this->doc['*'] as $tagObj){
$tag = pq($tagObj);
if(count($tag->siblings()) > 0){
if($tag->find("a:last-child"))
echo trim(strip_tags($tag->html())) . "<br/>";
}
}
Это проверит тег a
last-child
, и вы можете легко получить его содержимое.
Пусть это поможет вам.
Поскольку phpQueryObject
, возвращаемый pq
, реализует Iterator
и использует открытый массив $elements
для хранения всех элементов, нам нужно получить элемент, используя функцию get()
, которая возвращает DOMElement
, которая имеет свойства tagName
и nodeName
:
$q = phpQuery::newDocumentHTML('<div><span class="test-span">Testing test</span></div>');
echo $q->find('.test-span')->get(0)->tagName; // outputs "span"
//echo $q->find('.test-span')->get(0)->nodeName; // outputs "span"
Оба свойства выдадут имя тега, у которого есть класс test-span
, который, конечно, span
.