- ベストアンサー
なぜ何も表示されないのか?
●質問の主旨 下記のコードを使って、 <b>てすと</b> と表示させたいのですが、 画面には何も表示されません?なぜでしょうか? 参考文献の通り、コードを打ち込み、 特にエラーが出ているわけではありません。 ご存知の方よろしくお願いします。 ●参考文献 西沢直木 PHPプログラミングの教科書P128 ●コード <?php function h($a) { return htmlspecialchars($a, ENT_QUOTES, "UTF-8"); } $a ="<b>てすと</b>"; $a = h($a); echo $a; ?>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>特にエラーが出ているわけではありません。 エラーメッセージが表示される環境でしょうか? 明らかにエラーになる記述をしてみてちゃんとエラーが表示されるか確認してください(もちろんphpinfo()で設定を確認してもいいです)。 なお提示されたソースにはエラーになる原因はありません。私の手元(Win7+xampp1.8.1)では問題なく動作します。 ちなみにソースをsjisで保存していると、htmlspecialcharsで指定している文字セットが違うので「何も返らない」ことにはなりますが、utf-8でないといけないことは自明ですからその点は大丈夫ですよね?
その他の回答 (2)
先ほどの回答は「書き足す」のではなく「書き換える」の意味で提示したのですがww 当然2回もh関数をdeclare出来るわけないですよね( 原因は文字コードの違いでしたか。 Eclipseについてはこれが参考になるかな? http://kaworu.jpn.org/kaworu/2009-01-10-1.php もちろんエンコーディングををUTF-8(正確にはUTF-8N)にするだけではなく、改行コードもCRLFからLFにしておいてくださいね。
お礼
To_aru_Userさま たびたびご回答ありがとうございます。 上記のURLで、 Preferences → General → Conent types Preferences → General → Workspace のそれぞれで文字化けを防ぐ方法を 試してみました。 しかしどちらの方法でも、 文字化けを起こしてしまいます。 もし他の方法をご存知でしたらご教示願います。 お忙しいところ恐れ入ります。
--PHP start-- <?php function h($input) { return htmlspecialchars($input, ENT_QUOTES, 'UTF-8'); } $a = '<b>てすと</b>'; $a = h($a); echo $a; ?> --PHP end-- 試しに上記で実行してみてください。 もしも「--PHP start--」だけが表示されるなら何らかのエラーが起こっています。 「--PHP start--」と「--PHP end--」が表示されるならPHPがインストールされていません。
お礼
To_aru_Userさま ご回答ありがとうございます。 回答:No.1でのご指摘により、 文字コードをUTF-8に変えた上で、 上記のコードを実行すると、 下記のエラーが表示されます。 \shopは私が任意で作ったフォルダです。 Fatal error: Cannot redeclare h() (previously declared in C:\xampp\htdocs\shop\test2.php:3)
お礼
agunuzさま いつもご回答ありがとうございます。 補足もご確認いただければ幸いです。
補足
〉ソースをsjisで保存していると、htmlspecialcharsで指定している文字セットが違うので「何も返らない」ことにはなりますが ファイルの文字コードを確認すると、 sjisでした。それをutf-8に変えると、、 <b>てすと</b>を表示できました。 ただし、eclipseの環境でテキストファイルの文字コード http://www.javadrive.jp/eclipse3/setup/index1.html に従って、文字コードをutf-8に変えて実行すると 文字化けしました。これはこんなものなのでしょうか? またeclipseの環境でデフォルトの状態では、 何も表示されませんでした。 >明らかにエラーになる記述をしてみてちゃんとエラーが表示されるか確認してください(もちろんphpinfo()で設定を確認してもいいです)。 他のPHPファイルで試したところ、エラー表示はされます。 ただphpinfo()で設定を確認する方法というのは、 よくわかりません。