アプリ版:「スタンプのみでお礼する」機能のリリースについて

フォームから入力した文字を
$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です。
何方か、対処方法、教えて下さい。
宜しくお願いします。

A 回答 (3件)

> ($sAllowedChars, "SJIS");



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

この回答への補足

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

補足日時:2007/04/26 15:09
    • good
    • 0
この回答へのお礼

ありがとうございました。
内部エンコードの不一致が原因でした。
比較部分のスクリプトを変更することで解決しました。

if($val["kana_mei"] != ''){
mb_regex_encoding("SJIS");
if (!mb_ereg("^[あ-ん ]+$", $val["kana_mei"])) {
$err_msg["kana_mei"] = "※ひらがなでご記入ください。<BR>";
}
}

お礼日時:2007/05/11 08:31

mb_strposで第三引数と第四引数を省略されていますが、


内部文字エンコーディングと、実際に使っているエンコーディングとの
つじつまは合っているのでしょうか?

警告のメッセージ内容からすると、エンコーディングに絡んだ
問題のような気がするのですが…
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/05/02 14:21

連想配列$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;


?>
宜しくお願いします。

補足日時:2007/04/26 16:36
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/05/11 08:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!