HTML に似た古いドキュメントがたくさんあります。のように、それらは HTML のように見えますが、HTML の一部ではない追加の作成されたタグがあります
<strong>This is an example of a <pseud-template>fake tag</pseud-template></strong>
これらのファイルを解析する必要があります。PHP は、利用可能な唯一のツールです。ドキュメントは整形式の XML にはほど遠いものです。
私の最初の考えは、PHP DOMDocument で loadHTML メソッドを使用することでした。ただし、これらのメソッドは HTML タグを構成することを妨げ、文字列/ファイルの解析を拒否します。
$oDom = new DomDocument();
$oDom->loadHTML("<strong>This is an example of a <pseud-template>fake tag</pseud-template></strong>");
//gives us
DOMDocument::loadHTML() [function.loadHTML]: Tag pseud-template invalid in Entity, line: 1 occured in ....
私が思いついた唯一の解決策は、無効なタグを削除し、それらを有効な HTML タグ (おそらくタグ名の ID を持つスパン) に置き換える文字列置換関数でファイルを前処理することです。
よりエレガントなソリューションはありますか?有効と見なす追加のタグについて DOMDocument に知らせる方法はありますか? PHP用の別の堅牢なHTML解析クラス/オブジェクトはありますか?
(明らかでない場合、ここでは正規表現を有効な解決策とは見なしません)
更新: 偽のタグの情報はここでの目標の一部であるため、Tidy のようなものはオプションではありません。また、私は、整形式のクリーンアップのすべてではないにしても、ある程度のレベルを実行するものを求めています。これが、最初に DomDocument の loadHTML メソッドを探していた理由です。