スクレイプしてローカルXMLファイルに変換するか、MySQLDBに追加する外部HTMLソースがあります。
外部ソースはほとんど正規化されており、(ある程度)セマンティックであるため、すべてのコンテンツまたはすべてのコンテンツなどXPATH
を取得するために使用するだけです。問題は、これらのアイテムがまたはタグを使用して必要な要素のスタイルを設定することです。td
li
<strong>
<b>
<i>
重要なのは特定のテキストに重点を置くことであり、開発者はブラウザのデフォルトではないCSSを使用したい場合があるため、これは技術的に意味論的です。
問題は、私が取得しようとしている実際のコンテンツがこのインライン要素の子と見なされるため、PHP拡張機能がsimplexml
またはDOMDocument
をDOMNode
そのように扱うことです。例えば:
<table>
<tr><td>Thing 1</td><td>Thing 2</td></tr>
<tr><td>Thing 3</td><td>Thing 4</td></tr>
<tr><td><strong>Thing 5</strong></td><td><strong>Thing 6</strong></td></tr>
</table>
結果は次のようになります。
[table] =>
[tr] =>
[td] => Thing 1
[td] => Thing 2
[tr] =>
[td] => Thing 3
[td] => Thing 4
[tr] =>
[td] =>
[strong] => Thing 5
[td] =>
[strong] => Thing 6
明らかに、上記はsimplexmlが返すものではありませんが、上記は一般的な問題を反映しています。
DOMDocumentにすでに組み込まれているパラメーターを使用するか、非常に洗練されたXPathクエリを使用して、td
子(存在する場合)から子孫のステータスを取り除き、すべてのコンテンツをのテキストとして処理する要素のコンテンツを取得する方法はありますか?照会された要素?
今のところ、私が持っている唯一の解決策は次のいずれかです。
a)foreach
次のように各結果をチェックするループがあります。
$result_text = ($result -> strong) ? $result - strong : $result;
b)regexを使用し<strong>
て、HTML文字列からタグを削除してから、simplexmlやDOMDocumentなどのビルド済みクラスにインポートします。