1

我有一个像这样的字符串:

$string = '"lorem ipsum","dolor, sit","amet"';

我正在尝试使用 EXPLODE 和 preg_match 来将“ .. ”中的每个元素单独作为一个字符串,将原始字符串呈现为一个数组。

最终会给我;

$array[0] = 'lorem ipsum';
$array[1] = 'dolor, sit';
$array[2] = 'amet';

一些字符串之间包含逗号,所以我尝试爆炸以将它们分开,然后替换或 preg_matching 以在“..”之间提取失败。

我怎样才能达到预期的目标?

谢谢你。

4

3 回答 3

1

此代码应迭代地将您的字符串解析为其组件:

$array = array();
while (preg_match('/^"([^"]*)"(?:,(.*)|$)/', $string, $match)) {
    $array[] = $match[1];
    $string = @$match[2];
}
于 2012-05-23T21:29:03.240 回答
1

您应该用专门为此制作的功能替换您的功能组合str_getcsv

$array = str_getcsv($string, ',', '"');

(为清楚起见添加了选项)

于 2012-05-23T21:33:40.663 回答
0

您正在寻找的是preg_split

$string = preg_split("/,[^\s+]/", '"lorem ipsum","dolor, sit","amet"');
print_r($string);

>

Array
(
    [0] => "lorem ipsum"
    [1] => dolor, sit"
    [2] => amet"
)
于 2012-05-23T21:33:37.180 回答