preg_match_all接受字符串的问题
问题描述:
我无法使用preg_match_all来获取具有类和属性的跨度。preg_match_all接受字符串的问题
这就是我想获取/捕获:
<span class="class-name" data-is-compact="false">Content</span>
这是我想出:
$response = file_get_contents('https://twitter.com/' . $this->twitter_sreenname . '/');
preg_match_all('#<span class=\"class-name\" data-is-compact=\"false\">(.+?)\<\/span\>#', $response, $matches);
但我将无法正常工作。 如果我删除:
data-is-compact=\"false\"
它的工作原理。我究竟做错了什么?
答
你不使用这个好工具。使用DOM:
$dom = new DOMDocument();
@$dom->loadHTMLFile('https://twitter.com/' . $this->twitter_sreenname . '/');
$xpath = new DOMXPath($dom);
$query = '//span[@class="class-name" and @data-is-compact="false"]/text()';
$nodes = $xpath->query($query);
foreach($nodes as $node) {
echo $node->nodeValue . "\n";
}
+0
+1祝贺比第一个人更快地建议正则表达式。 – 2014-08-30 22:53:39
尝试包括您尝试匹配的实际字符串,以便我们可以看到发生了什么。 – 2014-08-30 22:42:46
对不起,我犯了一个打字错误,我的意思是跨度而不是div。 字符串是跨度。 我对此仍然很陌生,所以我可能会使用错误的表达式 - 但它是preg_match_all不会读取/接受的范围 – 2014-08-30 22:46:12
我的意思是'$ response'的实际值。没有这些,就没有办法告诉出了什么问题。 – 2014-08-30 22:51:37