Я использую phpquery для извлечения некоторых данных с веб-страницы. Мне нужно идентифицировать меню страницы. Моя реализация состоит в том, чтобы найти каждый элемент, который имеет sibilings> 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 ...
}
Вы можете сделать это в обратной проверке для 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
и вы можете легко получить его содержание.
Пусть это поможет вам.
Может быть, вы должны использовать :прошлой вместо :последний ребенок
Согласно библиотека Google Page:
$li = null;
$doc['ul > li']
->addClass('my-new-class')
->filter(':last') // <--- :last
->addClass('last-li')
// save it anywhere in the chain
->toReference($li);
Так как 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
,