使用正则表达式PHP搜索字符串

时间:2012-06-06 11:03:11

标签: php regex string

我有一个字符串,我需要搜索此字符串并能够将地址详细信息分配给变量:

它在字符串中的样子:

infoone:"infoone"infotwo:"infotwo"address:"123 fake street pretend land"infothree:"infothree"infofour:"infofour" address:"345 fake street pretend land"infofive: "infofive"infosix: "infosix"

如何使用正则表达式搜索此字符串以仅提取字地址后面的引号中的数据,?

注意:我无法定位短语“123假街道假装土地”,因为这只是一个用于倒置逗号中的内容的例子。

3 个答案:

答案 0 :(得分:2)

这是一个很好的正则表达式

^address:"([^"]*)

这是在php中使用选项,以便^在行的开头匹配,我们解除了第1组

preg_match_all('/^address:"([^"]*)/m', $subject, $result, PREG_PATTERN_ORDER);
$result = $result[1];

更新1

preg_match_all('/^address:"([^"]*)/m', $subject, $result, PREG_SET_ORDER);
for ($matchi = 0; $matchi < count($result); $matchi++) {
    for ($backrefi = 0; $backrefi < count($result[$matchi]); $backrefi++) {
        # Matched text = $result[$matchi][$backrefi];
    } 
}

更新2

使用新的样本输入,只需在开头的^处离开,这样就变成了

address:"([^"]*)

答案 1 :(得分:1)

好吧,正则表达式本身就是^address:"(.*)"$

显然,您需要添加相关的preg_match()来电。

答案 2 :(得分:1)

使用此正则表达式

$str='infoone:"infoone"infotwo:"infotwo"address:"123 fake street pretend land"infothree:"infothree"infofour:"infofour" address:"345 fake street pretend land"infofive: "infofive"infosix: "infosix"';

preg_match_all("/address:\"(.*)\"/siU",$str,$out);
print_r($out[1]);