我一直致力于一些涉及xPaths和从其他网站检索元素的练习应用程序。
我使用了DomXpath,但它没有返回结果或节点列表。
以下是代码:
$DOM = new DOMDocument();
@$DOM->loadHTML($html);
$xpath = new DOMXPath($DOM);
$nodes = $xpath->query("//span[contains(@style,'font-size:25px;')]");
foreach ($nodes as $node) {
echo $node->nodeValue;
}
示例的页面来源:
<div class="front-view-content full-post">
<p>
<span style="font-size:25px; color:#98293D;">RED</span><br>
<span style="font-size:25px; color:#98293D;">BLUE</span><br>
<span style="font-size:25px; color:#98293D;">WHITE</span></p>
</div>
它不会返回任何简单的空白。
答案 0 :(得分:0)
没有分号;在源代码中,所以xpath不匹配。
$nodes = $finder->query('//span[@style="font-size:25px"]');
应该工作
答案 1 :(得分:0)
尝试匹配包含特定值的属性比执行[@style="your search string"]
要复杂一点,因为这只会匹配与style
完全匹配的your search string
属性。
据我所知,xpath中没有简写选择器,类似于CSS中的简写选择器,允许你执行[@style*="your search string"]
或[@style~="your search string"]
等。
要测试字符串是否包含其他字符串,请使用contains()
函数。你的例子xpath查询必须转换为:
//span[contains(@style,"font-size:25px;")]
请注意匹配隔离字符串,如果愿意,可以在字边界处(例如匹配main
中的class="nav main"
类,但不匹配class="nav maintenance"
中的类mainApp.controller('addUserCtrl', function($scope,$http) {
$scope.getCities = function() {
$scope.citieslist = ["Nagpur", "Pune", "Latur", "Aurangabad"];
};
});
),还是会变得有点复杂。我会给你to this answer这样的例子。