xPath帮助 > 查找alt='My Keyword'的图像

5

我该如何修改这个xpath来查找是否存在一个包含我的关键词短语的alt的img标签?

$xPath->evaluate('count(/html/body//'.$tag.'[contains(@alt,"'.$keyword.'") and self::img])');


@Scott-B:请编辑您的问题,并将您对@Gaim的评论放在文本开头。否则它毫无意义,也没有任何问题。 - Dimitre Novatchev
@Scott-B:虽然你的问题比较模糊,但是请看我的回答中可能的解决方案。 - Dimitre Novatchev
2个回答

11

用途:

boolean(//img[contains(@alt, 'yourKeywordHere')])

要查找 XML 文档中是否存在包含“yourKeywordHere”关键词的 alt 属性的 img 元素,可以使用 (true(), false()) 函数来实现。

用法:

boolean(//yourTag//img[contains(@alt, 'yourKeywordHere')])

查找文档中是否存在名为yourTag的元素,它有一个后代img,其alt属性包含'yourKeywordHere'


谢谢 Dimitre。那讲得很清楚明白。我能用 xpath 来确定关键词是否出现在文档的第一句和/或最后一句吗?我在想 xpath 是否不会将"句子"作为节点的一个实体来识别。 - Scott B
我看不出我的答案和你的答案有什么区别,除了4个小时,但没关系。 - Gaim
@Gaim:你的答案选择了所有具有后代img元素且其alt属性包含某些特定字符串的h1元素。相反,@Scott-B想要知道的只是一个信息位——“是否存在这样的元素”。这就是我在我的答案中给他的。 - Dimitre Novatchev
@Scott-B:如果你所说的“句子”是指由换行符分词的字符串,那么你可以测试一下前面没有换行符的文本节点或后面没有换行符的文本节点。 - user357812
@Scott-B:最好作为一个新问题来询问。找到“最后一句话”比“第一句话”要棘手一些。 - Dimitre Novatchev
显示剩余3条评论

2

我不太清楚你具体需要哪些元素,但这里有一个例子,它会返回所有包含至少一张带有 your_keyword 作为 alt 属性的图片的 h1 元素:

//h1[.//img[contains(@alt, 'your_keyword')]]

您还需要处理大小写敏感的情况。您可以使用此xpath,但要小心,某些xpath评估器不支持lower-case函数。
//h1[.//img[contains(lower-case(@alt), lower-case('your_keyword'))]]

这里是一个例子:

//h1[.//img[contains(@alt, 'key ')]]

<html>
    <h1> <!-- found -->
        <img alt='here is my key' />
    </h1>
    <h1><!-- not found -->
        <img alt='here is not' />
    </h1>
    <h1> <!-- found -->
        <h2>
            <img alt='the key is also here' />
        </h2>
    </h1>
    <h1></h1> <!-- not found -->

</html>

谢谢Gaim,我想确定内容中是否至少有一张图片的alt包含关键字。我认为我可以借鉴你的例子并从那里开始。非常感谢! - Scott B
@Scott-B: 请编辑您的问题并将您的评论放在文本开头。否则它毫无意义,也不包含任何问题。 - Dimitre Novatchev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接