首页 > 解决方案 > 将用逗号分隔的文本拆分为一个数组,但忽略转义分隔符 \,

问题描述

文字是

a,b,c,d\,e,f,g 

我想根据分隔符将它们拆分成一个数组,并忽略转义,\,e

["a","b","c", "d,e", "f", "g"]

我试过使用爆炸之类的

explode(',', $data);

但它不识别\文本中的转义。如何拆分文本并忽略转义的分隔符?

标签: phpregex

解决方案


您可以使用preg_split基于未转义的逗号进行拆分(在逗号上使用否定的后视来检查它前面没有 a \),尽管您需要进行后处理以删除反斜杠:

$string = 'a,b,c,d\,e,f,g';
$array = preg_split('/(?<!\\\\),/', $string);
$array = array_map(function ($v) { return str_replace('\\', '', $v); }, $array);
print_r($array);

输出:

Array ( [0] => a [1] => b [2] => c [3] => d,e [4] => f [5] => g )

推荐阅读