用逗号替换空格和换行符

时间:2017-10-09 12:37:02

标签: php regex

我在这里RegExwhitespaces & 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个逗号分隔它们。

2 个答案:

答案 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);

它不是正则表达式解决方案,但它有效。这会将字符串转换为数组,删除逗号和空格,然后将数组转换回字符串并添加逗号。