用逗号后添加空格

时间:2011-06-06 02:12:10

标签: php arrays string function

我在解决这个问题时遇到了一些麻烦。

我有以下CSV字符串

hello world, hello             world, hello

中间值有多余的空格。我正在使用

修剪它
preg_replace('/( )+/', ' ', $string) 

该函数非常出色,但它也删除了逗号后面的空格。它变成..

hello world,hello world,hello

我想在逗号之后保留1个空格

hello world, hello world, hello

我该怎么做?

编辑:

按照建议使用preg_replace('/(?<!,) {2,}/', ' ', $string);,但是我遇到了另一个问题。当我在逗号后使用多于1个空格时,它会在逗号后面返回2个空格。

所以

hello world,             hello world,hello

返回

hello world,  hello world, hello

作为解决方案,我从CSV字符串创建一个数组并使用implode()

$string = "hello world,   hello        world,hello";
$val = preg_replace('/( )+/', ' ', $string);
$val_arr = str_getcsv($val); //create array
$result = implode(', ', $val_arr); //add comma and space between array elements
return $result; // Return the value

现在我得到hello world, hello world, hello它还确保逗号之后的空格如果丢失。

似乎有效,不确定是否有更好的方法。欢迎提供反馈:)

3 个答案:

答案 0 :(得分:11)

这对我有用。

$string = "hello world,   hello        world,hello";
$parts = explode(",", $string);
$result = implode(', ', $parts);
echo $result; // Return the value
//returns hello world, hello world, hello

仅在逗号处爆炸,并删除所有额外的空白区域。 然后用逗号空间内爆。

答案 1 :(得分:6)

这将匹配2个或更多空格并替换为奇异空格。它与逗号后的空格不匹配。

preg_replace('/(?<!,) {2,}/', ' ', $string);

RegExr

答案 2 :(得分:2)

不使用匹配1个或更多空格的+量词,而是使用{2,}量词,它只匹配2个或更多个空格......“,你好”将不匹配。