2012-06-20 35 views
0

在我的生物信息的用戶有時輸入的句子,而不使用適當的間距,就像這樣:添加空格代替標點符號後面字母詞的出現沒有空白其間

$bio = 'Hey there,I'm Tom!And I'm 25'; 

我用預浸更換修復逗號:

$bio = str_replace(",", ", ", $bio); 

呼應的:

$bio = 'Hey there, I'm Tom!And I'm 25'; 

怎麼辦除了'(來自我)之外,我對所有其他標點符號都這樣做?

任何想法?

+0

['preg_replace'](http://in.php.net/manual/en/function.preg-replace.php) – hjpotter92

回答

0

你可以在數組中使用preg_replace。

首先創建一個數組的標誌來代替,如:

$signs = array('/,/', '/!/', '/?/'); 

比用替換另一個數組

$replacement = array(', ', '! ', '? '); 

現在的preg_replace使用兩個數組:

preg_replace($signs, $replacement, $bio); 

,以確保下一個符號已經是空白區了,你可以爲每個c使用更復雜的正則表達式haracter像這樣的:

$signs = array('/,(\S)/', '/!(\S)/', '/?(\S)/'); 
$replacement = array(', $1', '! $1', '? $1'); 

http://php.net/manual/de/function.preg-replace.php

+1

的一個問題與這種解決方案,如果有人有「Hello World!這是一個測試。「你最終會得到」Hello World!這是一個測試。 「你需要確保標點之後的字符在替換之前不是空格,或者在它完成之後,再次運行它,用單個空格代替雙空格。 – Jeremy1026

+0

你是對的,所以他需要更復雜的正則表達式 – Slemgrim

+0

我使用rtrim($ xbio,',.;: - _!$ &#');刪除最後一個標點符號。 – webmasters

相關問題