elcomnet Опубликовано 3 Июля 2008 Жалоба Поделиться Опубликовано 3 Июля 2008 (изменено) Здравствуйте!Долго ломал голову сам, не додумался, прошу мне помочь. Значится, есть переменная, в которое содержится некий текст. В тексте могут быть смайлы, жирный текст, ссылки и тп.Все в формате BBкодов. Переменная есть $show['message']. Вот содержимое парсера: функция для конвертации URLfunction handle_url_tag($url, $link = '') { global $pun_user; $full_url = str_replace(array(' ', '\'', '`', '"'), array('%20', '', '', ''), $url); if (strpos($url, 'www.') === 0) // If it starts with www, we add http:// $full_url = 'http://'.$full_url; else if (strpos($url, 'ftp.') === 0) // Else if it starts with ftp, we add ftp:// $full_url = 'ftp://'.$full_url; else if (!preg_match('#^([a-z0-9]{3,6})://#', $url, $bah)) // Else if it doesn't start with abcdef://, we add http:// $full_url = 'http://'.$full_url; // Ok, not very pretty :-) $link = ($link == '' || $link == $url) ? ((strlen($url) > 55) ? substr($url, 0 , 39).' … '.substr($url, -10) : $url) : stripslashes($link); return '<a href="'.$full_url.'">'.$link.'</a>'; } массивы других кодов и смайлов $pattern = array('#\[b\](.*?)\[/b\]#s', '#\[i\](.*?)\[/i\]#s', '#\[u\](.*?)\[/u\]#s', '#\[s\](.*?)\[/s\]#s', '#\[mono\](.*?)\[/mono\]#s', '#\[url\]([^\[]*?)\[/url\]#e', '#\[url=([^\[]*?)\](.*?)\[/url\]#e', '#\[search\]([^\[]*?)\[/search\]#e', '#\[search=([^\[]*?)\](.*?)\[/search\]#e', '#\[email\]([^\[]*?)\[/email\]#', '#\[email=([^\[]*?)\](.*?)\[/email\]#', '#\[color=([a-zA-Z]*|\#?(?:[0-9a-fA-F]{3}){1,2})](.*?)\[/color\]#s', '#\[center\](.*?)\[/center\]#s', '#\[right\](.*?)\[/right\]#s', '#\[left\](.*?)\[/left\]#s', '#\[size=([0-9]*)](.*?)\[/size\]#s'); $replace = array('<strong>$1</strong>', '<em>$1</em>', '<span class="bbu">$1</span>', '<span class="bbs">$1</span>', '<code>$1</code>', 'handle_url_tag(\'$1\')', 'handle_url_tag(\'$1\', \'$2\')', 'handle_search_tag(\'forum\', \'$1\')', 'handle_search_tag(\'$1\', \'$2\')', '<a href="mailto:$1">$1</a>', '<a href="mailto:$1">$2</a>', '<span style="color: $1">$2</span>', '</p><p align="center">$1</p><p>', '</p><p align="right">$1</p><p>', '</p><p align="left">$1</p><p>', '<span style="font-size: $1px">$2</span>'); //prevrashem text v smailu i dobavlyaem put'... $smiley_text = array(':))', ':)', '=)', ':|', '=|', ':(', '=(', ':D', '=D', ':o', ':O', ';)', ':/', ':P', ':lol:', ':mad:', ':rolleyes:', ':cool:'); $smiley_img = array($p.'roll.png">',$p.'smile.png">', $p.'smile.png">', $p.'neutral.png">', $p.'neutral.png">', $p.'sad.png">', $p.'sad.png">', $p.'big_smile.png">', $p.'big_smile.png">', $p.'yikes.png">', $p.'yikes.png">', $p.'wink.png">', $p.'hmm.png">', $p.'tongue.png">', $p.'lol.png">', $p.'mad.png">', $p.'roll.png">', $p.'cool.png">'); Вот как я сделал в фильном файле: $message = preg_replace($pattern, $replace, $show[message]); $message = str_replace($smiley_text, $smiley_img, $message); $message= str_replace($fromurl, $tourl, $message); echo nl2br($message); Парсер не полностью написан мной.В частности, функции замены [url= на <a href и тд неписаны не мной. Так вот, функция не парсит это сообщение.Подскажите, как написать новую функцию для парсинга BBcode ?Не могу ничего умного придумать..... Изменено 3 Июля 2008 пользователем elcomnet Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.