Пишу свой простенький форум. На PHP & MySQL. Как сделать, чтоб при просмотре сообщения текстовая ссылка становилась активной? Как например, на этом форуме. Если можно - то распишите конструкцию поподробнее. Спасибо.
В сообщение вставляется ссылка. Как сделать, чтоб она автоматически оформлялась в виде тегов "a href", без кнопки "URL". Как вот например я сейчас простым текстом ввожу http://forum.php.ru А на выходе мы имеем уже подсвеченную ссылку со всеми необходимыми тегами. Вот это мне и нужно. То же и с адресами e-mail.
вот решил я посмотреть что хрониться в таблицы постов.. и хрпниться просто текст.. никаких сылок.. и тегов. чисто текст.. а это значит всё находиться в bbcode.php . я конечно могу и ошибиться.. но вот что мне кажеться меняет эти строчки: function make_clickable($text) { // pad it with a space so we can match things at the start of the 1st line. $ret = " " . $text; // matches an "xxxx://yyyy" URL at the start of a line, or after a space. // xxxx can only be alpha characters. // yyyy is anything up to the first space, newline, or comma. $ret = preg_replace("#([\n ])([a-z]+?)://([^, \n\r]+)#i", "\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>", $ret); // matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing // Must contain at least 2 dots. xxxx contains either alphanum, or "-" // yyyy contains either alphanum, "-", or "." // zzzz is optional.. will contain everything up to the first space, newline, or comma. // This is slightly restrictive - it's not going to match stuff like "forums.foo.com" // This is to keep it from getting annoying and matching stuff that's not meant to be a link. $ret = preg_replace("#([\n ])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[^, \n\r]*)?)#i", "\\1<a href=\"http://www.\\2.\\3\\4\" target=\"_blank\">www.\\2.\\3\\4</a>", $ret); // matches an email@domain type address at the start of a line, or after a space. // Note: before the @ sign, the only valid characters are the alphanums and "-", "_", or ".". // After the @ sign, we accept anything up to the first space, linebreak, or comma. $ret = preg_replace("#([\n ])([a-z0-9\-_.]+?)@([^, \n\r]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret); // Remove our padding.. $ret = substr($ret, 1); return($ret); }
а вот и готовый код! test.php а вот как он работает мона посмотреть тут: www.wk.minipro.ru/test.php п.с. если хочеш проверить вру ли я тебе. то этот скрипт показывает все сообщения которые былли введены в форуме: www.wk.minipro.ru/forum/ введи чтонить а потом посмотри)) Код (Text): <? $db=mysql_connect("localhost", "root", ""); mysql_select_db("forum"); $sql = "SELECT * FROM phpbb_posts_text"; $result = mysql_query($sql); $num_results=mysql_num_rows($result); For ($i=1 ; $i <= $num_results ; $i++){ $row=mysql_fetch_array($result); $text = $row['post_text']; $text = preg_replace("#([\n ])([a-z]+?)://([^, \n\r]+)#i", "\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>", $text); $text = preg_replace("#([\n ])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[^, \n\r]*)?)#i", "\\1<a href=\"http://www.\\2.\\3\\4\" target=\"_blank\">www.\\2.\\3\\4</a>", $text); $text = preg_replace("#([\n ])([a-z0-9\-_.]+?)@([^, \n\r]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $text); print $text . "<br>"; } ?>