2010-07-02 63 views
1

我有一个字符串,它是逗号分隔这样CSV字符串转换为字符串空格代替逗号在PHP

$str = "john, alice, mary,joy"; 

一些人有逗号后的空间,有些则没有。我想要做的是删除所有的逗号,并使他们是这样的:

$str = "john alic mary joy"; 

什么是在php中做到这一点的最佳方式?

回答

3

str_replace是逗号后至多有一个空格的最简单解决方案:

$str = str_replace(array(', ', ','), ' ', $str); 

如果可以有多个空格,那么我会用正则表达式解决方案。 (见icktoofay的答案)

+0

正则表达式总是比较慢,所以只要有可能,最好使用替代方法。 – casablanca 2010-07-02 03:42:26

2

虽然正则表达式可能不是最好的方式,一个简单的正则表达式,因为这可能变换数据:

$str = preg_replace("/ *,+ */", " ", $str); 
+0

通过casablanca和这两个工作都很好。但是,最好的实施是什么?正则表达式还是其他的?哪一个是快速的?感谢名单! – esafwan 2010-07-02 03:29:36

1

echo str_replace(',',' ',str_replace(' ','',$str));

+0

@ downvoter,评论plz。 – Young 2010-07-02 02:45:58

+0

我认为你得到了降价,因为代码感觉很奇怪,即第二个'str_replace'嵌套。而且,这个函数调用会导致更多的替换,这些替换具有(尽管是非物质的,除非您处理数千个字符串)的性能影响。 – 2010-07-02 02:49:09

+0

@Steven XU,实际上我这样做是为了使它能够处理更多未知的情况,例如,如果OP在'''','''旁逗号不止一个空格,那么它仍然可以工作。 – Young 2010-07-02 02:58:07

1

甲非正则表达式的方法:

$str = str_replace(", ", ",", $str); # Remove single space after a comma 
$str = implode(' ', explode(',',str)); 
相关问题