Как найти имя тега с помощью phpquery?

Я использую 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-> найти ( «: последний-ребенок») -> тэгу

который ничего не возвращает. Что было бы причиной этого?

11

Решение

Я не знаю эту библиотеку, но, возможно, что-то вроде этого

$siblings = $tag->siblings();
if (($siblingCount = count($siblings)) && $siblings[$siblingCount - 1]->tagName === 'a') {
echo ...
}
4

Другие решения

Вы можете сделать это в обратной проверке для 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 и вы можете легко получить его содержание.
Пусть это поможет вам.

3

Может быть, вы должны использовать :прошлой вместо :последний ребенок

Согласно библиотека 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);
3

Так как 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,

0
По вопросам рекламы [email protected]