警告を出さないコードの書き方

このQ&Aのポイント
  • PHP5.3でNoticeエラーが出るコードを修正する方法
  • 修正方法についての説明とコードの一部
  • エラー処理を行う方法についての解説
回答を見る
  • ベストアンサー

警告を出さないコードの書き方

こんにちは、php5.3で Notice [PHP]: Use of undefined constant viewid - assumed 'viewid' in file ~~~~~~ と警告が出るため、出ないようにコードを書き換えているのですが 原因の場所が下記コードの$age = mb_convert_kana($row[viewid],'n','UTF-8'); の部分でして、 function引数の$rowに$_POSTをそのまま渡しているだけなのですが エラーを出さなくする方法ってありますでしょうか? public function indexaddcheak ($row,$msg){  //半角文字に変換  $age = mb_convert_kana($row[viewid],'n','UTF-8');  if(!is_numeric($age)){     エラー処理  }

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

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>引数の$rowに$_POSTをそのまま渡している ということは$rowは配列ですよね。$row[viewid]ではなく、普通は$row['viewid'](もしくは変数$viewidに値が代入されていれば$row[$viewid])と書きますが・・・・ 変数($viewid)でもリテラル('vireid')でもなく定数(viewid)で書くということは、どこかでviewidという定数を定義(define)していますか? #していないから警告が出ているのだとは思いますが(汗

関連するQ&A

  • PHPで受ける文字コードは何に依存する?

     例えばmb_convert_encoding()で変換するとき、元の文字コードは何に依存されるのでしょうか?  フォームで送る場合は、フォームページのHTMLのでmetaタグに指定されている文字コードになるんでしょうか?  charset=utf-8とmetaタグで指定されている場合、PHPのmb_convert_encoding()で受け取るときの変換前の文字コードはutf-8?  データをutf-8で扱いたいとき、フォームページをcharset=utf-8で作っておけば、mb_convert_encoding()でわざわざutf-8に変換するようにしておかなくても大丈夫ですか?

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

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

    • ベストアンサー
    • PHP
  • 文字コード変換

    PHP4.4を使っています。 プログラム中の文字列変数値「標の鷹」から、 http://xxx.cgi?prm=%95W%82%CC%91%E9 という文字列(リンク)を生成したいのですが、 http://xxx.cgi?prm=�W�̑� のようになってしまいます。 ソースは以下の通りです。 $img_url = "http://xxx.cgi?prm=".$row[0]; mb_detect_order("ASCII, JIS, UTF-8, eucJP-win, EUC-JP, SJIS-win, SJIS"); $enc = mb_detect_encoding($row[0]); // この時点で$row[0]=「標の鷹」 if ( ($enc != "ASCII") && ($enc != "JIS") && ($enc != "UTF-8") && ($enc != "eucJP-win") && ($enc != "EUC-JP") && ($enc != "SJIS-win") && ($enc != "SJIS") ) {   echo "未知の文字コードが入力されました。<br />\n";   exit; } $url = mb_convert_encoding($url,"SJIS",$enc); echo "url = ".$img_url."; ※ちなみに、このコードが書いてあるphpファイルはutf8です。

    • ベストアンサー
    • PHP
  • 文字コード変換

    初心者で、どう質問をすれば理解してもらえるか分かりませんが、 文字コードを出力先に合わせて "EUC-JP"と変換していのですがうまい事いきません。 <?php $str = "あああ"; $str = mb_convert_encoding($str, "EUC-JP", "auto"); echo $str; ?> というふうに書いても Fatal error: Call to undefinde function mb_convert_encoding() と出てきて、エラーがおきてしまいます。 ちなみにMS-DOSを使用してます 答えれる事は何でも答えますので何か、ほかに方法があれば教えてください。 お願いします。

    • 締切済み
    • PHP
  • PHPで変数の文字コードをまとめて変えたい

    初めまして、 PHPで変数 $a1から$a100 に入っている文字コードをまとめて変更したいのですが可能でしょうか? $a1 = mb_convert_encoding($a1, "SJIS", "auto"); $a2 = mb_convert_encoding($a2, "SJIS", "auto"); 上記のように$a1から$a100まで入力するしかないのでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 携帯のCookie…

    今、携帯サイトをつくっているのですが… エラーで大変困っております。携帯のCookieが問題ではないかと思っているのですが、何卒アドバイスをお願い致します。 ■症状 ローカル環境では問題なく動いていたのに、実際の携帯(PHPのバージョン5.25、動作確認はauとソフトバンクの最近の機種、おそらくCookieが使える)でテストすると… 年齢入力→送信ボタンを押す→(少しサーバが動いた後)→入力が消えてもう一度同じページに→めげずにもう一度入力送信→今度はうまく行って次のページへ。 ■コードの大まかな流れ 年齢をテキストで入力してもらい、フォームでPOST送信、action=PHPSELFで一旦戻り、送信ボタン(Submit値)を押していれば、入力にエラーがないか確認、エラーがあれば表示、なければSessionで値を受け渡し、次ページへ。 ■実コード <?php //エラー処理 if (isset($_POST["submit"])) { if(isset($_POST["age"])) { $age = mb_convert_kana($_POST["age"], "a", "shift_jis"); $error = array(); if (is_numeric($age) == false) { $error[] = "年齢は数字で入力してください!"; } elseif ($age < 1 || $age > 120) { $error[] = "年齢は1~120才の範囲で入力してください!"; } if(!count($error)){ session_start(); $_SESSION['age'] = $age; header("Location: http://~.php"); exit; }} ?> <html> <head> 以下本文、フォーム

    • 締切済み
    • PHP
  • PHPの文字コード変換について

    PHPで mb_convert_encodingを用いて UTF-8で記述されたPHPスクリプトファイルの PHPファイル内の任意の文字列の文字コードを変換する場合、 $value = "文字列"; $str = mb_convert_encoding($value ,"UTF8","UTF8"); print $str; この場合、特に問題なく、変換がおこなわれます というか、意味のないで処理ではありますが。 次に $str = mb_convert_encoding($value,"EUC-JP","EUC-JP"); とした場合 うまく文字列の文字コードの変換がおこなわれず 出力内容は文字化けします。 次に $str = mb_convert_encoding($value,"SJIS","SJIS"); とした場合 EUC-JPと同じく文字コード変換に失敗し 文字化けするだろうとおもいましたが おもいのほかブラウザの文字コードUTF-8のままで文字化けしていないのです。 これはどういう現象でしょうか? たとえば一つ目は UTF8で記述されたPHPファイルの文字列をそのままUTF-8として 変換されせるのですから、問題ないはずです。結果問題ありません。 二つ目は UTF-8でかかれたPHPファイルの文字列をEUC-JPでかかれたファイルとして EUC-JPという文字コードに変換しなさいという命令ですよね? これは思う通りにいかなくて文字化けした文字列が出力されるのはわかるのですが 三つ目はUTF8で記述された文字列をSHIFT-JISとしてSHIFT-JISに変換しようとしているにも かかわらず、結果問題なくブラウザのUTF-8で文字列と表示されてしまいます。 これはいったいどういう事なのでしょうか? これが仮に $str = mb_convert_encoding($value,"SJIS","UTF-8"); なら話は簡単んです。 UTF-8で記述されたファイルの任意の文字列を UTF8からSJISに変換しようとしているのですから問題なく SHIFT-JISでエンコーディングされた文字列が帰ってくるはずです。 こ乃原因をご存知のかたよろしくご教授ください。 お願い致します。

    • ベストアンサー
    • PHP
  • phpでmb_convert_kanaについて教えてください。

    phpでmb_convert_kanaについて教えてください。 「半角」-「全角」変換を行っていましたが、現在文字化けしてしまいます。 PHP5ではmb_convert_kanaの使い方が変わったのでしょうか?

    • ベストアンサー
    • PHP
  • phpメールフォーム マック入力のみ文字化け

    phpにて自動返信付きメールフォームをUTF-8で別の方が作ったものを自分で修正中です。 サーバーはOCNのホスティングです。 入力環境がMacの人だと入ってくるメールが文字化けを起こしております。 送信に以下のコードを入れているんですが、これでは問題がありますでしょうか? windowsでは問題がありません。 ISO-2022-JPはwindowsもmacも問題がないということだと思ったのですが これが効いていないということになるのでしょうか? 勉強中の身でわからず、教えていただけますと幸いです。 よろしくお願いいたします。 <?php $name = Mb_Convert_Kana($_POST['name'],"S"); $name2 = Mb_Convert_Kana($_POST['name2'],"S"); $name3 = Mb_Convert_Kana($_POST['name3'],"S"); $yubin = Mb_Convert_Kana($_POST['yubin'],"a"); $jyusyo = Mb_Convert_Kana($_POST['jyusyo'],"S"); $tel = Mb_Convert_Kana($_POST['tel'],"a"); $mail = Mb_Convert_Kana($_POST['mail'],"a"); $comment = Mb_Convert_Kana($_POST["comment"],"S"); $comment = str_replace(" ","\n",$comment); //文字列の置換 //メール送信 $fp = popen("/usr/local/bin/nkf -e -m0 | /usr/sbin/sendmail -oi -t", "w"); fwrite($fp, "From: $mail\n"); fwrite($fp, "To: info@amano-grp.co.jp\n"); fwrite($fp, "Subject: " . mb_encode_mimeheader('お問い合わせフォームの内容', 'ISO-2022-JP') . "\n"); //fwrite($fp, "Subject: お問い合わせフォームの内容\n"); fwrite($fp, "Mime-Version: 1.0\n"); fwrite($fp, "Content-Type: text/plain; charset=ISO-2022-JP\n\n"); fwrite($fp, "以下の内容で、メールフォームでのお問い合わせがありました。\n\n"); fwrite($fp, "団体名・法人名: $name\n\n"); fwrite($fp, "所属: $name2\n\n"); fwrite($fp, "お名前: $name3\n\n"); fwrite($fp, "郵便番号: $yubin\n\n"); fwrite($fp, "住所: $jyusyo\n\n"); fwrite($fp, "電話番号: $tel\n\n"); fwrite($fp, "メール: $mail\n\n"); fwrite($fp, "お問い合わせ内容:\n$comment\n\n"); pclose($fp);

    • ベストアンサー
    • PHP
  • 文字コードを検出し、ほかのコードに変更するスクリプトについて

    ある取得した文字をUTF-8に変更したいと考えています。 もともと取得している文字のエンコードをmb_detect_encodingで確認したところ、ASCIIでした。どのような文字コードでも、可能な限り対応できるよう以下のスクリプトを作成してみました。 $str = mb_convert_encoding($str, "UTF-8", "mb_detect_encoding($str)"); しかしスクリプトの後に、print mb_detect_encoding($str) で確認したところASCIIのままで、変更することができませんでした。 エラーなどはありません。 PHP初心者のため、原因やミスなどがわかりません 皆様のご指導をいただければと存じます。よろしくお願いいたします。

    • 締切済み
    • PHP

専門家に質問してみよう