在我的生物信息的用戶有時輸入的句子,而不使用適當的間距,就像這樣:添加空格代替標點符號後面字母詞的出現沒有空白其間
$bio = 'Hey there,I'm Tom!And I'm 25';
我用預浸更換修復逗號:
$bio = str_replace(",", ", ", $bio);
呼應的:
$bio = 'Hey there, I'm Tom!And I'm 25';
怎麼辦除了'(來自我)之外,我對所有其他標點符號都這樣做?
任何想法?
在我的生物信息的用戶有時輸入的句子,而不使用適當的間距,就像這樣:添加空格代替標點符號後面字母詞的出現沒有空白其間
$bio = 'Hey there,I'm Tom!And I'm 25';
我用預浸更換修復逗號:
$bio = str_replace(",", ", ", $bio);
呼應的:
$bio = 'Hey there, I'm Tom!And I'm 25';
怎麼辦除了'(來自我)之外,我對所有其他標點符號都這樣做?
任何想法?
你可以在數組中使用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');
的一個問題與這種解決方案,如果有人有「Hello World!這是一個測試。「你最終會得到」Hello World!這是一個測試。 「你需要確保標點之後的字符在替換之前不是空格,或者在它完成之後,再次運行它,用單個空格代替雙空格。 – Jeremy1026
你是對的,所以他需要更復雜的正則表達式 – Slemgrim
我使用rtrim($ xbio,',.;: - _!$ ');刪除最後一個標點符號。 – webmasters
['preg_replace'](http://in.php.net/manual/en/function.preg-replace.php) – hjpotter92