我有一些问题需要检索包含类名“tabEmbed”的specefic div的HTML
代码有效但由于某种原因,它只返回txt ...没有HTML。所有的文本格式都是条纹化的...通常也应该嵌入代码。我错过了什么?
$dom = new DOMDocument;
@$dom->loadHTML($Video_Source_HTML);
$Div_Data = $dom->getElementsByTagName('div');
foreach($Div_Data as $Div) {
if ($Div->getAttribute('id') === 'tabEmbed') {
$Embed_HTML = $Div->nodeValue;
if(preg_match('/<input type="text"(.*?)">/is', $Embed_HTML, $Embed)) {
$Embed_Code = $Embed[1];
}
}
}
网站视频嵌入代码来源
<div id="tabEmbed" class="tab">
<h3 class="blackTitle">Embed this video to your site with this code:</h3>
<input type="text" name="media_embed_code" id="mediaEmbedCodeInput" size="110" onclick="this.focus();this.select();" value="<iframe src="" frameborder=0 width=510 height=400 scrolling=no></iframe>">
</div>
$ Embed_HTML来源:
使用以下代码将此视频嵌入您的网站:
答案 0 :(得分:2)
首先,您可以使用DOMDocument::getElementById()
代替DOMDocument::getElementsByTagName()
来大大简化您的代码。
然后,如果您使用的PHP版本等于或高于5.3.6,则可以使用DOMDocument::saveHTML()
输出节点的“outerHTML”,如下所示:
$dom = new DOMDocument;
@$dom->loadHTML( $Video_Source_HTML );
// let's use getElementById() in stead of getElementsByTagName()
$div = $dom->getElementById( 'tabEmbed' );
// be sure to check your browser's source code, or output this as text/plain
echo $dom->saveHTML( $div );
并且,根据GordonM's helpful comment,您可以在5.3.6之前的PHP版本中使用DOMDocument::saveXML()
,以获得可接受的结果(取决于原始HTML的实际内容),如下所示:
echo $dom->saveXML( $div );