• ベストアンサー

半角カタカナの入力チェックを作りたいです

入力フォームで入力された文字に対して半角カタカナかチェックをしたいです。 function CheckHalfSizeKatakana($str) {  if (mb_ereg("^[ア-ン゛゜]+$",$str)) {    return true;  } else {    return false;  } } としたのですがうまくいきません。 PHP4です。

  • PHP
  • 回答数1
  • ありがとう数0

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

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

半角カナの文字クラスは [ア-ン]ではなく、 [ヲ-゜]だそうです。 誰が決めたか知りませんが、決まっていることなのでしょうがないですね。 句読点も加える場合は [。-゜] と言うことになるのですかね。 リンク Wikipedia http://ja.wikipedia.org/wiki/%E5%8D%8A%E8%A7%92%E3%82%AB%E3%83%8A

関連するQ&A

  • 正規表現

    function CheckHalfSizeKatakana($str) { $str= mb_trim(trim($str)); $pat = "^[ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲン?゛゜ゝゞー-・]+$"; if (mb_ereg_match($pat, $str)) { return true; } else { return false; } } このようにして半角カタカナをチェックしようと考えています。間違っているでしょうか?教えてください。

    • ベストアンサー
    • PHP
  • 全角カタカナ入力チェック

    PHP5 SJIS 環境 入力した文字列を全角カタカナか調べています。 mb_ereg("^[ア-ン]+$",$str) だけで確認すると『ヴ』や『ァ』の文字がカタカナとして 判断してくれません。 よい方法あれば教えて下さい。

    • ベストアンサー
    • PHP
  • 電話番号の入力チェック

    ハイフン付きの電話番号のチェックをしようとしています。いろいろ調べていますがうまくいきません。5桁までの半角数字-5桁までの半角数字-5桁までの半角数字という書式のチェックを考えています。 if (ereg("^[0-9]{1,5}-?[0-9]{1,5}-?[0-9]{1,5}$", $str )) { return true; } else { return false; } で中途半端になってチェックされます。 間違っているのか?他に書き方があるのか?教えてください。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 半角カタカナ2文字を入力すると

    教えてください。 フォームから受け取って、下記の、処理をしています。 「半角カタカナ2文字を入力」すると、下記の現象になります。 この場合どのようにするのか、誰か教えてください。 [プログラム] $str = mb_convert_kana($str, "KVC"); $str = mb_convert_encoding($str,"SJIS","auto"); echo $str; [例] 1文字の場合 : 半角 ス → ス 2文字の場合 : 半角 スシ → 充 3文字の場合 : 半角 スシス → スシス

    • ベストアンサー
    • PHP
  • カタカナの文字列を検出する関数

    function iskanamoji($str) { $str=mb_convert_kana(mb_convert_kana($str,"KV"),"A"); if(mbereg('^([ァ-ヶ]|[ー])*$',$str))return true; return false; } を作りましたがUTFー8で機能しません。 どのように直したらよいでしょうか?

    • ベストアンサー
    • PHP
  • 半角英数字のみの入力にエラーを返すには

    運営しているサイトに設置したコメントフォームからスパムがたくさん送信されてきます。 その対策として、「氏名のよみがな」入力欄が半角英数字のみの入力の場合にはアラートを出して投稿できないようにしたいです。 下記のようなJSを使用していますが、 if (!kana) { alert('氏名のよみがなを入力してください。'); return false; } の部分を変更して「半角英数字しか入力されていない場合、アラートを返す」ようにするには、どうしたら良いでしょうか? htmlの文字コードはShift_JISです。 よろしくお願いします。 function postComment { var name = eval('document.name.value'); var kana = eval('document.kana.value'); var email = eval('document.email.value'); var comment = eval('document.comment.value'); sum++; if (!name) { alert('氏名を入力してください。'); return false; } else { if (!kana) { alert('氏名のよみがなを入力してください。'); return false; } else { if (!email) { alert('メールアドレスを入力してください。'); return false; } else { if (!comment) { alert('コメントを入力してください。'); return false; } else { var confirm_text = '以下の内容で送信します\n' + 氏名:' + name + '\n よみがな:' + kana + '\n メール:' + email + '\n 本文:' + comment; if (!confirm(confirm_text)) { return false; } else { alert('コメントを送信しました。'); } } } } } }

  • 「checkText3」が処理されない

    とあるHOWTO本を見ながら、独学でPHPを勉強中です。 サンプルプログラムを動作させようとマニュアル通りに記述してみたのですが、一部分だけが上手く処理されません。 付属CDに収められているphpファイル自体がこのような記述になっている為、マニュアル自体に間違いがあるのかな?と思うのですが、 どこがおかしいのか解らずにいます。 お分かりになる方がいれば、ご教授願えませんでしょうか? 上手く処理されないのは「//テキストチェック3.バイバイされたらバイバイを返す」の部分です。 よろしくお願い致します<(_ _)> <?php $res = ""; if(isset($_POST['text1']) == false) {$res = getAisatsu();} else{$text1 = $_POST['text1']; if($text1 == "") {$res = "え? なんていったの?";} else{$flag =false; //まずcheckTextであいさつ文をチェック $str = checkText($text1); if($str != false) {$flag = true; $res = $str; } //続いてcheckText2で悪口の対応 if($flag == false) {$str = checkText2($text1); if($str != false) {$flag = true; $res = $str; } } //最後にcheckText3でさよならの対応 if($flag == false) {$srt = checkText3($text1); if($str != false) {$flag = true; $res = $str; } } //すべてダメならテキストを分解してチェック if($flag == false) {$arr = bunkatsu($text1); foreach($arr as $str) {if(getWordCheck($str) == true) {$flag = true; $res = $str . "って、なぁに?"; break; } } } //それでもダメなら全文で聞き返す if($flag == false) {$res = delTouten($text1) . "って、なぁに?";} } } //時間によって異なるあいさつ文を返す function getAisatsu(){ $arr = array('……ね、眠い','おはよう!','こんにちは~','こんばんわ',); $d = getdate(); $t = $d['hours']; $t2 = (int)($t / 6); return $arr[$t2]; } //テキストチェック。あいさつ文があれば対応する挨拶を返す function checkText($s){ if($s == ""){return false;} $res = false; $data = array('こんにちは','こんにちわ','こんちは','こんちわ'); foreach($data as $str) {if (mb_strpos($s,$str) !== false) {$res = 'どうも、' . $str . '!'; break; } } return $res; } //テキストチェック2.悪口が書かれていたら文句をいう function checkText2($s) {if ($s ==""){return false;} $res = false; $data = array('バカ','馬鹿','あほ','アホ','阿呆'); foreach($data as $str) {if(mb_strpos($s,$str) !== false) {$res =$str . 'じゃないもん!'; break; } } return $res; } //テキストチェック3.バイバイされたらバイバイを返す function checkText3($s) {if ($s == ""){return false;} $res = false; $data = array('ばいばい','バイバイ','じゃあね'); foreach($data as $str) {if(mb_strpos($s,$str) !== false) {$res = 'それじゃ' . $str . '!'; break; } } return $res; } //句読点を削除する function delTouten($s) {$res = str_replace('。','',$s); $res = str_replace('?','',$res); $res = str_replace('!','',$res); $res = str_replace('.','',$s); $res = str_replace('?','',$res); $res = str_replace('!','',$res); return $res; } //テキストを句読点で分割し、配列として返す function bunkatsu($s) {mb_regex_encoding("sjis"); $res = mb_ereg_replace('[。、?!,.!?]','',$s); $arr = mb_split(' ',$res); return $arr; } //主語や接続詞が含まれているかを調べる function getWordCheck($s) {if ($s == ""){return false;} $res = $s; $data = array('私','わたし','僕','ぼく','俺','おれ','オレ'); foreach($data as $str) {if(mb_strpos($s,$str) !== false) {$res = false; break; } } return $res; } //サニタライズ function getSeftyText($s) {$res = str_replace("<","<",$s); $res = str_replace(">",">",$res); return $res; } ?>

    • ベストアンサー
    • PHP
  • 入力チェックをしたいです。

    結構初心者です。 フォームに入力された内容をチェックしたいので、まず下記のように書きました。 <script Language="JavaScript"> <!-- function submitCheck(){ var flag = 0; // 設定開始(必須にする項目を設定します) if(document.insert.MatterID.value == ""){ flag = 1; } else if(document.insert.name.value == ""){ flag = 1; } else if(document.insert.Correspondencedate.value == ""){ flag = 1; } if(flag){ window.alert('必須項目に未入力があります。'); // チェックされていない場合は警告ダイアログを表示 return false; // 送信を中止 } else{ return true; // 送信を実行 } } --> </script> で、これにチェックボックスの入力チェックも含めたいのですが、ただ else if(document.insert.bld_ReceiptNo.checked){ flag = 1; } こうするだけではダメなのですね;; どうすればいいかお知恵を拝借できませんでしょうか。

  • 一括で入力のチェックをしたいのです!

    どなたか教えてください・・・ フツー入力チェックを行う場合 <SCRIPT language="JavaScript"> <!-- function Check(){ if(document.myform.Name.value==""){ alert("名前を入力してください。"); return false; } if(document.myform.Email.value==""){ alert("Eメールアドレスを入力してください。"); return false; } if(document.myform.Email.value.indexOf("@")<=0){ alert("Eメールアドレスが正しくありません。"); return false; } if(document.myform.Comment.value==""){ alert("コメントを入力してください。"); return false; } return true; } // --> </SCRIPT> こんなカンジで各フォーム毎にチェックを行い メッセージを出したりすると思うのですが、 フォーム数が多いため、入力のチェックを 一括で行いたいのですが・・・ JavaScriptを始めて間もないため とんちんかんな質問をしている様でしたら すみません。 どなたか入力チェックを一括で出来る方法を 教えて頂けないでしょうか・・・ お願いします。

  • javaScriptでアラート設定を教えてください。

    現在入力フォームを作成しておりますが、どうしても設定できない部分がありますので、教えてください。 下記のようなスクリプトを記述していますが、「ナンバー」のエラー表示部分に、半角数字3桁のみの入力設定を行いたいです。 それ以外を入力するとエラーが表示されるように設定を行いたいです。 宜しくお願い致します。 <script> function WriterCheck() { var str = document.dataInputForm.name.value; if( str.match( /[^A-Za-z\s.-]+/ ) ) { alert("名前は、半角英文字のみで入力して下さい。"); return false; } return true; } function CheckForm(dataInputForm) { var FormOK = false; if (dataInputForm.no.value == "") { FieldControl(dataInputForm.To, "ナンバーが未入力です。"); }else if (dataInputForm.title.value == "") { FieldControl(dataInputForm.To, "タイトル名が未入力です。"); }else if (dataInputForm.name.value == "") { FieldControl(dataInputForm.To, "名前が未入力です。"); }else { FormOK = true; } return FormOK; } function FieldControl(element, message) { alert(message); } </script>

専門家に質問してみよう