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\" 

它的工作原理。我究竟做错了什么?

+0

尝试包括您尝试匹配的实际字符串,以便我们可以看到发生了什么。 – 2014-08-30 22:42:46

+0

对不起,我犯了一个打字错误,我的意思是跨度而不是div。 字符串是跨度。 我对此仍然很陌生,所以我可能会使用错误的表达式 - 但它是preg_match_all不会读取/接受的范围 – 2014-08-30 22:46:12

+0

我的意思是'$ response'的实际值。没有这些,就没有办法告诉出了什么问题。 – 2014-08-30 22:51:37

你不使用这个好工具。使用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