• ベストアンサー

PHPでincludeを使うと?が入る。

さらくインターネットのレンタルサーバを使用していますが、 index.phpに include('header.php'); を入れてヘッダー部分のHTMLの呼び出しを行なっていますが 表示されるソースを見ていると、includeで呼び出しているヘッダー部分の手前に「?」が 入ってしまいます。 include(dirname(__FILE__).'/header.php'); include($_SERVER['DOCUMENT_ROOT'] . "/header.php"); など使っても同じ現象のため、どうしたら「?」を無くすことができるでしょうか。

  • PHP
  • 回答数2
  • ありがとう数7

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

  • ベストアンサー
noname#244856
noname#244856
回答No.2

Wikipedia - BOM http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88%E3%82%AA%E3%83%BC%E3%83%80%E3%83%BC%E3%83%9E%E3%83%BC%E3%82%AF UTF-8文書には「BOM有り」と「BOM無し」があります。 ・BOM有り → 文字コードを特に明示しなくてもブラウザが正しく認識してくれることが多い。 → includeで読み込む側にもBOMが存在している場合、2つ目のBOMは「?」と化けて表示される。 ・BOM無し → 文字コードを明示しないと文字化けを起こすことが多い。 → includeで読み込むときに特に心配が要らない。 現在は「UTF-8(BOM有り)」になっていると思われますが、PHPスクリプトは全て「UTF-8(BOM無し)」で作成することが強く推奨されます。ただ、そのままだとブラウザが文字化けを起こすので、 "HTML出力を開始する前に" ←重要 header('Content-Type: text/html; charset=utf-8'); としてブラウザにUTF-8であると明示したContent-Typeヘッダーを送ったり、HTML中に (HTML5) <meta charset="utf-8"> (HTML4) <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> を含めるようにしましょう。どちらかといえばmetaタグには頼らずにheader関数で実現する方が望ましいです。

hairiki
質問者

お礼

返事が遅くなってしまい申し訳ありませんでしたが、ご教授しただいた通り文字コードで無事に解決することができ、ありがとうございました。 自分でも気をつけていたつもりでしたが、知識が浅く勉強になりましたが、基礎的な部分だったので反省し自分でも解決できるよう努力していきます。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

header.php の内容を正しく書き直す。

関連するQ&A

  • php インクルードincludeした時のパス

    phpにてincludeした時のパスで躓いています。 現在のツリーは以下の様になっています。 index.html common  ├header.html  ├footer.html  ├right.html  ├img   ├navi-home.jpg   ├navi-1.jpg  ├css   ├base.css salon  ├hair    ├kari     ├index.html     ├access     ├ ├index.html     ├menu     ├ ├index.html この中の../hair/kari/index.htmlの中に ../common/header.html及びfooter.htmlを <?php include_once(dirname(__FILE__).'/../../../common/header.html'); ?> にてインルードしています。(書き方あってます?dirname(__FILE__).いります?) つぎに../hair/kari/access/index.htmlの中にもインクルードします。 <?php include_once(dirname(__FILE__).'/../../../../common/header.html'); ?> という風に一つ下の階層なので../を付け足しました。 このようにページ毎にheaderまでの相対パスが違うので、そのページ毎にパスを書き換えていかなければいけないものなのでしょうか? また../始まりではなく/始まりでないと表示されません。 /始まりは絶対パスでしたっけ? この書き方は間違っているのでしょうか? そして最後に、 ../common/header.htmlの中の画像ファイルやリンクは <img src="/common/img/navi-home.jpg"> の様に書かないと、インクルードしたファイル側で表示されません。 これも同じように/始まりのこの書き方でいいのでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • php include がおかしい

    下記のようにヘッダーとフッターをincludeしたindex.php をみると firefoxでは正常ですが、IEではフッターしか表示されません。 <?php include 'header.php'; ?> <?php include 'footer.php'; ?> どうしてでしょうか?

    • ベストアンサー
    • PHP
  • php include がどうしてもできません;;

    php include がどうしてもできません;;; php、超がつく程初心者です; Windows7、Internet explorer9、Apache2.2、PHP5.4.6、現在はlocalhost上でphp動作確認、 作業しております。 サイトのメニューをPHPで作成したいと思い色々必死に調べ、htdocsフォルダ直下同士?のphpは何とか表示させることができました。(localhostですが) しかしhtdocsより下のフォルダに入っているものですと、例え同階層でも表示がされません; ↓のような感じで完全に詰まってしまいました; htdocs/index.html に htdocs/topmenu.php を表示させる↓ htdocs/index.html内で <?php include(dirname(__FILE__).'/topmenu.php'); ?> → 成功 htdocs/naiyou/naiyou1.html に htdocs/naiyou/menu.php を表示させる↓ htdocs/naiyou1.html 内で <?php include(dirname(__FILE__).'/menu.php'); ?> → 失敗 htdocs/naiyou/naiyou1.html に htdocs/topmenu.php を表示させる↓ htdocs/naiyou1.html 内で <?php include(dirname(__FILE__).'/../topmenu.php'); ?> → やっぱり失敗 htdocsフォルダ直下のみでしかできない設定に私がしてしまっているのでしょうか。 元々直下のみしか表示できないもの…? それとももっと基本的なところでひかかっているのかな… 何かのパスが間違っているのでしょうか。 htdocsフォルダの場所とDocumentRootは共に "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs" となっています; 知識不足もあり言葉が足りないこと、説明がよく分からないことも多いこともあるかと…すみません。 既出の質問等も探しているのですが同条件を中々見つけられず、もうかれこれ1ヶ月近く解決せず悩んでいます。 申し訳ありませんが、どなたかご教授ください...;

    • ベストアンサー
    • PHP
  • includeしたファイルで条件分け

    現状、Smartyみたいに、 テンプレートとファイルが分かれている状態となってます。 この中の、あるテンプレートから、 別のコンテンツで使っているヘッダーファイルを読み込んでみたのですが、 ヘッダーファイルで、設定しているはずの条件分岐部分がうまく反映されません。 ▽templates/global.tpl.php $templates['site_header'] = stripslashes(file_get_contents('/include/header.php')); ▽include/header.php このファイルの中で、 if($_SERVER['REQUEST_URI']=="/" || $_SERVER['REQUEST_URI']=="/index.html"){ と記述しているのですが、 ここの条件分岐が効きません。 テンプレートから、ファイルをincludeする際、 そのincludeした先のファイル内で、設定した制御構文の結果を、反映させるためには、どうすればよいでしょうか? ※この制御部分以外は、普通に読み込めてます

    • ベストアンサー
    • PHP
  • html側のアンカーから値をphpに渡してincludeで表示したいの

    html側のアンカーから値をphpに渡してincludeで表示したいのですがうまくいきません。 どなたか教えてください。 index.html -------------------------------------------- <html> <body> <a href="main.php?mode=kaisya">会社概要</a> </body> </html> ------------------------------------------- main.php ------------------------------------------ <? $mode = $_GET('mode'); include "header.html"; include "$mode.html"; onclude "footer.html"; ?> ----------------------------------------- ↑でうまく行きません main.phpの$mode = $_GET('mode');の記述を 消すとヘッダーとフッターは表示されるんですが記入すると何にも表示されません --------------------------------------- index.html(main.phpへのリンクがあるファイル) main.php(ヘッダー、フッター、ボディーをincludeで表示) header.html(ヘッダー部分) footer.html(フッター部分) kaisya.html(body部分) ---------------------------------------- テストなので上記ファイルは全て同ディレクトリにいれてます 原因を調べていますが、分からず、、、、、 どなたか教えて下さい

    • ベストアンサー
    • PHP
  • PHPファイルをincludeしてHTML表示する

    お世話になります。 PHP含めプログラム初心者の者です。 どうか知恵をお貸しください。 現在制作しているHTMLサイトがあります。レイアウトはCSSです。 そのうちのひとつのコンテンツのブログページをサイト内WordPressで更新できるようにしたいと考えています。本来なら全てのページをWordPress化したほうがいいのでしょうが、新たにまたいろいろ記述する時間がないもので、とりあえずはblog.htmlなページのコンテンツ表示領域にWordPressで作ったindex.phpが表示されたらいいなと考えております。 ネットでいろいろ調べた結果、「phpファイルをincludeする」という方法によって、それをhtmlファイルで表示する方法があるようです。そこで質問なのですが、具体的にどのようにソースを記述すればそれは可能になるのでしょうか。 (1).htaccessに「AddType application/x-httpd-php .html」と記述する。 (2)表示したいHTML部分に「include(dirname(__FILE__).'/index.php');」と記述する。 とありましたがそれだけではできませんでした。具体的にそうしればいいか教えていただけないでしょうか。(htmlの拡張子をshtmlにするとかいう情報もありましたが定かではありません。)PHPに関しては本当に初心者な者で、変な質問をしているかもしれませんがどうかよろしくお願い致します。 ※参考にした情報ソースは下記です。 http://www.yusk.org/memo/php-memo/php_include_001.html ※HTMLソースは下記です。 <body> <div id="header"> ~略~ </div> <div id="contens"> <div id="leftmenu"> ~略~ </div> <div id="rightmenu"> <div id="rightbox-inside"> <div id="rightbox-inside-txt"> <p class="title">BLOG</p> <p class="standard"> include(dirname(__FILE__).'/index.php');(←ここにブログを表示させたい) </p> </div> <div style="clear:both;"></div> <div id="rightbox-buttom"> </div> </div> </div> </div> <div id="footer"> ~略~ </div>

    • ベストアンサー
    • PHP
  • phpのincludeについて

    お世話になります。 Apache/2.2.3 PHP5.1.6 のレンタルサーバを利用しています。 httpdocs   |___lib   |  |___test.php   |___index.php という構造にしています。 -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'lib/test.php'; echo $a; ?> --------------------- 上記の場合、index.phpには 「sample」と表示されます。 -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- 上記の場合、なぜか表示されません。 そこで「http://~~」はincludeできないのかなと思ったのですが -----test.php-------- <?php $a = 'sample'; echo $a; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; ?> --------------------- とすると、なぜか「sample」と表示されました。 この結果から、includeはできているみたいです。 なんとか -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- で「sample」と表示させたくて試行錯誤してみたのですが どうしても解決できません。 お力添えのほどお願いできればと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPのインクルード

    WEBサイトをPHPで構築したいと考えています。 PHPの場合、ヘッダーやフッターなどの共通部分をインクルードできると思いますが、 ヘッダー内でもTitleやDescriptionなどのメタタグでページごとに変わる部分はどうすればよいのでしょうか? PHPでサイト構築している方はどうやってるのでしょうか?

    • ベストアンサー
    • PHP
  • include_pathについて

    連続投稿もうしわけございません。 よろしければ質問にお答えお願いします include_pathについてなのですが、現在レンサバ.comにてサーバーを レンタルしているのでが、phpinfo()で調べたら .: と書いてあるだけです。ネットで調べてたら大抵 usr/~って書いてありますよね? どこかのサイトで <?php echo realpath(dirname(__FILE__)); ?> で調べられると聞いたので、試したら /export/saba3/www/jp/r/e/gmoserver/●/●/*****/*****.com と出てきました。これはなんですか? 一応includeしているのですが、このままで大丈夫なのでしょうか? サポートに連絡してもサポート外といわれてしまいました。 自分は今回初めてサーバーをレンタルした者で、一切の知識が無く ネットで調べてたのですが、全然理解できないので投稿させてもらいました。アドバイスよろしくお願い致します。

    • ベストアンサー
    • PHP
  • ヘッダー等を別ファイルに分ける場合

    <div id="header"> <?php include 'header.php'; ?> </div> こんな感じでヘッダー等、前ページで共通な部分を別ファイルに分けるのはよく使われていることなんでしょうか? header.php自体をアクセスされると困るんですが、そのような場合はパーミッションの設定で見られないようにするんでしょうか? 関数呼び出しでHTMLを吐き出したほうが楽だなぁと思っています。

    • ベストアンサー
    • PHP