2013-04-01 101 views
1

如果我有像這樣的字符串"location":"Denton TX"(包括雙引號) 我只想得到Denton TX。我怎樣才能爲那件事寫正則表達式?正則表達式混淆

我試圖

function getInfo($info,$content){ 
    echo 'getting INFO'; 
    preg_match_all("\.".$info."\.:\"[^\"]*(.*?)\.,",$content,$matches,PREG_PATTERN_ORDER); 
    print_r($matches); 
    return $matches[0]; 
} 

,我把 '位置' 爲$info,但它不工作。

+2

你有任何錯誤,如需要[分隔符](http://www.php.net/manual/en/regexp.reference.delimiters.php)? – Wiseguy

+0

沒有沒有得到任何錯誤T___T –

+0

其次是缺少分隔符作爲問題。另外,http://www.whathaveyoutried.com/ – Adrian

回答

0

簡單地獲取引號之間的每個字符。你太接近了。

"\.".$info."\.:\"([^\"]*)\" 
+0

它仍然不起作用T__T爲什麼不呢? function getInfo($ info,$ content){ echo'正在獲取INFO; print_r($ matches); return $ matches [「\」「。​​$ info。」\「:\」([^ \「] *)\」「,$ content,$ matches,PREG_PATTERN_ORDER) 0]; } 的print_r不返回任何東西給我 –

0

我這個去:

"\"".$info."\":\"([^\"]+)\"" 

我不知道爲什麼你寫了這個特定的位,但在你的正則表達式的主要問題是[^\"]*,這也太貪婪和意志消耗一切,並將(.*?)留空(好吧,除非以雙引號開頭,我猜)。我也不明白爲什麼你最終會得到什麼樣的逗號,但也許你的例子並不是絕對的......無論如何,我提供的正則表達式應該與你的示例匹配,前提是$info包含字符串location

0

嘗試這種情況:(< =:? 「)(=(*)。」)

我使用類似的一個以從在Android應用的XML響應刪除元素標籤。祝你好運

+0

事實上,這將是最好的:(?<= 「位置」: 「)(。*)(?=」) 的http:// regexr.com?34bsi – digitalsteez