ManHunter
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: $news = preg_replace("/\[url\](.*?)\[\/url\]/","<a href=\\1 target=_blank>\\1</a>",$news); | но все равно желательно не просто заменять (.*?), в тегах [url], [email], [img], а еще и проверять валидность этого (.*?). У меня так чуть форум не нахлобучили через XSS, ладно я IE никогда не пользуюсь, а то бы все куки увели. Вот что работает у меня на сайте: Код: function tag_to_html($str) { $pattern = array("/\[url\]((http:\/\/|www\.|ftp:\/\/).*?)\[\/url\]/i", "/\[url=((http:\/\/|www\.|ftp:\/\/)[a-z0-9\~\@\#\(\)\!\?\,\.\/\%\=\:\&\+\;\_\-]*?)\](.*?)\[\/url\]/i", "/\[img\](http:\/\/[a-z0-9\~\@\(\)\!\,\.\/\=\:\+\;\_\-]*?\.(png|jpg|jpeg|gif))\[\/img\]/i", "/\[b\](.*?)\[\/b\]/i", "/\[u\](.*?)\[\/u\]/i", "/\[i\](.*?)\[\/i\]/i", "/\[s\](.*?)\[\/s\]/i", "/\[marquee\](.*?)\[\/marquee\]/i", "/\[center\](.*?)\[\/center\]/i", "/\[color=([0-9a-z\#]+)\](.*?)\[\/color\]/i", "/\[size=1\](.*?)\[\/size\]/i", "/\[size=2\](.*?)\[\/size\]/i", "/\[size=3\](.*?)\[\/size\]/i", "/\[size=4\](.*?)\[\/size\]/i", "/\[size=5\](.*?)\[\/size\]/i", "/\[size=6\](.*?)\[\/size\]/i", "/\[email\]([A-Za-z0-9_\-\.]+\@([A-Za-z0-9_\-]+\.){1,}[A-Za-z]+)\[\/email\]/i", "/\[email=([A-Za-z0-9_\-\.]+\@([A-Za-z0-9_\-]+\.){1,}[A-Za-z]+)\](.*?)\[\/email\]/i" ); $replacement = array("<a class=\"nn\" href=\"\${1}\" target=\"_blank\">\${1}</a>", "<a class=\"nn\" href=\"\${1}\" target=\"_blank\">\${3}</a>", "<img src=\"\${1}\" border=\"0\" alt=\"user posted image\">", "<b>\${1}</b>", "<u>\${1}</u>", "<i>\${1}</i>", "<s>\${1}</s>", "<marquee direction=\"RIGHT\">\${1}</marquee>", "<center>\${1}</center>", "<font color=\${1}>\${2}</font>", "<span style=\"font-size:9pt\">\${1}</span>", "<span style=\"font-size:13pt\">\${1}</span>", "<span style=\"font-size:15pt\">\${1}</span>", "<span style=\"font-size:17pt\">\${1}</span>", "<span style=\"font-size:21pt\">\${1}</span>", "<span style=\"font-size:27pt\">\${1}</span>", "<a class=\"nn\" href=\"mailto:\${1}\">\${1}</a>", "<a class=\"nn\" href=\"mailto:\${1}\">\${3}</a>" ); return(preg_replace($pattern, $replacement, $str)); } |
---------- "На любое мое движение ваша реакция предусмотрена, В лучшем случае - равнодушие, в худшем случае - патология..." (C) Егор Летов |
| Всего записей: 3101 | Зарегистр. 20-03-2004 | Отправлено: 14:44 31-05-2005 | Исправлено: ManHunter, 14:51 31-05-2005 |
|