067 607 57 84
заповніть форму нижче:
Всі знають, що в адміністративній панелі сайту добре правити контент сторінок в візуальному редакторі, який має назву WYSIWYG. Ось і наш редактор якось дивно себе почав вести, перестав закривати HTML теги (не всі, а ті, які йому хочеться). Оскільки JS програміст в цей час був у відпустці потрібно було терміново виправити проблему. Довелося вставляти милицю у вигляді скрипта на PHP, які буде автоматично закрити всі незакриті теги.
Наприклад кривий код:
<a href="http://site.com"> Розробка інтернет-магазинів </a> <div><br /> Кращі ціни <div><div> на </div> розкрутку <b> і оптимізацію <p> сайтів </b>
Функція:
<?
function close_tags($content)
{
$position = 0;
$open_tags = array();
// теги для ігнорування
$ignored_tags = array('br', 'hr', 'img');
while (($position = strpos($content, '<', $position)) !== FALSE)
{
// забираємо все теги з контенту
if (preg_match("|^<(/?)([a-z\d]+)\b[^>]*>|i", substr($content, $position), $match))
{
$tag = strtolower($match[2]);
// ігноруємо всі одинарні теги
if (in_array($tag, $ignored_tags) == FALSE)
{
// тег відкритий
if (isset($match[1]) AND $match[1] == '')
{
if (isset($open_tags[$tag]))
$open_tags[$tag]++;
else
$open_tags[$tag] = 1;
}
//тег закритий
if (isset($match[1]) AND $match[1] == '/')
{
if (isset($open_tags[$tag]))
$open_tags[$tag]--;
}
}
$position += strlen($match[0]);
}
else
$position++;
}
//закриваєм всі теги
foreach ($open_tags as $tag => $count_not_closed)
{
$content .= str_repeat("</{$tag}>", $count_not_closed);
}
return $content;
}
?>
Приклад використання:
$text = close_tags($_POST['body_page']);