スペースの削除ができない?Perlでの名前の入力方法について

このQ&Aのポイント
  • Perl初心者の方から、HTMLのフォームに名前を入力する際にスペースを避ける方法についての質問があります。
  • CGIのファイルがEUCではなくSJISにすると、スペースの削除ができるようになるが、別の問題が生じるため対応できない状況です。
  • 質問者さんはスペースを削除するために正規表現を使用しているが、動作しないとのことで、原因についての指導をお願いしています。
回答を見る
  • ベストアンサー

スペースの削除ができません

Perl初心者です。教えていただきたいことがあります。 CGIですが、HTMLのフォーム(テキストボックス)に名前を入力してもらうような場合に、名字と名前の間にスペースがあったりなかったりする状態が混在するのを避けるため、すべてスペースなしで値を受け取りたいと考えています。 仮に、"NAME"というテキストボックスとした場合、 $FORM{'NAME'} =~ s/ //g; $FORM{'NAME'} =~ s/ //g; このようにすれば、半角・全角スペースを削除できると思うのですが、どういうわけか動きません。スペースが入ったままで値が返ります。 ちなみに、CGIのファイルはEUCにしているのですが、なぜかSJISにすると動きます。ただ、SJISにすると別の支障があるのでできません。 情報が不足しているかもしれませんが、原因の検討がつきません。どなたが、考えられる原因をご指導いただけないでしょうか。 よろしくお願いします。

  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

どっちかで動くと思うのですが。 #$str が EUC-JP の場合 $str =~ s/xA1\xA1//g; #$str が SJIS の場合 $str =~ s/\x81\x40//g;

Stiltzkin
質問者

お礼

回答ありがとうございます。 ご教示いただいた方法で、希望どおりの処理ができました。 とても助かりました。本当にありがとうございました。

関連するQ&A

  • 全角スペースを切り落とす方法

    掲示板などで、投稿された名前などに入っている全角スペースを切り落としたいのです。 $name =~ s/\s+//g; これでやってみたのですが、半角スペースしか切り落とせません。 全角スペースを切り落とすにはどのような方法がありますでしょうか? 自分なりに調べてみたんですが、わかりませんでした。 お時間ございましたら、教えていただけますでしょうか? 方法を紹介してあるURLだけでも結構ですので、よろしくお願い致します。

  • 異なるformで同一のnameは使用できる??

    1つのHTML内で使用する form~/form が2回あるとします。(formA, formBがあるとします) この場合に、formAで使用した name の名前をもう片方のformBで使用しても問題はありませんか? name="aa"のテキストboxと、value="表示"のSUBMITボタンを持つ form が2個あり、かつ どちらのボタンを押しても同じCGIを呼び出す場合、 B側のボタンを押すときにCGI側で受け取る aaの値は、 B側のテキストboxに入力した値になるのでしょうか?? 質問内容がわかりにくいかとは、思いますが、よろしくお願いします。

    • ベストアンサー
    • CGI
  • 全角スペースを削除するには?

    全角のスペースの削除の仕方を教えてください。 例を下に示します。 50桁の変数"name"の中身は"山田 太郎           "です。 変数の中身は、山田 太郎の後ろは全角のスペースが入っています。 名前の後ろの全角のスペースが半角4桁(全角2桁)以上ある場合は、 それ以降を削除したと思っています。 かなり困っています。良い方法をどなたかご伝授下さい。 宜しくお願いします。

  • 全角スペースを取り除きたい

    こんにちは。 フォームのテキストボックスで全角スペースが入力され時、全角スペースを削除したいんです。 あいう△えお → あいうえお のように いろいろ調べてみたのですがわからないのでお願いします。

    • ベストアンサー
    • PHP
  • JacaScriptのスペース削除について

    JavaScriptのスペース削除についての質問です。以下のコードで、入力された値が空白又はAllブランクだった時の処理をしています。ここに、前後に全角半角スペースが入力された場合は、それを削除する、という処理を入れたいので、以下のようにしています。 /*(1)*/function trim(nameTXT) { return nameTXT.replace(/^[ \t\r\n]+|[ \t\r\n]+|[ \t\r\n]+|[ \t\r\n]+$/g, ""); } // 未入力またはスペース入力時のアラート及びフォーカス処理関数 function check() { var nameTXT = document.formMerchandise.name.value; if(trim(nameTXT).match(/ |\s+/)||trim(nameTXT)==""){ alert("商品名を入力してください"); document.formMerchandise.name.focus(); return false; } if(trim(nameTXT)>25){ alert("商品名は25文字までです"); document.formMerchandise.name.focus(); return false; } return true; } ネットを参考にしながらではあるのですが、(1)で自作メソッドを作成し、その中で「受け取った文字の前後にある全角半角スペースを削除して戻す」という処理を実装してみました。半角スペースに関しては期待通りの処理を行えたのですが、全角スペースに関しては削除されず、文字として認識されてしまっています。 例えば (半角スペース) " 商品名 "→"商品名" (全角スペース) " 商品名 "→" 商品名 " となってしまいます。半角スペースが削除されているので後少しとは思うのですが、どなたか教えて頂けないでしょうか?よろしくお願い致します。

  • チェックボックスでのvalue値のスペースについて

    HTMLのformからチェックボックスで選択された値をCGIに飛ばしデータファイル(cgiファイル)に保存したいのですが、 チェックボックスのvalueを複数選択するとvalue値の間にスペースが入ってしまいます。 正確にはデータファイルをterapadで開こうとすると、 「NULL文字を含むファイルです。NULL文字は半角スペースへ変換しました。」というアラートがでてvalue値の間に半角スペースが入ってしまいます。 <チェックボックスのHTML> <input type="checkbox" name="■" value="jpn" />日本 <input type="checkbox" name="■" value="usa" />米国 ■にはデータを保存する項目の番号が入っており、一つのチェックボックスでは同じ番号が入ります。 例えば■が1なら1番に保存されます。 日本と米国を選択し送信するとデータファイル上では「jpn usa」となってしまいます。 NULL文字とはデータの値がない場合に返される値だという認識なのですが、全てのチェックボックスを選択していれば、 「jpnusa」という形で送信されるものではないのでしょうか? データを送信する際、このNULL文字による半角スペースをなくしたいのですが、何か方法はありますでしょうか? やはりCGIファイルを編集しなければ不可能なのでしょうか? ご教授よろしくお願いします。

    • ベストアンサー
    • CGI
  • 空白と改行の区分

    改行ではなく半角スペースと全角スペースだけを■に変換したくて $FORM{'body'} =~ s/\s/■/g; $FORM{'body'} =~ s/\x81\x40/■/g; としたのですが、これによって改行も■に変換されてしまいます。 改行ではなく全角および半角スペースだけを■に置換することは不可能でしょうか?

    • ベストアンサー
    • Perl
  • 正規表現の空白文字について

    Javaで正規表現を使って文字列のマッチング処理を勉強しています。 パラメータで渡されてきた値に"name="と入っている場合、マッチOKに したいのですが、 "name" と "="の間には、全角、半角スペースが複数混在している可能性があり、 その場合もマッチOKにしたいです。 アドバイスをお願いします。 ・マッチOKにしたい文字列  name=  name =  name =  name  =  name   =  など。 name" と "="の間には、全角、半角スペースが複数存在している可能性あり。 スペースなし(name=)の場合もマッチOKにしたい。 以下のようにすると全角のみ、半角のみのスペースなら1文字以上入っていても マッチOK(スペースなし(name=)の場合もマッチOK)ですが、 全角と半角のスペースが混在してしまうとマッチOKになりません。 String param = "name=mike"; Pattern p = Pattern.compile("name( *?|\\s?)=", Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(param);

    • ベストアンサー
    • Java
  • スペースを特定の文字に置き換える

    $space=~s///g; などの置き換え処理で全角スペースと半角スペースを特定の文字に置き換えたいのですが、どうすればいいのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • フォームのテキストボックスの枠線を変更するには。

    フォームのテキストボックス(ほかも)は、今これを入力するところのように くぼんでますよね? これを普通の枠線のようにはできないでしょうか? みたのは http://www.rfs.jp/sitebuilder/perl/03/03_02.html#テキストボックス のページです。 こんなふうにするにはどうしたらいいですか? ちなみに現在は <FORM ACTION="test.cgi"> <TABLE> <TR> <TD>名前</TD> <TD><INPUT TYPE="TEXT" SIZE=10 NAME="NAME">さん</TD> </TR> </TABLE> </FORM> というような感じになっています。

    • ベストアンサー
    • HTML