PHP:使用正则表达式在字符串中查找数组模式

时间:2015-02-24 23:16:10

标签: php regex

我有一个这样的字符串,它是数组模式:

["foo","bar","bra bra","xxx123"]

我如何获得foobarbra braxxx123 模式为["","",""]

3 个答案:

答案 0 :(得分:1)

因为php 5.4是一种做数组的缺点方法。

请参阅:http://docs.php.net/manual/en/language.types.array.php

具体报价:

  

从PHP 5.4开始,您还可以使用替换的短数组语法   array()with []。

因此基本方式与任何其他数组一样:

$arr = ["foo","bar"];

foreach($arr AS $arg){
    echo $arg; //you can add your logic here for comma seperating or beautifying
}

答案 1 :(得分:1)

你可以在没有正则表达式的情况下完成:

$result = explode('","', trim($str, '[]"'));

或使用正则表达式:

if (preg_match_all('~"([^"]*)"~', $str, $m))
    $result = $m[1];

或处理转义引号的正则表达式:

if (preg_match_all('~"([^"\\\]*(?s:\\\.[^"\\\]*)*)"~', $str, $m))
    $result = $m[1];

答案 2 :(得分:0)

我怀疑,正则表达式可能是错误的工具 - 尝试explode

$string='["foo","bar","bra bra","xxx123"]';

//Remove start/end
if (substr($string,0,2)!='["') die('Malformed start!');
if (substr($string,-2)!='"]') die('Malformed end!');
$string=substr($string, 2, -2);
//Now explode
$array=explode('","', $string);

print_r($array);