2011-09-13 44 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':'(.+?)'/