我有一个字符串,如下所示:
$string = '"lorem ipsum","dolor, sit","amet"';
我正在尝试使用 EXPLODE 和 preg_match 以便将 ".." 中的每个元素单独作为一个字符串,将原始字符串渲染成一个数组。
最终会给我;
$array[0] = 'lorem ipsum';
$array[1] = 'dolor, sit';
$array[2] = 'amet';
一些即将成为的字符串在两者之间包含逗号,所以我尝试爆炸以分隔它们,然后替换或preg_matching在".."之间提取失败。
我怎样才能实现预期目标?
谢谢。
您应该将函数组合替换为专门为此创建的函数: str_getcsv
:
$array = str_getcsv($string, ',', '"');
(为清楚起见,添加了选项)
此代码应以迭代方式将字符串解析为其组件:
$array = array();
while (preg_match('/^"([^"]*)"(?:,(.*)|$)/', $string, $match)) {
$array[] = $match[1];
$string = @$match[2];
}
您要查找的是preg_split
:
$string = preg_split("/,[^'s+]/", '"lorem ipsum","dolor, sit","amet"');
print_r($string);
>
Array
(
[0] => "lorem ipsum"
[1] => dolor, sit"
[2] => amet"
)