我正在通过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只有几个类。
发布于 2014-08-19 12:55:34
我的意思是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属性的class元素,并返回属性值。
https://stackoverflow.com/questions/25383770
复制相似问题