3 回答
TA贡献1807条经验 获得超9个赞
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;
});
TA贡献1848条经验 获得超6个赞
您可以为此使用正则表达式,它们虽然很好,但是也很难理解。为什么不这样简单一些:
$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 = "";
}
}
我知道这不是一种流行的观点,但是更改实际上可以轻松理解的内容比努力理解密集的正则表达式要有趣得多。当然,这都是非常主观的。
- 3 回答
- 0 关注
- 158 浏览
添加回答
举报