К примеру переменная содержит строку:
$string = 'Hello world</p>';
или
$string = '<p>Hello world';
Как проверить открытие/закрытие тегов и в случае если ошибка найдена - исправить..
Проверку парных тегов, расположенных в одной строке, можно сделать с использованием регулярных выражений.
<?php
$arr = [
' <p>Hello world',
' Hello world</p>',
'<span>Hello world',
'Hello world</h1>'
];
function checker($str)
{
if (preg_match('/^\s*(<([a-z0-9]+)>).*/', $str, $res)) {
$str = $str . "</" . $res[2] . ">";
return $str;
}
if (preg_match('/^(\s*)(.*)<\/([a-z0-9]+)>$/', $str, $res)) {
if ($res[1]) {
$str = str_replace(
$res[1],
$res[1] . '<' . $res[3] . '>',
$str
);
} else {
$str = '<' . $res[3] . '>' . $str;
}
return $str;
}
}
foreach ($arr as &$item) {
$item = checker($item);
}
var_dump($arr);
лучше всего использовать html парсер, но если это делать вручную то надо еще учитывать тот факт что не все теги парные... если бы все были парными то тогда можно было бы проверять количество > и < (должно быть четное число)
$closed_tag = substr_count($text, "</p>");
$open_tag = substr_count($text, "<p>");
if ($closed_tag != $open_tag) {
$text = str_replace("<p>", "", $text);
$text = str_replace("</p>", "", $text);
}
Не нашел ничего более адекватного. Пришлось оставлять так.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости