PHP preg_match混淆

时间:2012-05-23 21:25:41

标签: php regex

我有一个字符串:

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

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

最终会给我什么;

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

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

我如何实现预期目标?

谢谢。

3 个答案:

答案 0 :(得分:1)

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

$array = array();
while (preg_match('/^"([^"]*)"(?:,(.*)|$)/', $string, $match)) {
    $array[] = $match[1];
    $string = @$match[2];
}

答案 1 :(得分:1)

您应该使用专门针对此功能的函数替换您的函数组合:str_getcsv

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

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

答案 2 :(得分:0)

您要找的是preg_split

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

>

Array
(
    [0] => "lorem ipsum"
    [1] => dolor, sit"
    [2] => amet"
)