2016-12-06 203 views
0

我的客戶希望在感嘆號和問號之前留出空格。爲了確保這樣做總是正確的,我在php中使用下面的腳本。此腳本將刪除任何現有的空間,然後所有問號和感嘆號之前把一個非換空間:在問號和感嘆號之前添加空格

$text = str_replace(' ?', '?', $text); 
$text = str_replace('?', ' ?', $text); 
$text = str_replace(' !', '!', $text); 
$text = str_replace('!', ' !', $text); 
return $text; 

這一切工作正常,但我在想,如果有一個與正則表達式更好的辦法?

+0

感謝戴夫對格式化的重新編排 - 我總是在與代碼標籤爭執 - 這四個空間似乎並不適合我。 –

回答

1

preg_replace("/\s?(!|?)/", " $1", $string);

5

您可以使用

$text = "No? Oh ? And ! and!"; 
$text = preg_replace('~\s*([?!])~', ' $1', $text); 
echo $text; 

PHP demo

詳細

  • \s* - 0+空格符號
  • ([?!]) - 第1組捕獲?!

替換模式只包含 和反向引用,以第1項內容插入捕獲的文本。