
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で質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付と年月日を選択するコード...
-
XMLパースエラー回避方法
-
文字化けについて
-
php エラー
-
PHPのif文でその処理を途中で抜...
-
Subversionのリポジトリの削除
-
.phpファイルが、表示されない
-
FTPコマンドでディレクトリごと...
-
Illustratorで文字と画像を流し...
-
「クラウドにアップロード」」...
-
@fileとは
-
さくらインターネットでメール...
-
FORMで送信ボタンと戻るボタン...
-
PHPがうまく表示されない・・・?
-
phpのクラスにて別ファイルの変...
-
phpでのメール転送(添付ファイ...
-
imagecreatetruecolor()関数で...
-
webroot以外の画像の表示
-
PHP session_destroyとsession...
-
shift-jisでfgetcsv
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化けについて
-
日付と年月日を選択するコード...
-
phpの画面表示が真っ白です
-
PHPでHTLM入力された背...
-
一つのphpファイルでframeset
-
phpの質問です
-
ライブドアブログにPHPスクリプ...
-
PHP→JavaScriptへの書き換え
-
PHPをはじめて1日目なので・・・
-
外部PHPファイルの読込みについて
-
phpでテキストファイルへ書き込み
-
header関数について
-
mb_convert_variablesで変換出...
-
更新pingの送信について
-
Wordpressを利用したソート機能...
-
連番を書き出すなどの単純処理...
-
ここでの ②if($su_d<>"")の比較...
-
文字列の一部を取り出したいの...
-
POSTされた値をEUCで表示したい
-
ローカル環境で動くのに本番環...
おすすめ情報