2010-07-02 7 views

Répondre

3

str_replace est la solution la plus simple lorsqu'il y a au plus un espace après la virgule:

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

S'il peut y avoir plusieurs espaces, alors j'irais avec la solution regex. (voir la réponse d'icktoofay)

+0

Les expressions régulières sont toujours relativement lentes, donc, dans la mesure du possible, il est préférable d'utiliser des alternatives. – casablanca

2

Bien que les expressions régulières peuvent ne pas être la meilleure façon, une simple expression régulière, comme cela pourrait transformer ces données:

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

Réponse de Casablanca et cela fonctionne bien. Mais quelle sera la meilleure chose à mettre en œuvre? Regex ou l'autre? Lequel est rapide? Merci! – esafwan

1

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

+0

@ downvoter, commentaires plz. – Young

+0

Je pense que vous avez les downvotes parce que le code est bizarre, à savoir l'imbrication du second 'str_replace'. En outre, cet appel de fonction entraîne plus de remplacements, ce qui a (quoique négligeable, sauf si vous traitez des milliers de chaînes) des implications de performance. –

+0

@Steven XU, actinally Je le fais comme ça pour le rendre capable de gérer des situations plus inconnues, par exemple, si OP a plus d'un espace à côté virgule comme ',', ',', alors cela fonctionnera encore. – Young

1

Une approche non-regex:

$str = str_replace(", ", ",", $str); # Remove single space after a comma 
$str = implode(' ', explode(',',str)); 
Questions connexes