То есть, любой гад не закроет тег <strong> например, и вся страничка теперь будет жирная.
Буду рад узнать есть ли такой готовый класс или готовая функция?
Спасибо !
Спустя 8 часов, 34 минуты, 27 секунд (28.03.2010 - 11:23) krasilich написал(а):
Что именно подразумевается под валидацией?
Валидация процесс то творческий=)
Если нужно только проверить все существующие теги на "закрытость" - это делаеться одной (не очень простой, правда) регуляркой.
Сейчас так сходу не напишу, но нужно что-то наподобии
Это точно не будет работать, если используются атрибуты тегов.
Валидация процесс то творческий=)
Если нужно только проверить все существующие теги на "закрытость" - это делаеться одной (не очень простой, правда) регуляркой.
Сейчас так сходу не напишу, но нужно что-то наподобии
preg_match('|\<(.*?)\>(?:.*)\<\/$1\>|is', $input, $matches);
Это точно не будет работать, если используются атрибуты тегов.
Спустя 20 минут, 13 секунд (28.03.2010 - 11:43) Hillel написал(а):
Цитата (krasilich @ 28.03.2010 - 08:23) |
Что именно подразумевается под валидацией? Валидация процесс то творческий=) Если нужно только проверить все существующие теги на "закрытость" - это делаеться одной (не очень простой, правда) регуляркой. Сейчас так сходу не напишу, но нужно что-то наподобии <pre class="sh_sourceCode" rel="php"> <span class="sh_function">preg_match</span><span class="sh_symbol">(</span><span class="sh_string">'|\<(.*?)\>(?:.*)\<\/\>|is'</span><span class="sh_symbol">,</span> <span class="sh_variable">$input</span><span class="sh_symbol">,</span> <span class="sh_variable">$matches</span><span class="sh_symbol">);</span> </pre> Это точно не будет работать, если используются атрибуты тегов. |
Да, мне надо проверить на закрытность, но чтобы он пропускал одиночные теги. И атрибуты тоже имеются.
У меня вот такие теги:
public static $tags = array(
'a' => array('href', 'target', 'name'),
'img' => array('src', 'alt'),
'b' => array(),
'strong' => array(),
'em' => array(),
'i' => array(),
'ul' => array(),
'li' => array(),
'ol' => array(),
'p' => array(),
'br' => array()
);
из которых BR и IMG одинарные.
Проблема в том, что если не закрыть какой-то тег, то это ломает html.
Мне говорили о tidy, для её установки мне надо в хостинг звонить, и кроме этого я ещё не понял как там всё работает.
Я надеялся найти готовое решение функции/класса. Скорее всего здесь regex нужет, а я в нём не так силён.
Буду рад любой помощи. Это мой первый самостоятельный блог, надеюсь я его доведу до конца.
Спасибо.
Спустя 57 минут, 18 секунд (28.03.2010 - 12:40) krasilich написал(а):
$tag_list = '';
foreach($tags as $tag => $attr)
$tag_list .= $tag.'|';
$tag_list = rtrim($tag_list, '|');
if(preg_match_all("|\<(".$tag_list.")(\/\>|\>(.*)\<\/$1\>)|is", $input_str))
echo 'ALL OK!';
не знаю насколько это рабочий код, но, думаю, идею почерпнуть можно.
ЗЫ. Не... код не обработает вложенные теги... пошел дальше думать....