прошедшее обновление показало, что эта часть форума (я говорю пока только о ней) имеет серьезные проблемы
цели
1. предотвратить "пустые" сообщения, состоящие из пустых тэгов типа [ b][/b]
2. предотвратить "пустые" сообщения, состоящие из пробельных символов
3. безопасные УРЛы
4. предотвратить некорректную обработку смешанных списков
- и
- анализируя коды тэгов я пришел к выводу, что львиная доля всего решается рнр-кодом, причем все это можно было бы решить "парой красивых регэкспов"
1. решениеодновременно решается задача неправильной вложенности тэгов типа [ b][ i] [/b][/i]Код: Выделить всё
/\[([biu])\]((?:(?!\[\/?\\1\]).)+)\[\/\\1\]/
2.
вырезать все начальные пробельные символы
trim(...)
и разумно вырезать внутренние пробельные символы (решения пока нет)
3. безопасные УРЛы (черновой вариант)4. смешанные списки - решения пока нет, но это решаемоКод: Выделить всё
$rexp = '/\[url(?:=(.+?))?\]((?:(?!(?:\[\/url\]|\[url(?:=(.+?))?\])).)+)\[\/url\]/s'; function url_cb($matches) { print_r($matches); if ($matches[1]) { $href = $matches[1]; $text = $matches[2]; } else { $href = $text = $matches[2]; } return "<a href=\"$href\">$text</a>"; } $x = preg_replace_callback($rexp, 'url_cb', $text);
- анализируя коды тэгов я пришел к выводу, что львиная доля всего решается рнр-кодом, причем все это можно было бы решить "парой красивых регэкспов"