Если я правильно понял, вы хотите найти последний закрывающий тег в документе.
Вы можете найти последнее вхождение </*>
, у которого больше нет символов «<>» после него. Это будет последний тег, при условии, что все оставшиеся угловые скобки закодированы как <
и >
:
<?php
$html = '<div id="test"><p style="hello_world">This is a test.</p></div>';
// Outputs:
// '<div id="test"><p style="hello_world">This is a test.</p></tag>'
echo preg_replace('/<\/[A-Z][A-Z0-9]*>([^<>]*)$/i', '</tag>$1', $html);
Это заменит окончательный </div>
на </tag>
, сохранив любой контент, следующий за последним закрывающим тегом.
Я не знаю, почему вы хотите сделать это только с закрывающим тегом, так как если вы его измените, вам также придется изменить соответствующий открывающий тег. Кроме того, при этом не будет найден последний самозакрывающийся тег, например <img />
или <br />
.