• ベストアンサー

入力フォームに全角・半角スペースがある場合

入力フォームに全角・半角スペースがある場合に、 データを受け取ったCGIのほうで、エラーメッセージを出そうとおもうのですが、 if ($name_l eq ' ' or $name_l eq ' '){ $errMsg .= ',Name'; $errNum++; $e_name_l = 1; } 上記のやり方だと、複数フォームにスペースが入力された時に、エラーの指事がでないのです。 どなたかご教授お願いいたします。

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

  • ベストアンサー
noname#225520
noname#225520
回答No.4

すみません、'~='ではなく、'=~'でしたね。 S-JISによる検索は確かにどうもうまくいかないケースが多いようです。jcode.pl等で一度EUC-JPへ変換すればうまく行くはずです。

izaq
質問者

お礼

有難うございました。 教えていただいた。perlメモを参考にして、 解決することができました。

その他の回答 (3)

  • ikspiari
  • ベストアンサー率48% (29/60)
回答No.3

if ( $name_l =~ /\x81\x40+|\S+/ ) { ... で、どうでしょうか? 動作確認はしておりません。 # SJISの正規表現はあまり思わしくないんですよね・・・。

noname#225520
noname#225520
回答No.2

さらに半角スペースの正規表現は'\x20'、全角スペースは シフトJISが'(?:\x81\x40)'でEUC-JPが'(?:\xA1\xA1)'ですから、文字列をシフトJISかEUC-JPに変換してから、 if ($name_I ~= '\x20'or $name_I ~= '(?:\xA1\xA1)') とやるのが良いかも。

参考URL:
http://www.din.or.jp/~ohzaki/perl.htm#Character
izaq
質問者

補足

Min_2さん 素早いご返事ありがとうございます。 ご指摘の通りに指示を入れたのですが、 サーバーエラー500がでてしまい。 うまく動作しませんでした。 ちなみに、cgiの文字変換はシフトJISでした。 なにが原因でしょう?

noname#225520
noname#225520
回答No.1

if ($name_I eq ' ')ではなく、 if ($name_I =~ ' ')ではないですか?

参考URL:
http://tohoho.wakusei.ne.jp/wwwperl1.htm#CompStrOperand

関連するQ&A