2012-09-16 42 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); 
相關問題