ホームページ php教程 php手册 PHP Tidy - 完璧な XHTML エラー修正フィルタリング

PHP Tidy - 完璧な XHTML エラー修正フィルタリング

Jun 13, 2016 pm 12:32 PM
xhtml 関数 そして 基本 ユーザー 修正 ネット 美しい 入力 出力 フィルター

入力と出力
入力と出力は、多くの Web サイトの基本機能とも言えます。ユーザーがデータを入力すると、Web サイトは他の人が閲覧できるようにそのデータを出力します。

現在人気のブログを例に挙げます。ここでの入力と出力は、作成者が記事を編集し、他の人が読めるようにブログ記事ページを生成することです。
ここで問題が発生します。つまり、ユーザー入力は通常制御されておらず、不正な形式やセキュリティ上のリスクを伴うコードが含まれている可能性がありますが、Web サイトによって出力される最終コンテンツは正しい HTML コードである必要があります。これには、エラー修正とユーザー入力のフィルタリングが必要です。

ユーザー入力を決して信用しない
あなたは次のように言うかもしれません: 今ではどこにでも WYSIWYG エディター (WYSIWYG) があり、FCKeditor、TinyMCE... 名前はたくさんあるでしょう。確かに、これらはすべて標準の XHTML コードを自動的に生成できますが、Web 開発者であれば、「ユーザーが送信したデータを決して信頼しない」という言葉を聞いたことがあるはずです。

したがって、ユーザー入力データを修正およびフィルタリングする必要があります。

より良いエラー修正とフィルタリングが必要です
これまでのところ、私が満足できる関連実装は見たことがありません。通常、非効率で理想的とは言えず、あれこれあります。 . 明らかな欠陥。よく知られた例を挙げると、WordPress は非常に広く使用されているブログ システムであり、操作が簡単で強力であり、豊富なプラグイン サポートを備えており、バックグラウンドで多数の巧妙なエラー修正およびフィルタリング コードをサポートしています。非常に頭の痛い問題、半角文字の強制置換、過度に保守的な置換ルールなどにより、コードを貼り付けて正しく表示するという要件を達成することが困難になります。

ところで、このブログは WordPress でホストされていますが、これらの記事を正しく表示するために、ネットでいろいろ調べて、いくつかのプラグインを試してみました。コードを上書きし、一部をフィルタリングしました。ルールをコメントアウトすると、表示がまともになることはほとんどありません -.-b

もちろん、私はそれ (WordPress) をあまり批判したくないのですが、それを示したいだけですもっと良くできるよ。

Tidy とは何ですか?また、どのように機能しますか?
Tidy ManPage から引用した説明では、次のように説明されています。

Tidy は、HTML、XHTML、および XML ファイルを読み取り、W3C 準拠でほとんどのブラウザーで動作するクリーンアップされたマークアップを書き込みます。一般的な XML ファイルの場合、Tidy は、HTML コードをクリーンアップし、W3C 標準に準拠したクリーンな HTML コードを生成し、HTML をサポートすると言われています。 XHTML と XML。 Tidy は、Tidy の強力な機能を他のアプリケーションで簡単に使用できるようにするライブラリ TidyLib を提供します。幸いなことに、PHP には使用できる対応する Tidy モジュールがあります。

おい、なぜまた PHP なのか?
えっと、この質問…恥ずかしいのだが、私は PHP について少ししか知らないので -.-v
でも大丈夫、そんなことはないここで私が話しているのは、純粋なコード、少なくとも一部の分析プロセス、これらのものを共有することは、コードを投稿するよりもはるかに有益です。

PHP で Tidy を使用する
PHP で Tidy を使用するには、Tidy モジュールをインストールする必要があります。これは、PHP 拡張機能 tiny.so をロードすることを意味します。具体的なプロセスは省略されており、純粋に物理的な作業です。最後に、phpinfo()で「Tidy support有効」と表示されていればOKです。

このモジュールのサポートにより、Tidy が提供するほぼすべての機能が PHP で使用できるようになります。一般的に使用される HTML のクリーニングは非常に簡単で、ドキュメントの解析ツリーを生成し、クライアント上で DOM を操作するように HTML の各ノードを操作することもできます。以下に具体的なコードの手順を示します。また、公式の PHP マニュアルも参照してください。

エラー修正とフィルタリングの PHP Tidy 実装
上で述べた非常に多くの背景資料は非常にわかりにくいように思えますが、問題を解決するための具体的なコードが最も直接的です。

1. 単純なエラー修正の実装

function HtmlFix($html)
{

if(!function_exists('tidy_repair_string'))
return $ html ;
//tidy を使用して HTML コードを修復します

//修復
$str = tiny_repair_string($html,
array('output-xhtml'=>true),
'utf8'); 🎜> $nodes = @tidy_get_body($str)->子

if(!is_array($nodes)) {
$returnVal = 0 ;
return $s;

foreach($nodes as $n){
$s .= $n->value; 🎜> }
return $ s;
}
上記のコードは、標準化されていない可能性のある XHTML コードをクリーンアップして修正し、標準の XHTML コードを出力します (入力と出力の両方が UTF-8 でエンコードされます)。 。実装コードは以下のフィルタリング機能と連携させるため、できるだけ詳細に記述したため、あまり合理化されたものではありません。

2. 高度な実装: エラー修正とフィルタリング

機能:

XHTML エラー修正、標準 XHTML コードを出力します。
安全でないコードをフィルタリングしますが、コンテンツの表示には影響しません。スタイル/JavaScript 内の安全でないコードのみが消去されます。
ブラウザ互換の自動行折り返しを実現するには、非常に長い文字列に タグを挿入します。関連記事については、Web ページ内の非常に長いテキストの改行の問題を参照してください。
function HtmlFixSafe($html)
{

if(!function_exists('tidy_repair_string'))
return $html
//tidy を使用して HTML コードを修復します。
// 整然としたパラメータ設定
$conf = array(
'output-xhtml'=>true
,'drop-empty-paras'=>FALSE
, ,' join -classes'=>TRUE
, ,'show-body-only'=>TRUE

//修復
$str = tiny_repair_string($html,$); conf ,'utf8');
//解析ツリーを生成します
$str = tiny_parse_string($str,$conf,'utf8');

$s =''; 🎜 > //ボディノードを取得
$body = @tidy_get_body($str);

//関数 _dumpnode、各ノードを確認し、フィルターして出力
function _dumpnode($node,&$s) ){

// ノード名を確認し、

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Xiaohonshu アカウントを使用してユーザーを見つけるにはどうすればよいですか?私の携帯電話番号を見つけることはできますか? Xiaohonshu アカウントを使用してユーザーを見つけるにはどうすればよいですか?私の携帯電話番号を見つけることはできますか? Mar 22, 2024 am 08:40 AM

ソーシャルメディアの急速な発展に伴い、Xiaohongshuは最も人気のあるソーシャルプラットフォームの1つになりました。ユーザーは、Xiaohongshu アカウントを作成して自分の個人情報を示し、他のユーザーと通信し、対話することができます。ユーザーの小紅樹番号を見つける必要がある場合は、次の簡単な手順に従ってください。 1. Xiaohonshu アカウントを使用してユーザーを見つけるにはどうすればよいですか? 1. 小紅書アプリを開き、右下隅の「検出」ボタンをクリックして、「メモ」オプションを選択します。 2. ノート一覧で、探したいユーザーが投稿したノートを見つけます。クリックしてノートの詳細ページに入ります。 3. ノートの詳細ページで、ユーザーのアバターの下にある「フォロー」ボタンをクリックして、ユーザーの個人ホームページに入ります。 4. ユーザーの個人ホームページの右上隅にある三点ボタンをクリックし、「個人情報」を選択します。

vivox100sとx100の違い:性能比較と機能分析 vivox100sとx100の違い:性能比較と機能分析 Mar 23, 2024 pm 10:27 PM

vivox100s と x100 携帯電話はどちらも vivo の携帯電話製品ラインの代表的なモデルであり、それぞれ異なる時代における vivo のハイエンド技術レベルを代表するものであるため、2 つの携帯電話にはデザイン、性能、機能に一定の違いがあります。この記事では、消費者が自分に合った携帯電話をより適切に選択できるように、これら 2 つの携帯電話を性能比較と機能分析の観点から詳しく比較します。まずはvivox100sとx100の性能比較を見てみましょう。 vivox100s には最新の機能が搭載されています。

セルフメディアとは一体何でしょうか?その主な特徴と機能は何ですか? セルフメディアとは一体何でしょうか?その主な特徴と機能は何ですか? Mar 21, 2024 pm 08:21 PM

インターネットの急速な発展に伴い、セルフメディアという概念が人々の心に深く根付いてきました。では、セルフメディアとは一体何でしょうか?その主な特徴と機能は何ですか?次に、これらの問題を 1 つずつ検討していきます。 1. セルフメディアとは何ですか? We-media は、その名前が示すように、あなたがメディアであることを意味します。これは、個人またはチームがインターネット プラットフォームを通じてコン​​テンツを独自に作成、編集、公開、配布できる情報媒体を指します。新聞、テレビ、ラジオなどの従来のメディアとは異なり、セルフメディアはよりインタラクティブでパーソナライズされており、誰もが情報の制作者および発信者になることができます。 2. セルフメディアの主な特徴と機能は何ですか? 1. 敷居が低い: セルフメディアの台頭により、メディア業界への参入の敷居が低くなり、煩わしい機材や専門チームは必要なくなりました。

小紅書アカウント管理ソフトウェアの機能は何ですか?小紅書アカウントを操作するにはどうすればよいですか? 小紅書アカウント管理ソフトウェアの機能は何ですか?小紅書アカウントを操作するにはどうすればよいですか? Mar 21, 2024 pm 04:16 PM

小紅書が若者の間で人気になるにつれ、ますます多くの人がこのプラットフォームを使用して、自分の経験や人生の洞察のさまざまな側面を共有し始めています。複数の小紅書アカウントを効果的に管理する方法が重要な問題となっています。この記事では、Xiaohongshu アカウント管理ソフトウェアの機能のいくつかについて説明し、Xiaohongshu アカウントをより適切に管理する方法を探ります。ソーシャルメディアが成長するにつれて、多くの人が複数のソーシャルアカウントを管理する必要があることに気づきます。これは小紅書ユーザーにとっても課題です。小紅書アカウント管理ソフトウェアの中には、コンテンツの自動公開、スケジュールされた公開、データ分析、その他の機能など、ユーザーが複数のアカウントをより簡単に管理できるようにするものがあります。これらのツールを通じて、ユーザーはアカウントをより効率的に管理し、アカウントの露出と注目を高めることができます。さらに、Xiaohongshu アカウント管理ソフトウェアには、

PHP は何に使われますか? PHP の役割と機能を調べる PHP は何に使われますか? PHP の役割と機能を調べる Mar 24, 2024 am 11:39 AM

PHP は、Web 開発で広く使用されているサーバー側スクリプト言語です。その主な機能は、動的な Web コンテンツを生成することです。HTML と組み合わせると、リッチでカラフルな Web ページを作成できます。 PHP は強力で、さまざまなデータベース操作、ファイル操作、フォーム処理、その他のタスクを実行でき、Web サイトに強力な対話性と機能を提供します。次の記事では、詳細なコード例を使用して、PHP の役割と機能をさらに詳しく説明します。まず、PHP の一般的な使用法である動的な Web ページの生成を見てみましょう: P

VSCode について: このツールは何に使用されますか? VSCode について: このツールは何に使用されますか? Mar 25, 2024 pm 03:06 PM

「VSCode について: このツールは何に使用されますか?」 》初心者でも経験豊富な開発者でも、プログラマーとしてはコード編集ツールを使わずにはいられません。数ある編集ツールの中でも、Visual Studio Code (略して VSCode) は、オープンソースで軽量かつ強力なコード エディターとして開発者の間で非常に人気があります。では、VSCode は正確に何に使用されるのでしょうか?この記事では、VSCode の機能と使用法を詳しく説明し、読者に役立つ具体的なコード例を提供します。

美的集団の2023年の売上高は前年比8.18%増の3,720億元、配当は208億元となる見通し 美的集団の2023年の売上高は前年比8.18%増の3,720億元、配当は208億元となる見通し Mar 28, 2024 pm 02:42 PM

3月28日の当ウェブサイトのニュースによると、美的集団は最近、2023年の営業利益が前年比8.18%増の3,720億3,700万元、上場企業の株主に帰属する純利益は337億2,000万元を達成すると発表した。 、前年比14.10%増、1株当たり基本利益は4.93元、前年比13.59%増。美的集団は10株当たり30元の現金配当を予定していると発表、配当総額は208億元となり、親会社に帰属する純利益の61.5%以上を占め過去最高となる。史上最高の配当率。財務報告データによると、2023年の美的の3大ToB事業収益は、新エネルギーと産業技術、ロボティクスとオートメーション、スマートビルディング戦略技術で279億元(前年比29%増)、311億元となる。それぞれ人民元(前年比増加)。

GateToken(GT)通貨とは何ですか? GT コインの機能とトークンエコノミクスの紹介 GateToken(GT)通貨とは何ですか? GT コインの機能とトークンエコノミクスの紹介 Jul 15, 2024 pm 04:36 PM

GateToken(GT)通貨とは何ですか? GT (GateToken) は、GateChain チェーンのネイティブ資産であり、Gate.io の公式プラットフォーム通貨です。 GT コインの価値は、Gate.io および GateChain エコロジーの発展と密接に関連しています。ゲートチェーンとは何ですか? GateChain は 2018 年に誕生し、Gate.io によって開始された新世代の高性能パブリック チェーンです。 GateChain は、ユーザーのオンチェーン資産のセキュリティを保護し、便利な分散トランザクション サービスを提供することに重点を置いています。 GateChain の目標は、エンタープライズレベルの安全で効率的な分散型デジタル資産ストレージ、配信、およびトランザクションのエコシステムを構築することです。ゲートチェーンにはオリジナルがあります

See all articles