Функция на PHP для закрытия незакрытых тегов

dzsoftИнтересная функция с rmcreative.ru. Функция позволяет закрыть незакрытые HTML-теги. Может быть очень полезна и необходима. Создана с использованием регулярных выражений.

<code class="php"><span class="keyword">function</span> closetags(<span class="variable">$html</span>) {
</code><code class="php">    <span class="variable">$single_tags</span> = <span class="keyword">array</span>(<span class="string">'meta'</span>,<span class="string">'img'</span>,<span class="string">'br'</span>,<span class="string">'link'</span>,<span class="string">'area'</span>);</code>

preg_match_all ('~<([a-z0-9]+)(?: .*)?(?<![/|/ ])>~iU', $html, $result);
$openedtags = $result[1];
    preg_match_all ('~</([a-z0-9]+)>~iU', $html, $result);
$closedtags = $result[1];
$len_opened = count ($openedtags);
if (count ($closedtags) == $len_opened) {

 return $html; }

$openedtags = array_reverse ($openedtags);
for ($i=0; $i < $len_opened; $i++) {

if (!in_array ($openedtags[$i], $single_tags)) {
   
if (FALSE !== ($key = array_search ($openedtags[$i], $closedtags))) {
  unset($closedtags[$key]);
     }
    else {

  $html .= '</'.$openedtags[$i].'>';
    }
}
    }
    return $html;
}

Запись навигация

Top