2016-12-06 10 views
0

私のクライアントは、感嘆符と疑問符の前にスペースを入れたいと考えています。これが常に正しく行われるように、私はPHPで次のスクリプトを使用します。このスクリプトは、既存のスペースを削除して、すべての疑問符と感嘆符の前に改行なしスペースを置く:疑問符と感嘆符の前にスペースを追加してください

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

このすべてが正常に動作しますが、正規表現とのより良い方法がある場合、私は不思議でしたか?

+0

リフォーマットのおかげでデイブ氏 - 私は常にコードタグに苦労しています.4つのスペースは私にとってはうまくいかないようです。 –

答えて

3

使用preg_replace

正規表現では、それは次のようになります。

preg_replace('/(\S)([?!])/', '$1 $2', $text); 
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キャプチャされたテキストを挿入します。

関連する問題