我正在解析HTML文档,我需要一个div的类名。我知道类名的一部分(永远不会改变),但我需要完整的类名。
这是我使用的代码:
$doc = new DOMDocument;
$doc->loadHTMLFile('http://some_website.com');
$xpath = new DOMXPath($doc);
$classname_of_the_div=$xpath->query('//div[@class="part_of_the_class_name_that_never_changes"]');
当我var_dump()
$classname_of_the_div
和$classname_of_the_div->item(0)
结果为:
object(DOMNodeList)#3 (1) { ["length"]=> int(0) }
NULL
我知道$classname_of_the_div=$xpath->evaluate('string(//div[@class="part_of_the_class_name_that_never_changes"])');
给了我div的内容,但我如何获得完整的班级名称?
P.S。:类名的一部分与类名的其余部分用空格分隔,因此它实际上不是该类的一部分。 div只有几个类。
答案 0 :(得分:1)
我的意思是div有几个类名 - 例如我想通过“class2”选择它并接收 完整的类字符串,包括“class1 class2 class3”
然后,像
这样的XPath表达式//div[@class="part_of_the_class_name_that_never_changes"]
永远不会产生结果,除了特定div
元素只有一个类的情况,即“永不改变”的情况。那是因为上面的XPath表达式意味着:
选择
div
个元素,其class
属性的字符串值 完全对应于“part_of_the_class_name_that_never_changes”。
但想象一下以下情况:
<div class="part_of_the_class_name_that_never_changes other_class1 other_class2"/>
然后,您需要将表达式更改为:
//div[contains(@class,'part_of_the_class_name_that_never_changes')]/@class
表达意味着:
查找具有
div
属性字符串的class
个元素 value 包含字符串 “part_of_the_class_name_that_never_changes”并返回该属性 值。