【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
  • このエントリーをはてなブックマークに追加

関連記事

8999371750_ee7e782a16_m

【CakePHP3】無関係な複数テーブルのデータを一つのコントローラで扱う

CakePHP3で一つのコントローラないでお互い独立したテーブルを扱うには単純にTableRegis

記事を読む

branch-67844_640

【TwitterOauth】特定のつぶやきを取得してリツイート数順やランダム順にする【PHP】

TwitterOauthを利用して特定のワードをつぶやいたデータを取得してそれをリツイート順なりに並

記事を読む

zenbackcomment1

ブログのコメント欄をTwitterやFacebook、はてなのコメントで代用する方法

最近になってコメント欄にスパムっぽいものが大量に飛んでくるようになったのでどうにかしないと、と思い一

記事を読む

source_php

【PHP】クラスの配列をソートする

クラスのメンバに応じて配列をusortでソートします。クラス内の関数でソートする場合は下のようにする

記事を読む

twittersearch

【twitteroauth】TwitterAPIで検索して特定のつぶやきをしたユーザーを取得する方法【PHP】

twitteroauthを利用してワード検索して特定のつぶやきをしたユーザーを取得する方法です。tw

記事を読む

linkwithin

関連記事を表示させるブログパーツLinkWithinの導入方法

LinkWithinについて ブログに関連記事を表示するパーツ『LinkWithin』を紹介します

記事を読む

Youtube-Image

YoutubeのURLリンクを外部プレイヤーのものに正規表現で置換する

Youtubeのアドレスを正規表現を使って抽出して外部プレイヤーのフレームに変換・置換するスクリプト

記事を読む

twitterimage

【PHP】Twitterのツイート数やはてぶ数を取得する

指定URLのTweet数の取得 Twitterでツイート数を取得するには指定のURLにアクセスする

記事を読む

mailsendtest

【PHP】file_get_contentsでリンク元などのヘッダ情報を変更する

file_get_contentsで他サイトの情報を読み取る際などでリンク元を明記したい場合は以下の

記事を読む

abataaa1

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

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

記事を読む

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

PHPでサイトマップを作ろうと思い、XML形式のファイルを出力しようと

_rtm0919_tp_v
スマホ向け幅固定サイトの回転時の幅対応方法

幅固定サイトでのスマホ回転時Webサイトの横幅を合わせる方法のメモ。

rssimage
【PHP】特定のURLからそのAtomやRSSのフィードを抽出する方法

特定のURLからRSSやATOMのフィードを抽出する方法をメモ。 流

rssimage
フィード抽出ツール(RSS1.0、RSS2.0、atom)

任意URL サイト名 サイトURL RSS1.0

computer_server
格安プラン限定レンタルサーバー機能比較表(2016年)

はじめに  最近新しい共用サーバーをレンタルしようと思い調査およびそ

school_toshokan_hondana
kindle unlimitedが便利だったのでお勧めの使い方など感想メモ

 kindle unlimitedというサービスが8/3からAmazo

TAKEBE055122558_TP_V
寝る前にスマホを見ると斜視になる可能性とその対策

はじめに  寝る前などスマホを横になりながら見続けると斜視になる可能

→もっと見る

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