まず前提の話だが、携帯サイト(モバイルサイト)を作る場合、XHTML Mobile Profile1.0などのXHTML言語を利用するのが一般的である。
そしてXHTML Mobile Profile1.0を使う場合は、基本的に冒頭に宣言として次の3行を書く必要性がある。
1|<?xml version="1.0" encoding="Shift_JIS"?>
2|<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
3|<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
2|<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
3|<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
しかしながら、このXHTMLによって、.phpのページなどphpが動作するページを作成した場合、どういうわけか真っ白のページが表示されてしまう。
からくりを言えば、至極当然の話なのだが、宣言部1行目の冒頭<?がphpコード開始と認識されてしまい、その結果は当然のようにphpコードがエラーとなるため、真っ白のページが表示されてしまっているのである。
解決策は、宣言部を次のようにしてしまえばいい。上のエラーとなるコードと異なるのは1行目をphpによる出力にしている点だけである。
1|<?php echo "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>"; ?>
2|<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
3|<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
2|<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
3|<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
これで安心してXHTMLのモバイル用の携帯サイトをphpを使って作成することができるというもの。