• 締切済み

2バイト文字のスペースをあるかチェックしたい

フォームcgiからの内容に2バイトのスペース(空白)「 」が入っているかのチェックをしたいのですが うまくいきません。 &amp;emsp;を入れてみたのですが、違うようでした。 (ここから) if($in{'comment'} !~ /(&amp;emsp;)/){ $error_msg .= "愛犬の好きな食材を2つの間が全角スペースではありません。<br>"; } (ここまで) これ以上手詰まりとなってしまいました。

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

みんなの回答

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.2

No.1 です。 use utf8; とか、 use encoding(○×△); とかがあるか無いか、あるならその内容も教えてくださいね。

hihin2003
質問者

お礼

回答ありがとうございました。 以下の内容で対応が出来ました。 $in{'spam'} !~ / /; 以下の内容でも対応が出来ました。 $in{'spam'} !~ /(?:\x81\x40)/; とりあえず解決できたことを連絡いたします。 本当にありがとうございました。

hihin2003
質問者

補足

連絡ありがとうございます。 use utf8; use encoding(○×△); はperlの記述にありません。 jcode.plは使用しています。 そっちも確認した方がよいでしょうか?

  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.1

こういう質問をされると言うのは、ベタの全角スペースでうまく行かなかったからですね? 入力データとソースコードの文字コードの関係をうまく処理すればできるはずです。 utf8 とか encoding とかの use 状況によって正解が変るので、それを教えてください。 それから、$in{'comment'} と Perlソースの文字コードも教えてください。 # &amp;emsp; って、Perlの文法にはそんなの無いと思います。 HTMLと混同されてませんか?

hihin2003
質問者

補足

回答ありがとうございます。 以下の内容でよろしいでしょうか? 入力データ $in{'comment'}について htmlのファイルはshift-jisになります。 他に確認する方法がございますでしょうか? ソースコード Perlソースについて shift-jisになります。 これで、よろしいでしょうか? 質問の内容がよくわかっていないようでしたらご指摘ください。 ># &amp;emsp; って、Perlの文法にはそんなの無いと思います。 HTMLと混同されてませんか? そうですよね? 申し訳ございませんでした。 お手数かけます。 よろしくお願いいたします。

関連するQ&A

  • CGI(Perl)の文字化けについて

    WEBフォームからの入力データをHTMLに加工して表示するというシンプルなCGIプログラムなのですが、 全角スペースの後に全角カタカナが入ると、全角スペースの部分から後が文字化けしてしまいます。 他はきちんと表示されているのですが、全角スペースとカタカナが続いているのが良くないみたいで、文字化けしてしまうようです。 全角スペースを取ってしまえばいいのかと思い、WEBで検索して色々と試してみましたが、変わりません。。 このような場合はどういう対処をするのが一番いいのでしょうか。 文字コードはEUCを使っています。(WEBフォーム、CGIとも) 教えてください。よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • 入力フォームに全角・半角スペースがある場合

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

    • ベストアンサー
    • CGI
  • 改行が半角スペースに変わる

    phpのメールフォームからメールを送信するとtextareaの改行した箇所が 半角スペースになってしまいます。phpはUTF-8で改行コードはLFです。 送信前の確認画面までは改行された状態で見れるので送信時に改行が 消されてるのかと思うのですがいまいち原因がわからずです。。。 似たような質問が過去ログにもあったので参照しtextareaのnameがmsgなので nl2br($msg); を試してみたのですが改行にはなりませんでした。 どのようにしたら半角スペースではなく改行されるようになるでしょうか?

    • 締切済み
    • PHP
  • PerlのCGIで全角スペースを入れて

    PerlのCGIで全角スペースを入れて print <<HTML; <p>完了  ボタン  次へ<br> <input type="submit" value=" 完了 &gt; "></p> HTML 隙間をあけて見やすくするのに全角スペースを入れていますが ブラウザで表示したときに(charset=Shift_JIS") どんな時に文字化けするのか忘れたのですが どんな時に文字化けするのでしょうか?

    • ベストアンサー
    • CGI
  • ”ァー”が含まれている文字を置換すると文字化け

    OS:solaris8 perlのver:5.8.6 perlで、”ァー”が含まれている文字列に対し、 全角スペースを半角スペースに置換しようとすると 文字化けしてしまいます。 (”ぁー”でもどうようでした) ”ぃー”や”ぅー”、”ぁ”では 問題無いのですが…。 当方、perl初心者&文字コードに詳しくないため、 原因がよくわからないでいます。 どなたか原因をおわかりの方、 ご教授お願いいたします。 文字コードはEUCです。 以下はソースです my $line = "ファイヴァー スコープ 眼鏡"; $line =~ s/\t/ /g; # タブを半角スペースに置換する print '$line2='.$line."<br>\n"; $line =~ s/ / /g; # 全角スペースを半角スペースに置換する print '$line3='.$line."<br>\n"; #↑ここで文字化けしてしまいます $line =~ s/^\s+//; # 頭の空白を除く print '$line4='.$line."<br>\n"; $line =~ s/\s+$//; # 尻の空白を除く print '$line5='.$line."<br>\n";

    • ベストアンサー
    • Perl
  • 入力フォームでの半角全角スペース、タブをそのまま反映したい。

    入力フォームに入力した半角スペース全角スペース 、タブをそのまま反映させて、 フォーム入力とほぼ同じ形で、Web上に表示させたい のですが。 単純に置き換えるだけですが、\r\nを<br>には 置き換えています。 スペースがよく分かりません。 また、タブは、入力フォームに入力できないのでしょ うか(フォームを移動してしまう)。 ちなみに、文字コードは、Shift_JISです。 単純に、Shift_JISだと、スペースはこうだから、 こういったタグに置き換える、といった感じが、 ありがたいです。

    • ベストアンサー
    • CGI
  • スペースの削除ができません

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

    • ベストアンサー
    • Perl
  • この関数は外部jsから起動できますか?

    コメントを打ち込む所=comment 送信のボタン=b_send function send(){clear_fnc_validator('div_msg');var msg=$('#comment').val();if(msg!=""){var check_msg=replaceAll(msg," ","");check_msg=replaceAll(check_msg,"縲€","");if(check_msg==""){fnc_validator('comment','comment_err','遨コ逋ス縺�縺代�謚慕ィソ縺ッ縺ァ縺阪∪縺帙s');return}if(!validator.isLength(msg,1,4000)){fnc_validator('comment','comment_err','蜈・蜉帶枚蟄玲焚縺碁聞縺吶℃縺セ縺�');return}msg=trim_space(msg,max_br);if(msg==false){fnc_validator('comment','comment_err','蜈・蜉帶ャ�′遨コ逋ス縺ァ縺�');return}}else{if(!img_src2){fnc_validator('comment','comment_err','蜈・蜉帶ャ�′遨コ谺�〒縺�');return}}if(img_src2){var imgStructure=img_src2.split(',');if(imgStructure.length==2){var str=imgStructure[0];str=str.replace("data:image/","");str=str.replace(";base64","");if(str=="jpeg"||str=="png"||str=="gif"){}else{alert('豺サ莉倡判蜒上お繝ゥ繝シ縲ら判蜒上�縲)pg縲}ng縲“if縺ョ縺ソ豺サ莉倥@縺ヲ縺上□縺輔>縲�');return}}else{alert('豺サ莉倡判蜒上お繝ゥ繝シ縲る∈謚槭&繧後◆逕サ蜒上r縺皮「コ隱阪¥縺�縺輔>');return}} この関数 sendを外部jsから起動したいのですが、どうすればいいのでしょうか。 ちなみにファイルの編集などはできません。

  • 正規表現で全角スペースと誤認

    OS:solaris8 perlのver:5.8.6 perlで、”食器洗い乾燥機|0”という文字列に対し、 空白文字(半角スペース、タブ、改行、全角スペース) が含まれているかを検査しているのですが、 空白文字有りとなってしまいます。 恐らく文字コードの問題だと思うのですが、 詳しくないため、解決方法が分からないでいます。 どのようにしたら解決できるでしょうか? require "jcode.pl"; としているので、jcodeのモジュールで 解決できないでしょうか? 文字コードはEUCです。 以下はソースです。 # 空白文字(半角スペース、タブ、改行、全角スペース)が #入力されていないかチェック $data = "食器洗い乾燥機|0"; if ($data =~ /\s|(?:\xA1\xA1)/) { #含まれている場合 } よろしくお願いします。

    • ベストアンサー
    • Perl
  • AccessVBAでサブフォームの値チェック

    こんにちは。前々回http://okwave.jp/qa/q6556906.htmlにて 質問させて頂いたサブフォームの値チェックをする際のVBAの記述で 教えて頂きたい事ができましたので、質問させて頂きます。 Accessのバージョンは2003です。 以下のようなVBAを記述しているのですが、一度VBAでの処理を実行すると フォームを一度閉じてから再度フォームを開くと該当フィールドの色が 元に戻らず黄色又はマゼンダのままとなってしまっています… 別のAccessにて動作確認した際は、再度フォームを開いてもフィールドの 色は元のままだったのですが… どこが原因なのか教えていただければ幸いです。 長文で見辛いですが宜しくお願いします。 Dim stDocName As String Dim stLinkCriteria As String 'フォーム上のコントロールを格納する変数 Dim ctrl As Control Dim msg As String 'フォーム上のすべてのコントロールに対しての繰り返し処理 For Each ctrl In Me.Controls '取得したコントロールがテキストボックスかどうか If ctrl.ControlType = acTextBox Then 'Aの値が15.5未満の場合 If Forms![F_親フォーム].[F_サブフォーム].Form.[A] <= 15.5 Then '背景をピンクに Forms![F_親フォーム].[F_サブフォーム].Form.[A].BackColor = vbMagenta Else '背景を黄色に Forms![F_親フォーム].[F_サブフォーム].Form.[A].BackColor = vbYellow End If 'Bの値が45未満の場合 If Forms![F_親フォーム].[F_サブフォーム].Form.[B] <= 45 Then '背景をピンクに Forms![F_親フォーム].[F_サブフォーム].Form.[B].BackColor = vbMagenta Else '背景を黄色に Forms![F_親フォーム].[F_サブフォーム].Form.[B].BackColor = vbYellow End If End If Next ctrl Me.Undo 'フォーム上のすべてのコントロールに対しての繰り返し処理 For Each ctrl In Forms![F_親フォーム].[F_サブフォーム].Form.Controls 'テキストボックスのコントロールを取得 If TypeOf ctrl Is TextBox Then '取得したコントロールが黄色だった場合 If ctrl.BackColor = vbYellow Then 'msgにテキストボックスの名前を追加 msg = msg & ctrl.Name & vbCrLf 'メッセージボックスに名前を表示 End If End If Next ctrl 'msgが空白じゃない場合 If msg <> "" Then 'メッセージボックスを表示 MsgBox msg Else 'ctrl.BackColor = vbWhite stDocName = "F_フォーム1" DoCmd.Close acForm, Me.Name DoCmd.OpenForm stDocName End If Exit_閉じる_Click: Exit Sub Err_閉じる_Click: MsgBox Err.Description Resume Exit_閉じる_Click End Sub

専門家に質問してみよう