
フォームから入力した文字を
$myvalue["kana_mei"] = mb_convert_encoding($_POST["kana_mei"], "SJIS");
でSJISに変換し、
$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"] = "※ひらがなでご記入ください。";
}
}
}
でひらがなチェックを行っています。
IE6.0 IE7.0 では、問題ないのですが、MAC IE5.0 Fireworksでは、
mb_substr()で”Warning: mb_strpos(): Unknown encoding or conversion error”となってしまいます。
PHPのバージョンは、4.4.2です。
何方か、対処方法、教えて下さい。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
> ($sAllowedChars, "SJIS");
この行が宙に浮いてしまっていて、何をしているのか
よくわからないのですけれど…。
正しく動いているスクリプトを貼り付けていますか?
ありがとうございました。
内部エンコードの不一致が原因でした。
比較部分のスクリプトを変更することで解決しました。
if($val["kana_mei"] != ''){
mb_regex_encoding("SJIS");
if (!mb_ereg("^[あ-ん ]+$", $val["kana_mei"])) {
$err_msg["kana_mei"] = "※ひらがなでご記入ください。<BR>";
}
}
No.3
- 回答日時:
mb_strposで第三引数と第四引数を省略されていますが、
内部文字エンコーディングと、実際に使っているエンコーディングとの
つじつまは合っているのでしょうか?
警告のメッセージ内容からすると、エンコーディングに絡んだ
問題のような気がするのですが…
別サーバーに移行して確認するとエラーが解消されました。
PHP.iniのエンコード設定が原因と思います。
エラーを起こしたサーバーのルート権限を持っていない為
確認が出来ませんでしたが、解決しました。
ありがとうございました。
No.2
- 回答日時:
連想配列$myvalueと$valは別物ですか?それとも、実際は同一ですか?
この際ですから、スクリプトの全容をコピー&ペーストしてくださると、
どんなことをなさりたいかが万人に正しく伝わるように思います。
この回答への補足
スクリプトは、以下の通りです。
<?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;
?>
宜しくお願いします。
ありがとうございました。
内部エンコードの不一致が原因でした。
比較部分を
if($val["kana_mei"] != ''){
mb_regex_encoding("SJIS");
if (!mb_ereg("^[あ-ん ]+$", $val["kana_mei"])) {
$err_msg["kana_mei"] = "※ひらがなでご記入ください。<BR>";
}
}
と変更することで解決できました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字化け変換方法
-
mb_ereg_replaceに関して
-
PHP cURLでPOSTした値が文字化...
-
PHP+Postgres 「髙」が文字化け
-
文字列を文字コードの数値に変...
-
mb_regex_encodingでエンコード...
-
multipart/form-dataの文字化け
-
VBAのコマンドボタンの文字列の...
-
Accessの文字数を調べたい
-
メッセージボックスで1025文字...
-
Nvuで作成したhtmlをコピペして...
-
VBAでCSVをExcelに取り込む時に...
-
エクセルのCOUNTIFが正しくカウ...
-
ラベル(スタティックテキスト)...
-
phpの正規表現でstyle="●●"を削...
-
マクロでセル内の改行を削除す...
-
バーコード入力と手入力の判断...
-
カンマの含まれる文字列の数値...
-
C++で空Enterの入力を判...
-
マクロで半角を全角に
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化け変換方法
-
SQL Serverで文字コードUTF-8
-
mb_convert_encoding で 一部の...
-
ファイルの文字コードを調べたい
-
mail()で送信したメールのタイ...
-
mb_strposについて予定外の結果...
-
小さいひらがな(っ、ょ、ぃ、ゃ...
-
PHP cURLでPOSTした値が文字化...
-
PostgreSQLからCSV形式でエクス...
-
PHPmailerでの添付ファイルの文...
-
phpMyAdmin内での文字化け
-
mb_send_mailで、半角スペース...
-
UTF8メールがLotus Notesで文字...
-
メールフォームが部分的に文字...
-
DOMDocumentの文字化けに悩まさ...
-
フォームメールの文字化け
-
mb_send_mailの2重投稿を防止し...
-
【追】「あ」→「82A0」のように...
-
SJISで取得した半角カナをUTF-8...
-
Gmailへのメール送信で文字化け
おすすめ情報