-1

I have example code:

<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>

I want code output:

<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>

I has try 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;
}

But, code output text only without html tag. Tks for help!

1 Answers1

0

Your question as written is not clear. If you have text that consists of HTML which has a <div id="modal-body-3"> that encloses arbitrary HTML and you want to extract that HTML, then this is one way to do it on the client side:

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>
Booboo
  • 38,656
  • 3
  • 37
  • 60