さて、これは私が達成したことです。これは最も効率的な方法ではないかもしれませんが、私は共有します。ここで紹介したDOMinnerHTML()とpreg_split()を使用しました。<br>
これにより、最後の3つのタグの後のテキストが削除されます。
<?php
$html = <<<STR
<div>
<div><img sec=""></div>
<br>
<h3>title</h3>
<span>some text here</span>
<br>
Some text that I want to remove.
<br>
<br>
</div>
STR;
$doc = new DOMDocument;
$doc->loadHTML($html);
$node = $doc->getElementsByTagName('div')->item(0);
$innerHtml = DOMinnerHTML($node);
$arrHtml = preg_split('/<br.*?\/?>/i', $innerHtml); // devide the string into arrays by <br> or <br />
array_splice($arrHtml, -3); // remove the last three elements
$edited = implode(" ", $arrHtml);
echo $edited;
function DOMinnerHTML($element)
{
$innerHTML = "";
$children = $element->childNodes;
foreach ($children as $child)
{
$tmp_dom = new DOMDocument();
$tmp_dom->appendChild($tmp_dom->importNode($child, true));
$innerHTML.=trim($tmp_dom->saveHTML());
}
return $innerHTML;
}
?>