我在解决这个问题时遇到了一些麻烦。
我有以下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
它还确保逗号之后的空格如果丢失。
似乎有效,不确定是否有更好的方法。欢迎提供反馈:)
答案 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 :(得分:2)
不使用匹配1个或更多空格的+量词,而是使用{2,}量词,它只匹配2个或更多个空格......“,你好”将不匹配。