最近、HTML文書からすべてのテキストノードを解析するのに助けを受けました。次エキス使用PHP DOM - 特定のHTMLタグを含むテキストノードを解析する
$doc = new DOMDocument();
$doc->loadHTML($contents);
$doc->loadHTML("<p>not in the brackets..</p>");
$xpath = new DOMXPath($doc);
$textnodes = $xpath->evaluate('//text()');
:結果のコードは、このだった
<p>This is a <b>nested <i>HTML</i> tag<b>...</p>
を私は要素の配列を作成することができています:
Array
(
[0] => This is a
[1] => nested
[2] => HTML
[3] => tag
[4] => ...
)
私は実際にやりたい何か、ただし、すべてのテキストノードを取得することですが、特定のHTMLタグを「参照してください」にすることができます。たとえば、<i>
,<b>
、<u>
タグを個々のノードとして解析することは望ましくありません。むしろ、前のテキストノードに結合されています。上記の配列は、理想的には、次のようになります。
Array
(
[0] => This is a nested HTML tag...
)
を一方、<p>
タグは別々のノードとして認識されるべきです。だから、次のテキスト:
<p>paragraph 1 <b>here</b></p> <p>paragraph 2</b>
理想として解析されます:
Array
(
[0] => paragraph 1 <b>here</b>
[1] => paragraph 2
は、私はいくつかのXPathやPHP DOMについて読ん行っているが、どのように正直に、私は本当に手掛かりを持っていませんこれについて。誰かが私を正しい方向に向けることができますか?ありがとうございました。
編集
ただ、出力は配列形式でなければなりません明確にします。私の目的は、ページからすべてのテキストを解析し、翻訳ファイルで使用できるようにすることです。したがって、完全な文章をまとめるためには、構文解析されたテキストに特定のHTMLタグ(<b>
など)が望ましく、新しい翻訳ファイルにマークアップをおおまかに保持する必要があります。
重複している可能性があります。これをチェックしてください:http://stackoverflow.com/questions/2442314/php-simplexml-remove-xpath-node –
@カルヴェン私がその記事を誤解していない限り、質問は私と同じことを求めていません。 – Pete171
重複[http://stackoverflow.com/questions/2087103/innerhtml-in-phps-domdocument](http://stackoverflow.com/questions/2087103/innerhtml-in-phps-domdocument) – pguardiario