2011-06-05 24 views
1

说我有这样的:我怎样才能用RegEx抓住这个?

<li class="one"><strong>String here: </strong><span class="one">&nbsp; 
           <!--googleoff: all--> 
           <strong>STRING TO GRAB</strong> 
           <!--googleon: all--> 
           </span></li> 

我怎么能抢用正则表达式的STRING TO GRAB有效?请注意,这不是网页上的唯一文字,因此/<strong>(.*)<\/strong>/不起作用。

谢谢

+0

您需要另一个*锚点*。 “谷歌”的评论总是围绕着它呢? – 2011-06-05 20:14:54

+0

老实说,我不确定。我想是这样,但我没有做任何彻底的研究。我会打开其他浏览器并开始检查。 – Rob 2011-06-05 20:15:47

+0

是的,他们似乎总是在那里。 – Rob 2011-06-05 20:17:38

回答

3

有两种方法。

Dom类:如果html是一种体面的类型,使用PHP的dom类。

参见: - http://www.php.net/manual/en/domxpath.query.php - http://www.php.net/manual/en/domdocument.loadhtml.php

正则表达式 如果它不是一个真正有效的HTML或DOM加载不工作,也许正则表达式是一个很好的解决方案。

我假设< - googleoff:all-- >始终存在,这可能工作,如果没有,也许你可以在字符串的特殊性提供一些更多的评论:

$string = "yourhtmlstring"; 
$matches = array(); 
preg_match('/<!--googleoff: all-->\s+?<strong>(.+)<\/strong>\s+?<!--googleon: all-->/', $string, $matches) 
var_dump($matches); 

最终尖端 要测试的正则表达式进一步:http://tinyurl.com/6gy6584

0

作为对对方的回答说,正则表达式不是HTML(或XML)

最佳答案210
/<strong>(.+?)<\/strong>/ 

注意?这使得正则表达式非贪婪