• ベストアンサー

2つ以上の連続する空白文字を除去

フォームから受け取った値の中の2つ以上の連続する空白文字を削除したいのですがどうすればいいでしょうか。 一つは区切り文字として残したいのです。 調べてみたところ splitで正規表現するとできる というサイトを見たのですが具体的に書かれていなかったのでよくわかりませんでした。 わかる方お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

$data = preg_replace("/[ \s]+/"," ",$data);

hiihime
質問者

お礼

うまくいきました。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • DM9
  • ベストアンサー率37% (43/115)
回答No.3

「2つ以上の連続する半角スペースを1つの半角スペースに置換する」という意味でよろしいですか?$stringにフォームから受け取った値が代入されているとします。 $string = preg_replace("/\s{2}/"," ",$string); で$stringがご希望通りに整形されます。 \sというのは正規表現でいうところの半角スペースを意味する特殊文字です。 $string = preg_replace("/\s{2}/","\s",$string); とやればよさそうなもんなのですがうちでやってみたら上の方がオッケーでした。下はダメ。私の環境はPHP Version 5.0.4。PHPのバージョンによって正規表現を使ったときの細かい挙動が違うらしくて(詳しいことはきかないでぇ)そちらで動くかどうかわかりませんがやってみてください。

hiihime
質問者

お礼

2つの空白だとうまくいったのですが、たくさん空白があるとうまくいきませんでした。 わざわざ調べてくださってありがとうございました。

すると、全ての回答が全文表示されます。
noname#84778
noname#84778
回答No.2

単純な文字列なら $変換後文字列 = str_replace( "△△", "△", $変換前文字列 ); ※△は空白文字です の方が効率的です。

すると、全ての回答が全文表示されます。
  • asahina02
  • ベストアンサー率47% (95/202)
回答No.1

$変換後 = preg_replace( "/□□/", "□", $文字列 ); ※□は空白文字です で、一発で出来ませんかね?

すると、全ての回答が全文表示されます。

関連するQ&A

専門家に質問してみよう