首页 > 解决方案 > 如何使用 php 从 DIV 标签中获取 html 代码

问题描述

我有示例代码:

<div id="modal-body-3" class="modal-body">
    <p class="text">Tài khoản của quý khách đã được ghi nợ/ghi có với những thông tin sau:</p>
    <div class="modal-row first">
      <div class="modal-label">Ngày giao dịch</div>
      <div class="modal-controls"><span class="transaction-date">21/12/2019</span><span class="transaction-time">09:38:07</span></div>
    </div>
    <div class="modal-row">
      <div class="modal-label">Ngày hạch toán</div>
      <div class="modal-controls">21/12/2019 09:38:07</div>
    </div>
  </div>

我想要代码输出:

<p class="text">Tài khoản của quý khách đã được ghi nợ/ghi có với những thông tin sau:</p>
    <div class="modal-row first">
      <div class="modal-label">Ngày giao dịch</div>
      <div class="modal-controls"><span class="transaction-date">21/12/2019</span><span class="transaction-time">09:38:07</span></div>
    </div>
    <div class="modal-row">
      <div class="modal-label">Ngày hạch toán</div>
      <div class="modal-controls">21/12/2019 09:38:07</div>
    </div>

我尝试过 DOMDocument:

$res = array();
$doc = new DOMDocument();
@$doc->loadHTML('<?xml encoding="UTF-8">'.$html);
$classname = "modal-body";
$finder = new DomXPath($doc);
$spanner = $finder->query("//*[contains(@class, '$classname')]");
foreach ($spanner as $entry) {
  $res[] = $entry->nodeValue;
}

但是,代码只输出没有 html 标签的文本。求帮助!

标签: phpregexdomdocument

解决方案


你写的问题不清楚。如果您的文本由<div id="modal-body-3">包含任意 HTML 的 HTML 组成,并且您想要提取该 HTML,那么这是在客户端执行此操作的一种方法:

let HTML = `<div id="modal-body-3" class="modal-body">
    <p class="text">Tài khoản của quý khách đã được ghi nợ/ghi có với những thông tin sau:</p>
    <div class="modal-row first">
      <div class="modal-label">Ngày giao dịch</div>
      <div class="modal-controls"><span class="transaction-date">21/12/2019</span><span class="transaction-time">09:38:07</span></div>
    </div>
    <div class="modal-row">
      <div class="modal-label">Ngày hạch toán</div>
      <div class="modal-controls">21/12/2019 09:38:07</div>
    </div>
  </div>`
  
let el = document.getElementById("html");
el.innerHTML = HTML; // store HTML into the DOM
el = document.getElementById('modal-body-3'); // get the text of what this encloses
let inner = el.innerHTML.trim();
console.log(inner);
<div id="html" style="display: none;"></div>


推荐阅读