• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Warning: mb_strpos(): Unknown encoding or conversion error について)

フォームから入力した文字を変換してひらがなチェックを行う際にエラーが発生する

このQ&Aのポイント
  • フォームから入力した文字を変換する際にエラーが発生し、ひらがなチェックができない問題が発生しています。
  • 特定の環境(MAC IE5.0 Fireworksなど)でmb_substr()関数がエラーを引き起こしています。
  • PHPのバージョンが4.4.2であることも分かっています。対処方法を教えていただけると助かります。

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

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.1

> ($sAllowedChars, "SJIS"); この行が宙に浮いてしまっていて、何をしているのか よくわからないのですけれど…。 正しく動いているスクリプトを貼り付けていますか?

sugibomb
質問者

お礼

ありがとうございました。 内部エンコードの不一致が原因でした。 比較部分のスクリプトを変更することで解決しました。 if($val["kana_mei"] != ''){ mb_regex_encoding("SJIS"); if (!mb_ereg("^[あ-ん ]+$", $val["kana_mei"])) { $err_msg["kana_mei"] = "※ひらがなでご記入ください。<BR>"; } }

sugibomb
質問者

補足

余計な文字が入ってしまいました。 御指摘の部分は、コメントアウトしています。 消し忘れていました。 宜しくお願いします。

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

mb_strposで第三引数と第四引数を省略されていますが、 内部文字エンコーディングと、実際に使っているエンコーディングとの つじつまは合っているのでしょうか? 警告のメッセージ内容からすると、エンコーディングに絡んだ 問題のような気がするのですが…

sugibomb
質問者

お礼

別サーバーに移行して確認するとエラーが解消されました。 PHP.iniのエンコード設定が原因と思います。 エラーを起こしたサーバーのルート権限を持っていない為 確認が出来ませんでしたが、解決しました。 ありがとうございました。

  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.2

連想配列$myvalueと$valは別物ですか?それとも、実際は同一ですか? この際ですから、スクリプトの全容をコピー&ペーストしてくださると、 どんなことをなさりたいかが万人に正しく伝わるように思います。

sugibomb
質問者

お礼

ありがとうございました。 内部エンコードの不一致が原因でした。 比較部分を if($val["kana_mei"] != ''){ mb_regex_encoding("SJIS"); if (!mb_ereg("^[あ-ん ]+$", $val["kana_mei"])) { $err_msg["kana_mei"] = "※ひらがなでご記入ください。<BR>"; } } と変更することで解決できました。

sugibomb
質問者

補足

スクリプトは、以下の通りです。 <?php Session_Start(); require_once( './path.inc'); require_once("./inc/include.inc"); require_once("./view/recruit.inc"); $chk = 0; if($_POST["isPost"]=="1"){ // get value $_SESSION["message_val"] = get_myinput(); //check $err_msg = check_myinput( $_SESSION["message_val"]); if(!$err_msg) { //redirect to confirm page print "<script language='javascript'>document.location.href='recruit_check.php'</script>"; exit; } } display_body($_SESSION["message_val"], $err_msg); function get_myinput() { $myvalue["kana_mei"] = mb_convert_encoding($_POST["kana_mei"], "SJIS"); return $myvalue; } //*****************check form valid******************* function check_myinput($val){ $chk = 0; $tmpmsg=checkinput($val["kana_mei"],"ご氏名(かな)をご記入ください。", 1); if($tmpmsg){ $err_msg["kana_mei"] = "※空欄です。"; } $sStr = $val["kana_mei"]; $sAllowedChars ="あいうえおぁぃぅぇぉかきくけこがぎぐげごさしすせそざじずぜぞたちつってとだぢづでどはひふへほばびぶべぼぱぴぷぺぽまみむめもなにぬねのらりるれろやゆよゃゅょわをんー "; ($sAllowedChars, "SJIS"); If(mb_strlen($sStr) > 0 ) { for ($i=0;$i<mb_strlen($sStr);$i++) { $sStr1= mb_substr($sStr,$i,1); if(!is_integer(mb_strpos($sAllowedChars,$sStr1))) { $err_msg["kana_mei"] = "※ひらがなでご記入ください。"; } } } return $err_msg; ?> 宜しくお願いします。

関連するQ&A

専門家に質問してみよう