函数式编程
Wihout正则表达式$ignore = '\\';$arr = explode(',','a,b,c,d\,e,f,g');array_walk($arr, function(&$v, $k) use ($ignore,&$arr){ if(strpos($v, $ignore)){ $v = str_replace($ignore, ',', $v).$arr[$k+1]; unset($arr[$k+1]); } return $v;});
慕勒3428872
您可以为此使用正则表达式,它们虽然很好,但是也很难理解。为什么不这样简单一些:$input = "a,b,c,d\,e,f,g,h\,i\,j,k,l,m";$output = [];$buffer = "";foreach (explode(",", $input) as $part) { if (substr($part, -1) == "\\") $buffer .= $part; else { $output[] = $buffer . $part; $buffer = ""; }}print_r($output);这不会删除反斜杠,但是现在很容易添加或删除反斜杠。这与删除它们的算法相同:foreach (explode(",", $input) as $part) { if (substr($part, -1) == "\\") $buffer .= substr($part, 0, -1) . ','; else { $output[] = $buffer . $part; $buffer = ""; }}我知道这不是一种流行的观点,但是更改实际上可以轻松理解的内容比努力理解密集的正则表达式要有趣得多。当然,这都是非常主观的。