Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: bbcode... проблемс...
 
 автор: Sobachka   (21.05.2007 в 22:27)   письмо автору
 
 

вообщем тема такова.... допустим сделал bbcode в форуме у себя... но возникла проблемка...

Жирный: [big][/big] //сделал так что б bbcode 
Наклонный: [l] [/l]
URL: [url] [/url]
---------------------------------------------------
если кто додумаеться написать [big][url][l]softtime.ru[/big][/url][/l]

то ясное дело результат будет не валиден в хтмл...
подскажите какую нибудь идею как сделать замену ббкода только если он не пересекаеться... ну или валиден... plz

   
 
 автор: Loki   (21.05.2007 в 22:39)   письмо автору
 
   для: Sobachka   (21.05.2007 в 22:27)
 

Возможны варианты:
1. Заменяем регулярными выражениями только парные теги, а все пуcтые убираем (или оставляем - как кому нравится)
2. подчитываем количество открывающих и закрывающих тегов. Добавляем недостающие закрывающие. В идеале бы построить дерево документа, но это больно жирно.
Выбирайте.

   
 
 автор: Sobachka   (22.05.2007 в 00:27)   письмо автору
 
   для: Loki   (21.05.2007 в 22:39)
 

>Возможны варианты:
>1. Заменяем регулярными выражениями только парные теги, а все пуcтые убираем (или оставляем - как кому нравится)
>2. подчитываем количество открывающих и закрывающих тегов. Добавляем недостающие закрывающие. В идеале бы построить дерево документа, но это больно жирно.
>Выбирайте.

вы чуть-чуть не поняли...
все тэги закрыты...
но располагаються чуток не корректно если заметили...

   
 
 автор: bronenos   (22.05.2007 в 07:32)   письмо автору
 
   для: Sobachka   (22.05.2007 в 00:27)
 

если пользователь их так оставил значит его проблемы имхо

   
 
 автор: Loki   (22.05.2007 в 10:03)   письмо автору
 
   для: Sobachka   (22.05.2007 в 00:27)
 

>но располагаються чуток не корректно если заметили...
Заметил. Но я всегда считал что некорректный код - проблема того, кто его написал. Bbcode и так упрощены до предела, так что городить проверки, как мне кажется, лишнее.

   
 
 автор: Sobachka   (22.05.2007 в 16:36)   письмо автору
 
   для: Loki   (22.05.2007 в 10:03)
 

блин... яж не прошу убеждать меня что лишне... если спрашивал значит требуеться так :( если html терпелив к ошибкам то wml увы нет...

   
 
 автор: kasmanaft   (22.05.2007 в 17:05)   письмо автору
 
   для: Sobachka   (22.05.2007 в 16:36)
 

В принципе не очень сложно ответить пользоватею правильно он использовал теги или нет... Рег. выражением можно посмотреть, чтобы в самом глубоком теге не закрывались другие.. и так до наружнего... А вот исправиииить да тааак чтобы по задумке пользователя....

   
 
 автор: kasmanaft   (22.05.2007 в 17:45)   письмо автору
 
   для: kasmanaft   (22.05.2007 в 17:05)
 

Самому интересно стало) Вот что получилось:

<pre>
<?php
$text 
"[big][url][l]softtime.ru[/l][/big][/url]";
while (
preg_match("#\[(\w+)\](((?!\[/?\w*]).)*?)\[/\\1\]#"$text))
   
$text preg_replace("#\[(\w+)\](((?!\[/?\w*]).)*?)\[/\\1\]#"""$text);
if (
preg_match("#\[/?\w+\]#"$text))
    echo 
"Были допущены ошибки. RTFM, блин... голову морочат тут.";
else echo 
"Всё норм.";
?>

Объясню что оно делает: ищется самый глубокий открытый тег, внутри которого нет других тегов. Потом вместе со своим закрывающим тегом они вырезаются. И так до тех пор, пока есть что вырезать. Если после того, как все вырезали, в тексте остался хотя бы один тег, значит расставлены они были не верно.

Если известны все теги, можно это же сделать спомощью строковых функций. Так будет быстрее работать.

   
 
 автор: Loki   (22.05.2007 в 17:59)   письмо автору
 
   для: Sobachka   (22.05.2007 в 16:36)
 

А я вас и не убеждаю. Я в первом посте написал что надо сделать: стройте дерево структуры документа и проверяйте его валидность.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования