2011-09-13 45 views
-3

这是需要preg_matched的文本。使用preg_match抓取内容的正则表达式

/* * product 2: * catalogServiceType = 2 * catalogCacheType = 1 * catalog2RemoteCacheActive = false */ var objProduct881705 = new ProductStyle("2","881705","","4149367","247",false,false,false,false,'','',"35401",false,'$79.50',true,false,false,false,0,false,true,false,true,99,5,"First content that needs to be matched",'Color',"","Machine.","","false","false","false",0,0,"C1","1","",true);obj={'S':'http://domainname.com/mini/image.jpg', 'L':'http://domainname.com/main/image.jpg'}; 

我希望能够抓住从上面的文字如下:

1. First content that needs to be matched 
2. http://domainname.com/main/image.jpg 

你打算如何我能做到这一点?

+1

这是不明确。你有上面的代码(你指定它为文本)在一个字符串?你需要匹配什么? – 2011-09-13 06:12:40

+0

您转换为“代码”视图的上述内容是以字符串形式返回给我的文本。我需要从字符串中获取文本“需要匹配的第一个内容”和“http://domainname.com/main/image.jpg”。 –

+0

字符串是否总是“需要匹配的第一个内容”?如果不是,请准确指定提取文本的规则。就像它会永远是'new ProductStyle()'的第25个参数。等待! “需要匹配的第一个内容”甚至不存在于您提供的字符串中。相反,它是:“\”第一个内容需要与\“+ \ n \”匹配\“”。 –

回答

0

这是我如何解决它:

preg_match('/new ProductStyle\(([^\)]+)\)/', $html, $matches); 
$jsonValues = '[' . $matches[1] . ']'; 
$jsonValues = preg_replace_callback("/(?<=,)'(.*?)'(?=,)/", create_function(
     '$matches', 
     'return \'"\' . addslashes(strip_tags($matches[1])) . \'"\';' 
    ), $jsonValues); 
$values = json_decode($jsonValues); 
0

这里正则表达式新手,得到的东西与:

/\((.+?,){25}\"(.+?)\".+?'L':'(.+?)'/