【PHP】headerでContent-Typeを指定したのに効かない場合の対処法

公開日: : PHP, RSS, サイト制作

スポンサーリンク

PHPでサイトマップを作ろうと思い、XML形式のファイルを出力しようとしてheaderを指定したのにXMLっぽく表示されず、ただただ文字列が表示されるという現象が起きてしまいました。

xmllikeimg
↑こんなXMLライクな表示にしたい(画像はYahooのRSS)

一応なんとか表示できるようになったのでその対処法です。

Content-Typeの指定

header("Content-Type: application/xml; charset=utf-8");

通常はPHPでこの記述を加えればXMLファイルとして認識してくれるはずです

Chrome開発者用ツールでヘッダを確認

原因が何か探るためにChromeの開発者用ツールで確認しました。
下記画像はYahooのRSSページを解析したものですが、きちんと「application/xml」の記述があります。この状態であれば問題ありません。ここが別の値になっている場合うまくXMLファイルであることが伝わっていないということになります。

私の作ったファイルは「html/text」の表記になってしまっており、XMLと解釈されていないということが判明しました。

xmlcheck-network
↑ウェブページ上で右クリック→「検証」でこの画面が開きます。
上のタブの「Network」を選択し、該当するXMLファイル(rss.xml)を左サイドの中から選択すると「Headers」にヘッダの情報が記載されているので確認してください。

ファイルの形式の確認

ファイルのエンコードが「UTF-8」になっているかどうか確認します。サクラエディタで該当ファイルを開いてみます。「名前を付けて保存」を選択すると次のような画面が出てきます。

encodingtype

BOMにチェックが入っています。UTF-8の先頭にBOMがつくと余計に3バイト分のデータが加算されてしまい、ブラウザ側でうまく読み取れなくなってしまうとか何とか。。

ということでこの「BOM」のチェックを外して上書き保存して確認してみるとちゃんとXMLと認識されました。

スポンサーリンク
Amazon
  • このエントリーをはてなブックマークに追加

関連記事

PHPでページリロードをしようと思ったができなかったので

header("Location: ".$_SERVER); とすればページをリロードでき

記事を読む

スクレイピングをサポートしてくれるAPI【kimono】

kimonoというスクレイピングをAPI化してくれるという素晴らしいサービスがあります。

記事を読む

【PHP】Simple HTML DOM Parserを使って指定Webページの記事タイトルを取得する

PHPのスクレイピングライブラリのSimple HTML DOM Parserを使って指定Webペー

記事を読む

ニコニコ動画のURLリンクから外部プレイヤーのスクリプトに正規表現で置換する

ニコニコ動画の動画のアドレスを抽出して外部プレイヤー貼りつけソースのスクリプトに変換するソースです。

記事を読む

なるべく安くロリポップを申し込む方法

ロリポップというレンタルサーバーは元々比較的安く、よくキャンペーンなどで割引をやっているので安価にC

記事を読む

任意URLのTweetボタンを複数設置する

TwitterのTweetボタンをWebサイトやブログに複数設置する方法です。複数設置するということ

記事を読む

かわいい女の子のアイコンやアバター画像を作れるサイト

TwitterやFacebookなどでアイコンが欲しくなることってあるかと思います。私も色々検索して

記事を読む

【PHP】Simple HTML DOM Parserを使って属性の値を取得する

PHPでSimple HTML DOM Parserを使ったスクレイピングで指定の属性の値を取得する

記事を読む

ニコニコ動画のRSSをjavascriptで読み込んで表示させる

ニコニコ動画のランキングRSSをjQueryで読み込んで表示するプログラムを作成しました。RSSの読

記事を読む

【HTML/jQuery UI】NumericUpDownを設置する【Spinner】

HTMLタグにNumericUpDownがないか探したのですがないみたいなのでそれが使えるようなもの

記事を読む

NVIDIA DIGITSをSupervisorを使って自動起動する

はじめに 先日Ubuntu14.04にDIGITS 5をGPUなしP

【2017年度】GeForce 1080 Ti搭載BTOパソコン比較

はじめに 最近ディープラーニング用にGPUのないPCにDIGITSを

Windows用のシンプルなストップウォッチソフト紹介

Windows(10)でも使える使いやすいKAZAMITimerという

MNISTをDIGITS 5のCPUのみで試す(GPUなし)

はじめに DIGITSを使えばGUI操作で簡単にディープラーニングが

Windowsユーザが初めてMacBookを購入したときの注意点や感想

最近12インチのMacBookを購入しました。今までWindowsしか

Redmine3.2をUbuntu14.04にインストールして躓いた所についてメモ

はじめに Ubuntu14.04 ServerにRedmine3.2

UWSCを使ったソフト自動立ち上げ【SoftEther VPN Server】

やりたいこと 最近SoftEtherという筑波大学発のベンチャー企業

→もっと見る

  • Author : ががんぼ
    プログラミングやWeb関係で気付いたことについてメモしていく予定。だいたいが備忘録ですが、自分でサンプルを作って動かしてみたりしています。
PAGE TOP ↑