PHPによって生成されたHTMLメタタグとリンクタグはbodyタグ内にあり、先頭には空行があります。

高洛峰
リリース: 2023-03-05 07:28:01
オリジナル
1008 人が閲覧しました

1. PHP で Smarty テンプレートを使用して生成された HTML には、ブラウザーの上部に空白行があります。

2. firedebug を使用して、meta タグと link タグがこの上で正常に動作することを確認します。これは IASP のサービスであり、ソース ファイルを見ると同じですが、おそらくエンコードの問題が発生します。 utf-8 の問題です。

オンラインで検索したところ、utf-8 BOM の問題です。

解決策: UltraEdit32 を使用して、すべてのスマート テンプレート ファイル (インクルード ヘッダー、フッターなどのファイル) を保存します。 ) を BOM なしの utf-8 ファイルとして変換します。

その他の補足説明:

このページは UTF8 を使用しています。 エンコードには、テンプレートを含むドキュメント メソッドが使用されました。 その結果、約 1 行の余分な空白行が発生しました。理由もなく先頭と末尾に10pxがあり、何もありませんでした。

その理由は、ドキュメントがインクルードされると、最終的なバイナリ ストリームに複数の UTF8 BOM タグが含まれるページを正常に解析できず、実際に表示されるキャリッジ リターンに直接置き換えられるためです。この方法では空白行が発生しますが、Firefox ではこの問題は発生しません。

したがって、テンプレートに含まれているメソッドが使用されており、ultraedit を使用して保存する必要がある複数の utf8 ドキュメントが含まれている場合は、utf8 を選択するだけで、BOM 形式なしで保存できます。

さらに、中国語ページが HTML head タグの
したがって、utf8 ページは標準の順序

<meta http-equiv=”Content-type” Content=”text/html; Charset=UTF-8″ /> 
<meta http-equiv=”Content-language” Content=”zh-CN” /> 
<meta name=”robots” Content=”index,follow” /> 
<meta name=”keywords” Content=”" /> 
<meta name=”desCription” Content=”" /> 
<meta name=”rating” Content=”general” /> 
<meta name=”author” Content=”" /> 
<meta name=”Copyright” Content=”" /> 
<meta name=”generator” Content=”" /> 
<title></title>
ログイン後にコピー

BOM ヘッダー: xEFxBBxBF を使用する必要があるため、PHP スクリプト 4 と 5 は依然として BOM を無視するため、解析する前に直接出力されます。

この問題については、w3.org 標準 FAQ に特別な説明があります:

www.w3.org/International/questions/qa-utf8-bom

詳細は次のとおりです:

UCS エンコーディングには、 「ZERO WIDTH NO-BREAK SPACE」文字と呼ばれるコード。そのエンコードは FEFF です。 FFFE は UCS に存在しない文字なので、実際の送信には現れないはずです。 UCS 仕様では、バイト ストリームを送信する前に文字「ZERO WIDTH NO-BREAK SPACE」を送信することを推奨しています。このように、受信機が FEFF を受信した場合は、バイト ストリームがビッグ エンディアンであることを示し、FFFE を受信した場合は、バイト ストリームがリトル エンディアンであることを示します。したがって、「ZERO WIDTH NO-BREAK SPACE」という文字は BOM とも呼ばれます。

UTF-8 はバイト順序を示すために BOM を必要としませんが、BOM を使用してエンコード方式を示すことができます。文字「ZERO WIDTH NO-BREAK SPACE」の UTF-8 エンコーディングは EF BB BF です。したがって、受信側が EF BB BF で始まるバイト ストリームを受信すると、それが UTF-8 でエンコードされていることを認識します。

Windows は BOM を使用してテキストドキュメントのエンコード方法をマークします。 システム: WindowsXP Professional、デフォルトの文字セット: 中国語

1) メモ帳: BOM のない utf-8 エンコード形式のドキュメントを自動的に識別できますが、BOM を追加するかどうかを制御することはできません。文書を保存すると、BOM が一律に追加されます。

2) editplus: BOM のない UTF-8 エンコード形式のドキュメントを自動的に認識できません。ドキュメントを保存するときに UTF-8 形式を選択すると、ドキュメント ヘッダーに BOM ヘッダーが書き込まれません。

3) UltraEdit: 文字エンコードの場合。最も強力な機能として、BOM の有無にかかわらず UTF-8 ドキュメントを自動的に識別できます (設定可能)。保存時に、設定を通じて BOM を追加するかどうかを選択できます。 utf-8 no bom 形式で保存することを選択します)

その後、Notepad ++ も utf-8 bom をより適切にサポートしていることがわかりました。皆さんにもそれを使用することをお勧めします。

続き php で生成された html メタタグとリンクタグは body タグ内にあります。 関連記事については、PHP 中国語の Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート