2013-04-01 33 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