DOMElementのシリアル番号付きのを求めているようですか?例えば。 <a href="http://example.org">link text</a>
を含む文字列が必要ですか? (あなたの質問をより明確にしてください。)
$url = 'http://example.com';
$dom = new DOMDocument();
$dom->loadHTMLFile($url);
$anchors = $dom->getElementsByTagName('a');
foreach ($anchors as $a) {
// Best solution, but only works with PHP >= 5.3.6
$htmlstring = $dom->saveHTML($a);
// Otherwise you need to serialize to XML and then fix the self-closing elements
$htmlstring = saveHTMLFragment($a);
echo $htmlstring, "\n";
}
function saveHTMLFragment(DOMElement $e) {
$selfclosingelements = array('></area>', '></base>', '></basefont>',
'></br>', '></col>', '></frame>', '></hr>', '></img>', '></input>',
'></isindex>', '></link>', '></meta>', '></param>', '></source>',
);
// This is not 100% reliable because it may output namespace declarations.
// But otherwise it is extra-paranoid to work down to at least PHP 5.1
$html = $e->ownerDocument->saveXML($e, LIBXML_NOEMPTYTAG);
// in case any empty elements are expanded, collapse them again:
$html = str_ireplace($selfclosingelements, '>', $html);
return $html;
}
しかし、それは潜在的にエンコーディングを混ぜる可能性があるため、何をやっていることは危険であることに注意してください。出力を別のDOMDocumentとして持ち、importNode()
を使用して、必要なノードをコピーする方が良いでしょう。あるいは、XSLスタイルシートを使用します。
あなたの質問から逸脱することはありませんが、PHP Simple HTML DOM Parserを使用することをお勧めします。このようなコーディングはずっと簡単になります。 http://simplehtmldom.sourceforge.net/manual.htm – Norse
私はそれについて知っているし、私の人生を楽にするだろうが、私はコードの一部が売却される可能性があると私はそれで図書館を出荷することはできません知っている。 –
私は要素全体を取得する方法を知る必要があります –