これを試して:
(^| ).( |$)
壊す:
1. (^| ) -> Beginning of line or space
2. . -> Any character
3. ( |$) -> Space or End of line
実際のコード:
$string = preg_replace('/(^| ).( |$)/', '$1', $string);
注:私はPHP正規表現の動作に精通していないため、実際の正規表現の宣言方法によっては、コードを微調整する必要がある場合があります。
m.buettnerが指摘したように、このコードには末尾の空白があります。それをクリアするにはトリムが必要になります。
a b c
編集:Arnis Juragaは、これでは複数の単一文字がフィルターで除外されないことを指摘しましたb
。これが問題である場合は、次の正規表現を使用してください。
(^| ).(( ).)*( |$)
中央(( ).)*
に追加された文字は、0回以上続く任意のスペースを探します。欠点は、一連の単一文字が配置されていた場所に2つのスペースができてしまうことです。
これを意味する:
The a b c dog
これになります:
The dog
置換を実行して単一の個別の文字を取得した後、次の正規表現を使用して二重スペースを見つけ、次に単一スペースに置換する必要があります。
( ){2}