国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

PHP で HTML/XML を解析して処理するにはどうすればよいですか?
P粉838563523
P粉838563523 2023-08-23 20:18:41
0
2
682
<p>HTML/XML を解析してそこから情報(bào)を抽出するにはどうすればよいですか? </p>
P粉838563523
P粉838563523

全員に返信(2)
P粉402806175

シンプルな HTML DOM パーサー を試してください。

リーリー

HTML要素を変更する方法:

リーリー

HTML からコンテンツを抽出する: リーリー スラッシュドットを取得:

リーリー
P粉436410586

ネイティブ XML 拡張機(jī)能

私は、ネイティブ XML 拡張機(jī)能の の 1 つ を使用することを好みます。これは、通常、PHP を使用した場(chǎng)合、すべてのサードパーティ ライブラリよりも高速であり、マークアップに対して必要なすべての制御を提供するためです。

ドム

DOM は、実際の (壊れた) HTML を解析して変更することができ、XPath クエリ を?qū)g行できます。これは libxml に基づいています。

DOM を使った作業(yè)が生産的になるまでには時(shí)間がかかりますが、私の意見では、時(shí)間をかける価値はあります。 DOM は言語に依存しないインターフェイスであるため、複數(shù)の言語で実裝されているため、プログラミング言語を変更する必要がある場(chǎng)合は、その言語の DOM API の使用方法をすでに知っている可能性が高くなります。

DOM 拡張機(jī)能の使用方法は StackOverflow で幅広く取り上げられているため、DOM 拡張機(jī)能を使用することを選択した場(chǎng)合、遭遇する問題のほとんどは Stack を検索/參照することで確実に解決できます。オーバーフロー。

基本的な使用例一般概念の概要は、他の回答にあります。

XMLリーダー

XMLReader は、DOM と同様、libxml に基づいています。 HTML パーサー モジュールをトリガーする方法がわからないため、破損した HTML を解析するために XMLReader を使用することは、libxml の HTML パーサー モジュールを使用するように明示的に指示できる DOM を使用することほど強(qiáng)力ではない可能性があります。

基本的な使用例は別の回答に記載されています。

XML パーサー

XML パーサー ライブラリも libxml に基づいており、

SAX スタイルの XML プッシュ パーサーを?qū)g裝しています。おそらくメモリ管理には DOM や SimpleXML よりも優(yōu)れた選択肢ですが、XMLReader によって実裝されたプル パーサーよりも使用するのが困難です。

シンプルXml

SimpleXML は、HTML が有効な XHTML であることがわかっている場(chǎng)合のオプションです。壊れた HTML を解析する必要がある場(chǎng)合は、ブロックされてしまうため、SimpleXml を考慮しないでください。

基本的な使用例

が提供されており、PHP マニュアルには他の多くの例 が記載されています。

サードパーティ ライブラリ (libxml ベース)

サードパーティのライブラリを使用したい場(chǎng)合は、文字列解析の代わりに以下の

DOM

/libxml を?qū)g際に使用することをお?jiǎng)幛幛筏蓼埂?

FluentDom

HTMLPageDom

phpQuery

これは「放棄されたソフトウェアとバグ: 自己責(zé)任で使用してください」と説明されていますが、最小限のメンテナンスが行われているようです。

ラミナスダム

fDOMドキュメント

セイバー/xml

流體XML


サードパーティ (libxml に基づいていない)

DOM/libxml をベースに構(gòu)築する利點(diǎn)は、ネイティブ拡張機(jī)能をベースに構(gòu)築しているため、すぐに優(yōu)れたパフォーマンスが得られることです。ただし、すべてのサードパーティ ライブラリがこの方法を採用しているわけではありません。その一部を

に以下に示します。

PHP シンプルな HTML DOM パーサー

通常、このパーサーは推奨しません。コードベースはひどいもので、パーサー自體は非常に遅く、メモリを大量に消費(fèi)します。すべての jQuery セレクター (subselector など) が使用できるわけではありません。 libxml ベースのライブラリは、これを簡(jiǎn)単に上回るパフォーマンスを発揮するはずです。

PHP HTML パーサー

繰り返しになりますが、このパーサーはお?jiǎng)幛幛筏蓼护蟆?CPU使用率が高いとかなり遅くなります。作成した DOM オブジェクトのメモリをクリアする機(jī)能もありません。これらの問題は、入れ子になったループで特に深刻です。文書自體は不正確でスペルミスが含まれており、2016 年 4 月 14 日以降修正の対応は行われていません。


HTML5

上記を使用して HTML5 を解析できますが、 HTML5 で許可されているタグが原因で、奇妙なことが起こる可能性があります 。したがって、HTML5 の場(chǎng)合は、専用のパーサーの使用を検討することをお?jiǎng)幛幛筏蓼?。これら?PHP で記述されているため、低レベル言語でコンパイルされた拡張機(jī)能と比較してパフォーマンスが低下し、メモリ使用量が増加することに注意してください。

HTML5DomDocument

HTML5


###正規(guī)表現(xiàn)###

最後および

最も推奨されない

では、正規(guī)表現(xiàn)を使用して HTML a > からデータを抽出できます。一般に、HTML では正規(guī)表現(xiàn)を使用することはお?jiǎng)幛幛扦蓼护蟆? Web 上で見つけられる、一致するタグのコード スニペットのほとんどは脆弱です。ほとんどの場(chǎng)合、これらは HTML の非常に特殊なスニペットでのみ機(jī)能します。マークアップの小さな変更 (どこかにスペースを追加したり、マークアップ內(nèi)の屬性を追加または変更したりするなど) によって、正規(guī)表現(xiàn)が正しく記述されないと失敗する可能性があります。 HTML で RegEx を使用する前に、何をしているのかを理解しておく必要があります。

HTML パーサーは HTML の構(gòu)文規(guī)則をすでに知っています。新しい正規(guī)表現(xiàn)を作成するたびに、正規(guī)表現(xiàn)を?qū)W習(xí)する必要があります。場(chǎng)合によっては正規(guī)表現(xiàn)が適していますが、それはユースケースによって異なります。

あなたは

より信頼性の高いパーサーを作成できます

ただし、上記のライブラリがすでに存在する場(chǎng)合は、正規(guī)表現(xiàn)を使用して 完全で信頼性の高い カスタム パーサーを作成し、この點(diǎn)でより適切な作業(yè)を行います。 、それは時(shí)間の無駄です。 関連項(xiàng)目

クトゥルフ流解析HTML


少しお金を使いたい場(chǎng)合は、見てみることができます

私は PHP アーキテクトや著者とは何の関係もありません。

最新のダウンロード
詳細(xì)>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート