
index.phpでPC用と携帯用のテンプレートへ振り分けています。(Smarty使用)
携帯でスタイルシートを使う為に、index.phpの先頭で
header("Content-type: application/xhtml+xml");を設定すると
PC側ではXMLパースエラーが生じます。
エラー内容「XML パースエラー: 定義されていない実体が使用されています。」
回避するために色々やってみました。
1、&やなどを使わない
2、PCの時は再度header("Content-type: text/html");を設定
3、DOCTYPEのstrictをTransitionalに変更
この状態だとエラーは出ませんが、1の方法はエンコード処理できなくなりますので無理です。
2、3の方法は問題がないのでしょうか。
できればindex.php一つのファイルでどうにか処理したいのですが、
何かほかにありましたら、ご教授ください。
念のため2の方法でのコードを記述しておきます。
pc.tpl
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dt …
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
<meta http-equiv="content-style-type" content="text/css" />
<title>{$title}</title>
</head>
index.php
header("Content-type: application/xhtml+xml");
require_once( 'getUserAgent.php' );
require_once( 'Smarty_Common.php' );
// Smartyオブジェクト取得
$smarty =& getMySmarty();
// エージェント取得
$carrier = get_carrier();
if($carrier != 'pc') {
$setXML = '<?xml version="1.0" encoding="Shift-JIS"?>';
$smarty->assign( 'setXML', $setXML );
}else{
header("Content-type: text/html");
}
<省略>
php5 windows
No.4ベストアンサー
- 回答日時:
気づいた事:、
結局出力されるXHTMLはUTF-8なの?Shift_JISなの?
XML宣言でShift_JISって書いているのにmeta要素側ではUTF-8になっている…
あと、
>PC側では
検証したブラウザを全て挙げてくれ。
#普通なら#1の補足では解決しないような内容だと思うので、念のため。
この回答への補足
おっしゃる通りです。混在してしまってますね。
サイトの構築はUTF-8です。
smartyはshift_jisに対応していないので携帯に出力する際mb_convert_encoding($value, "SJIS-WIN", "UTF8");と
エンコードしてます。
XML宣言はUTF-8にすると携帯の方で文字化けするので、
Shift_JISにしてみたところうまくいったのでそのまま・・・。
meta要素がutf-8の場合は、XML宣言もutf-8が妥当なのでしょうか。
自分にはまだ高度だと感じたので、PC用と携帯用を
完全に切り離した方が良いのかなと思い始めています。
検証ブラウザはFirefox、IE、docomoシュミレータ2(xhtml対応)
auシュミレータWAP2.0対応、docomo実機
IEとauはたまに確認する程度です。
何度もすみません。
何度もお付き合いいただきありがとうございました。
結局、PCと携帯のフォルダを分けて作っていますが、
基本的なことをちゃんと調べるきっかけとなりましたので
感謝致します。
No.3
- 回答日時:
IEだと
header("Content-type: application/xhtml+xml");
は対応してませんよ。
と補足。
No.2
- 回答日時:
No.1
- 回答日時:
大抵の場合出力しているXMLが間違っています。
クライアント側に提供されているソースを目視して確認してみてください。この手のトラブルは特に
誤
<a href="http://www.google.com/?hl=en&q=hoge">Google英語版でhogeを検索</a>
正
<a href="http://www.google.com/?hl=en&q=hoge">Google英語版でhogeを検索</a>
のケースで発生するような気がします
HTML 4.01においては
http://www.w3.org/TR/html401/appendix/notes.html
>If it encounters an undeclared entity, the entity should be treated as character data.
と、ミスに対してゆるい対応をするよう求めています。
XHTMLにはおそらくこれはない。XMLとして厳格であることに意味があると思うので。
#Smartyは使ったことがない
この回答への補足
index.phpのheader("Content-type: text/html");を削除して、
PC用テンプレートの
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />を
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
にしたところ、PC、携帯の両方でエラーがなくなりました。
これが正解なのかわかりませんので、もう少し調べてみます。
お礼はまた後ほど書かせて頂きます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- HTML・CSS html cssのmargin 5 2022/12/03 11:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付と年月日を選択するコード...
-
文字化けについて
-
phpの画面表示が真っ白です
-
ローカル環境でのメール送信
-
トランザクションが原因?DBに...
-
JSPにてMySQLのBLOB型の画像の...
-
PHPのsafemodeとは?
-
ユーザー認証でユーザーID毎に...
-
【file_exists】ファイルが存在...
-
URLの変わらないページをPHPで...
-
フォームで戻った際に入力済み...
-
PHPファイルの中身が見られるこ...
-
VBSの「MsgBox」について
-
FORMで送信ボタンと戻るボタン...
-
FTPコマンドでディレクトリごと...
-
ボタンのクリック数を合計保存...
-
別サーバのプログラムを起動
-
日本語をGETで渡す場合UR...
-
PHPのif文でその処理を途中で抜...
-
php経由のMySQL
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化けについて
-
mail()の文字化けについて
-
複数の文字列をファイルに書き...
-
前後の全角スペースを削除する...
-
PHPで地域名のみ変更
-
wordpressのfooter.phpの編集
-
日付と年月日を選択するコード...
-
PHPでのアンケート設置について
-
機種依存文字の文字化けについて
-
charset=UTF-8なのにShift-JIS...
-
どうしたら確認ができますか!?
-
ここでの ②if($su_d<>"")の比較...
-
php エラー
-
html込みの文字列をPHPの変数に...
-
PHP(smarty)についての質問(文...
-
phpでfopen()やfputs()が使えない
-
XMLパースエラー回避方法
-
エラー Warning: Cannot modif...
-
php ログイン
-
外部ファイルを読み込んだhtml...
おすすめ情報