- ベストアンサー
入力フォームに全角・半角スペースがある場合
入力フォームに全角・半角スペースがある場合に、 データを受け取ったCGIのほうで、エラーメッセージを出そうとおもうのですが、 if ($name_l eq ' ' or $name_l eq ' '){ $errMsg .= ',Name'; $errNum++; $e_name_l = 1; } 上記のやり方だと、複数フォームにスペースが入力された時に、エラーの指事がでないのです。 どなたかご教授お願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
すみません、'~='ではなく、'=~'でしたね。 S-JISによる検索は確かにどうもうまくいかないケースが多いようです。jcode.pl等で一度EUC-JPへ変換すればうまく行くはずです。
その他の回答 (3)
- ikspiari
- ベストアンサー率48% (29/60)
if ( $name_l =~ /\x81\x40+|\S+/ ) { ... で、どうでしょうか? 動作確認はしておりません。 # SJISの正規表現はあまり思わしくないんですよね・・・。
さらに半角スペースの正規表現は'\x20'、全角スペースは シフトJISが'(?:\x81\x40)'でEUC-JPが'(?:\xA1\xA1)'ですから、文字列をシフトJISかEUC-JPに変換してから、 if ($name_I ~= '\x20'or $name_I ~= '(?:\xA1\xA1)') とやるのが良いかも。
補足
Min_2さん 素早いご返事ありがとうございます。 ご指摘の通りに指示を入れたのですが、 サーバーエラー500がでてしまい。 うまく動作しませんでした。 ちなみに、cgiの文字変換はシフトJISでした。 なにが原因でしょう?
if ($name_I eq ' ')ではなく、 if ($name_I =~ ' ')ではないですか?
お礼
有難うございました。 教えていただいた。perlメモを参考にして、 解決することができました。