プロが教える店舗&オフィスのセキュリティ対策術

フォームから受け取った値の中の2つ以上の連続する空白文字を削除したいのですがどうすればいいでしょうか。

一つは区切り文字として残したいのです。

調べてみたところ

splitで正規表現するとできる

というサイトを見たのですが具体的に書かれていなかったのでよくわかりませんでした。

わかる方お願いします。

A 回答 (4件)

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2006/05/09 10:39

「2つ以上の連続する半角スペースを1つの半角スペースに置換する」という意味でよろしいですか?$stringにフォームから受け取った値が代入されているとします。



$string = preg_replace("/\s{2}/"," ",$string);


で$stringがご希望通りに整形されます。
\sというのは正規表現でいうところの半角スペースを意味する特殊文字です。

$string = preg_replace("/\s{2}/","\s",$string);

とやればよさそうなもんなのですがうちでやってみたら上の方がオッケーでした。下はダメ。私の環境はPHP Version 5.0.4。PHPのバージョンによって正規表現を使ったときの細かい挙動が違うらしくて(詳しいことはきかないでぇ)そちらで動くかどうかわかりませんがやってみてください。
    • good
    • 0
この回答へのお礼

2つの空白だとうまくいったのですが、たくさん空白があるとうまくいきませんでした。

わざわざ調べてくださってありがとうございました。

お礼日時:2006/05/09 10:39

単純な文字列なら


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

$変換後 = preg_replace( "/□□/", "□", $文字列 );


※□は空白文字です

で、一発で出来ませんかね?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!