gpt4 book ai didi

php - PHP 中检查元素不包含特定 src 属性的 Xpath

转载 作者:行者123 更新时间:2023-12-03 01:04:57 29 4
gpt4 key购买 nike

尝试在没有特定img src的情况下查找元素,但抓取变量中的所有元素而不是我想要的元素,也会导致循环无限循环

  $books = '<div> stuff heer < img src ="/assets/images/post/books.svg"/ ></div>';             
$books2 = array();
foreach($books as $v)
{
$dom = new DOMDocument;
@$dom->loadHTML($v);
$xpath = new DomXpath($dom);
$div = $xpath->query('//*[not(contains(src,"/assets/images/post/books.svg"))]');
foreach ($div as $a) {
if(!empty($a))
{
$books2[] = $v;
}
}
} var_dump($books2); //problem is that this dumps all elements from initial books array and also oddly loops indefinitely..

但是,如果我尝试下面的代码,它可以完美运行并且输出正确。.有什么想法为什么上面不起作用吗?

     $books2 = array();
foreach($books as $v)
{
$dom = new DOMDocument;
@$dom->loadHTML($v);
$xpath = new DomXpath($dom);
$div = $xpath->query('//*[@src="/assets/images/post/books.svg"]');
foreach ($div as $a) {
if(!empty($a))
{
$books2[] = $v;
}
}
} var_dump($books2);

最佳答案

代码有问题;第一个是 src@src 是两个不同的东西,前者是元素,后者是属性。

其次,查询限制不够;它查询所有没有 src 属性的节点,而您只对查找图像感兴趣,即:

//img[not(contains(@src,"/assets/images/post/books.svg"))]

最后,从你的问题来看,你似乎有兴趣知道是否至少存在一个这样的元素,在这种情况下,你不必执行任何内部循环:

$n = $xpath->query('//img[not(contains(@src,"/assets/images/post/books.svg"))]')->length;

if ($n) {
$books2[] = $v;
}

关于php - PHP 中检查元素不包含特定 src 属性的 Xpath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22282813/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com