2012-09-16 43 views
1

一样,我可以这样做,如果不存在这个问题的标题的第二部分:如何替换所有逗号而没有空格,但不能用空格逗号?

$string = 'Hello,this is my string.'; 
$replacedstring = str_replace(',', ', ', $string); 

但是,如果用户没有正确地格式化的那句话,在Hello, this is my string.什么。那样会导致它变成Hello, this is my string.,这是我不想要的。

所以,我会怎么做,在PHP中使用preg_replace和类似的正则表达式的功能呢?

+0

怎么样让用户无论如何格式化它们的方式。 – 2012-09-16 08:48:41

+0

@Dagon没有,我特别需要对其进行格式化捆绑解决与用户内容的所有潜在的问题这样 – think123

+0

从不工作 – 2012-09-16 08:50:40

回答

7
$replaced_string = preg_replace("/,([^\s])/", ", $1", $str); 

我会用这个。

2

使用此:

$ret = preg_replace('/(?<=\S,)(?=\S)/', ' ', $string); 
+0

@Downvoter解释发生了什么问题? – xdazz

+0

我没有倒下你(我赞成你),我真的不知道。 – think123

+0

此解决方案的工作原理和我同意断言(lookbehind和lookahead)是检查所需模式的最简单方法。 (它们是否比捕捉模式更快是另一回事。) – Bobulous

0

您可以使用

str_replace(array(', ', ','), ', ', $string); 

是多余的,因为与,取代,但可能是更有效的是一个正则表达式或任何其他算法的文本不是很大

0
$string = 'Hello,this is my string, sir.'; 
$pattern = '/,([^ ])/'; # every comma that is followed by anything but space 
$replacement = ', '; 
echo preg_replace($pattern, $replacement, $string); 
相关问题