サイトをphp化してXML宣言する方法、サイトが表示されなくなることの解決法

スポンサード リンク

先日、とあるサイトをphpで作りました。

phpで作ると言っても、ただ単に拡張子を「.php」にして作るだけです。

こうすれば、phpのインクルードタグを使えるので、普通のウェブサイトでもMovable Type(MT)で作ったブログサイトのように、共通部分を外部化して読み込ませることができます。

たとえば、メニューとか。

僕はタグはすべて手打ちなので、100ページあるサイトのメニューを修正する場合、インクルードを使わなければ100ページ分のメニューを変更する必要があります。

この作業はほんとに辛いです・・途中で泣きたくなるほどです・・。

でも、phpのインクルードを使えば、外部化したファイルだけを修正すれば、すべてのページに反映されますから。

つまり、静的なHTMLサイトから動的なPHPサイトになるということですね。

でも、ウェブサイトをphp化するにあたり、1つの問題にぶち当たりました。

それが、XML宣言です。

XML宣言とは、HTMLファイルの先頭に書く記述のことです。

こんな風に書きます。

<?xml version="1.0" encoding="utf-8"?>

もとは、その文書がXML文書であることを明確に示す文字列ですが、XHTMLでサイト製作する際にも書くことが推奨されているというか、ないと文法チェックでツっこまれるので僕は入れるようにしています。

「xml version="1.0"」がXMLのバージョン、「encoding="utf-8"」が使用する文字コードです。

使用する文字コードが「Shift_JIS」の場合なら「encoding="Shift_JIS"」となります。

XML宣言は、XHTMLファイルの文字コードが「utf-8」か「utf-16」以外で、かつWWWサーバーがcharsetパラメータで文字コードを送信しない場合には記述が必須となります。

僕の場合は、最近は次のような感じでサイトを作っています。

・とりあえず、XML宣言しとく
・文字コードは「utf-8」
・DOCTYPE宣言は「Strict DTD」

なので、HTMLファイルの出だしはこんな感じになります。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>


ただ、php化するとXML宣言の出だしの「<?」がひっかかってしまうようで、サイトが真っ白になります。

つまり、何も表示されないんです。ソースを見ても、何も書かれていません。真っ白です。

こんな感じで。

090909_1.gif

そこで、この現象を解決するために、XML宣言をHTMLファイルに直接書く形ではなく、phpで文字列を出力する形をとります。

PHPで文字列を出力すると、関数の「print」が思い浮かぶかもしれませんが、ここでは同じ動作をする「echo」を使います。

「print」と「echo」の違いの1つに、「値を返すかどうか」ということがあります。

「print」は値を返しますが、「echo」は値を返しません。その分、若干「echo」の方が速度が速いという声もあります。

まぁ、今回の場合では「print」を使おうが、「echo」を使おうが、速度の違いはほとんど認識できないでしょうが。。

「echo」を使ってXML宣言の文字列を書き出すには次のように書きます。

<?php echo '<?xml version="1.0" encoding="utf-8"?>' ?>

ただ、これだとXML宣言とDOCTYPE宣言が下記のようにHTMLソース上で改行されません。

090909_2.gif

まぁ、改行されなくても、別に問題ないのですが、次のように改行命令も書いておけばHTMLソース上でもちゃんと改行されます。

<?php echo '<?xml version="1.0" encoding="utf-8"?>'."\n" ?>

090909_3.gif

このように、XML宣言を直接HTMLファイルに書くのではなく、phpコマンドの「echo」を使って、XML宣言を文字列として書き出すようにすれば、サイトをphp化してXML宣言することができます。

Movable Type(MT)をPHP化してXML宣言する時も、この方法を使います。

あと、Macintoshを使っている人は、エディタによっては改行命令の「\(バックスラッシュ)」が入力できないかもしれません。

そんな時はJeditを使うといいですよ。


参考:
[PHP-users 1453] echo()とprint()の違いについて

"print"と"echo"の違いを教えてください - 教えて!goo

スポンサード リンク

この記事をはてなブックマークに追加はてなブックマーク数 この記事をYahoo!ブックマークに登録 この記事をクリップ!クリップ数 この記事をBuzzurlにブックマークブックマーク数 この記事をdeliciousにブックマーク
このカテゴリーの最新記事(5記事)
このブログの最新記事(5記事)
ソフトバンクの携帯が
キャッシュバックキャンペーン中!

iPhoneに機種変更するならキャッシュバックキャンペーンをしている今がお得!iPhoneもフル充電できる携帯バッテリーもプレゼント!

【英単語の暗記法】

4ヶ月で1万語レベルの英単語の覚え方を公開。

英単語の暗記ってそれほど難しくありません。

【ひかりTV】

自宅がレンタルビデオ屋になる"ひかりTV"
「ひかりTV」なら専門チャンネルが70チャンネル以上、ハイビジョンが30チャンネル以上、アンテナ不要で今使っているアナログテレビもそのまま使える!カラオケ機能もあるので自宅がパーティー会場に。

【ホテル・温泉 ランキング!】

日本の人気ホテル・温泉

日本のホテル 宿泊客の満足度調査ランキング

人気温泉地ランキングTOP20

年末年始に向けて、どうせ行くなら評判の良いところへ!

ホテルの予約なら「一休」、温泉の予約なら「じゃらん」が安くてオススメ!

【映画好きの人にオススメ!】

DVDをネットで借りてポストへ返す

ネットで借りて、ポストへ返す
僕も使っているオンライン宅配DVDレンタルサービス。

検索で一発で探せるので、お目当ての映画を探すのに時間がかかったり、返却が面倒といったイライラを解消できます!

時間を節約したい人にオススメ。

【情報の量から質の時代へ】

雑誌 Newsweek

ニューズウィーク 定期購読
情報社会から知識社会へ。日本のマーケットはアメリカのマーケットに連動しています。

あの優秀な人も毎週チェックしている。定期購読なら1冊280円に!

人気ビジネス雑誌ランキング

ビジネス雑誌 比較ランキング
人気ビジネス雑誌7誌を比較。

【一番堅実で効果が高いSEO対策】

一番堅実で効果が高いSEO対策

ディレクトリ登録でアクセスアップ 堅実SEO対策
アクセスが来ないウェブサイトをアクセスがたくさん来るウェブサイトに変える一番手堅いSEO対策。

中長期で考えると一番費用対効果が高い方法です。

【ファッションレンタル】

DMMファッションレンタルなら結婚式や二次会の服装をレンタルをお手頃価格で利用できて節約になりますよ。ブランド物もレンタルできます。

【オススメ!レンタルサーバー】

当サイトは、ロリポップ!レンタルサーバーにブログソフトウェアMovable Typeをインストールしています。

BLOG カテゴリ
ブックマーク数

このページのトップへ