我在这里RegEx
将whitespaces & newlines
替换为,
。
preg_replace('#\s+#',',',trim($str));
该代码适用于以下情况
$str = "
a
b
c
";
但如果我写了类似
的内容$str = "
a,
b,
c
";
或
$str = "
a ,
b ,
c ,
";
我得到第一个案例a,,b,,c
,第二个案例a,,,b,,,c
我已尝试在strtr($str,',' => '')
之前使用preg_replace()
,但也没有工作,我如何直接在preg_replace中处理此问题?
我想要的输出是所有值
a, b, c, . . . .
如果他们有逗号,它将被转义,因为它已经存在或被删除和清理等等,最后只有1个逗号分隔它们。
答案 0 :(得分:1)
我不完全确定您的要求,但您可以尝试其中一个
/[\s,]+$\n|[\s,]+/gm
或只是
/[\s,]+/
答案 1 :(得分:1)
尝试以下方法:
$arr = explode("\r\n", $str);
array_walk($arr, function(&$item, $key)
{
$item = rtrim($item,',');
$item = trim($item);
});
$result = trim(implode(',', $arr), ',');
var_dump($result);
它不是正则表达式解决方案,但它有效。这会将字符串转换为数组,删除逗号和空格,然后将数组转换回字符串并添加逗号。