• ベストアンサー

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

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

  • PHP
  • 回答数4
  • ありがとう数4

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

  • ベストアンサー
  • 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

  • 正規表現の空白文字の解釈?

    正規表現について、「空白文字を区切りとして配列に分割する」というプログラムを書いていたのですが、私の浅い経験では、空白文字は "\s+"で処理できていたと思っていましたが、今PHP4で以下の結果、" +"でないと、正しく動作しませんでした。 $a = " 1 2 3 4 5 "; $b = split(" +", $a); "\s+"の方が正解だと私は思うのですが、どういう解釈で" +"でないといけないのでしょうか?

    • ベストアンサー
    • PHP
  • JavaScriptで連続する空白を、htmlタグ付きで別の文字の連続

    JavaScriptで連続する空白を、htmlタグ付きで別の文字の連続に置換する方法 ※可視化のため下記のサンプルでは、空白を「_」で表現しています 「_」の連続を、「#」の連続とそれをタグで囲んだ状態にしたいと思っています。 やりたいことはこんな感じです。 (0):置換前:hoge_hogehove___asd#bn__ (1):置換後:hoge<span class="…">#</span>hogehove<span class="…">###</span>asd#bn<span class="…">##</span> しかし正規表現の書き方が分からなかった為、現状のコードはこんな感じにしています。 str.replace(/_/g, "<span class='…'>#</span>"); 実行結果はこうなります。 (2):現状:hoge<span class="…">#</span>hogehove<span class="…">#</span><span class="…">#</span><span class="…">#</span>asd#bn<span class="…">#</span><span class="…">#</span> 無駄に長いのですがとりあえず現状でも、htmlとして表示したときの結果は間違っていません。 しかし ・正規表現を十分に理解できていないレベルの低いコードっぽい ・最終的には比較的多くの文字列を処理をする ・保持しておいて繰り返し表示するので置換後の文字列を小さくしておきたい と思っています。 (0)を(1)の状態に変換する方法を教えてください。 出来れば正規表現でシンプルにパシッと決める方法を希望しています。 よろしくお願いします。

  • 空白文字の正規表現

    お世話になります。 StringクラスのreplaceAllを使用して、文字列に含まれる空白を削除しようとしているのですが、空白文字の正規表現がおかしいらしく「エスケープ・シーケンスが無効です」とエラー文が表示されてしまいます。 空白文字の正規表現は「\s(バックスラッシュs)」でよろしかったでしょうか? 使用しているjreは1.6.0でした。 ご回答お願いいたします。

    • ベストアンサー
    • Java
  • 簡単に文字間とかに空白入れたい

     htmlの勉強をしている超初心者です。宜しくお願いします。  4点ほど意質問があります。 ・ 送信、リセットとかのフォームがありますがこの間を空白で空ける ようにしたいのですが、空白を入れようとしてもうまく入りません。   また、チェックボタン同士の間にも空白を設定したいのですがどの ようにしたら良いのでしょうか。   テーブルを使えばよいのでしょうが、それ以外の方法で知りたいの です、宜しくお願いします。 ・ チェックボックスで「隠しフィルド」と言うのがありますが、これ は具体的にどのようなときに使うのでしょうか。   相手からデータを送信させると本に書いていましたが、どのよう  なデータかはサイトを作った人間が指定できるのでしょうか、  指定しなかったときにはどのようなデータになるのでしょうか。 ・ 文字をワード文書のように均等割付出来るのでしょうか。 ・ 擬似クラスとはどういうものなのでしょうか。 以上宜しくお願いします。

    • ベストアンサー
    • HTML
  • ""で囲まれていない箇所にある空白で分割

    PHPのカテゴリにて、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2334460 で同様の質問をした者なのですが、解決策を得られなかったので再度(こちらのPerlカテゴリにて)質問させて下さい。 (1)題名の通り、""に囲まれていない箇所にある空白によって文字列を分割したいのですが、split()等を使って一発で分割する正規表現はあるでしょうか。 (2)もし(1)が無理であれば、どういった手法が有効でしょうか。 ちなみに今のところ以下の方法で行っています。  1."" 中の空白をいったん別の文字に変換  2.split(/\s/) で分割  3.分割した各要素について1で変換した空白を復元

    • ベストアンサー
    • Perl
  • エクセルの文字列を空白で文字数を揃えたい

    皆様のお知恵を拝借したく書き込んでいます。 どうか宜しくお願いいたします。 エクセルにあるデータをカンマ区切りCSVに したいと思っております。 *例 1,1,1,3,1,2,11,・・・ これに数値を空白で埋めて四文字(0001,等)にさせたいのですが、 どのような方法が可能でしょうか? ・試したこと 1、サクラエディタでの正規表現 でも、置換後の文字列を動的に渡せるのかわからなくて失敗。 2、セルの表示形式 数値の桁数によって変化させる方法がわからず 3、エクセルマクロ LEN関数を使ってループさせれば可能? (時間がかかりそうです) 以上、宜しくお願いします。

  • 正規表現で2回以上連続する文字にHITさせたい

    パスワードの入力で aa や 11 など 2回以上連続する文字を入力したらHITさせてはじきたいんですが どういう正規表現を書けばよいでしょうか /.{2,}/ としたのですが 結局二文以上あれば何にでもHITしてしまいます /a{2,}|b{2,}|c{2,}・・・/ みたいなのを スマートに書く方法はありませんか

    • ベストアンサー
    • Perl
  • 正規表現 空白(スペース)を削除したい。

    最近正規表現というものを知りました。 ある文章の空白の部分を削除したいのですが、 正規表現の空白をネットで見たものの良くわからない。。。。 やりたいことは、 □□□□あいうえお。 と空白があると、その空白を削除して、 あいうえお。 としたいのですが、どなたか教えてください。 宜しくお願いします。

  • 3回以上連続する文字(どんな文字でも)を削除する方法

    3回以上連続する文字(どんな文字でも)を削除する方法 お世話になります。 掲示板等の文字列で、、、 ■■■■■■■■ や ========= といった連続する文字列を削除したいと思っています。 その際「3回以上、同じ文字がつづいているものは、根こそぎ削除」という形にしたいと思い、 ~s///g; を用いて、あれこれやっているのですが (また、ぐぐって、あれこれ調べたのですが) 全く、うまくいきません。 どの様にすれば、うまくいくのか、アドバイスいただければ幸いです。

    • ベストアンサー
    • Perl
  • エクセル セル内の文字列を空白から空白まで抽出したい。

    一つのセルに入っている文字列を複数のセルに分割したいのですが良い方法が見つかりません。 具体的には 「商品名 単価 数量 金額」が一つのセルに入っているのですが、これをそれぞれ「商品名」「単価」「数量」「金額」というように別のセルに分けたいのです。 条件は次です。 ・文字列の区切りは空白(スペース)。 ・商品名や金額などそれぞれの文字列の長さは決まっていません。 ・商品名には名称の中に空白が使われている場合があります、その数も決まっていません。 以上です。いろいろ関数を使ってやってみたのですが、どうもうまくいきません。 どなたか良い方法がありますでしょうか、よろしくお願いいたします。

専門家に質問してみよう