簡體   English   中英

PHP通過LoadHTML從Div加載內容

[英]PHP Load Content From Div Via LoadHTML

我有一些問題需要檢索包含類名“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="&lt;iframe src=&quot;&quot; frameborder=0 width=510 height=400 scrolling=no&gt;&lt;/iframe&gt;">
      </div>

$ Embed_HTML來源:
使用以下代碼將此視頻嵌入您的網站:

首先,您可以使用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的有用評論 ,你可以在5.3.6之前的PHP版本中使用DOMDocument::saveXML()來獲得可接受的結果(取決於原始HTML的實際內容),如下所示:

echo $dom->saveXML( $div );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM