За последние 24 часа нас посетили 22572 программиста и 1276 роботов. Сейчас ищут 732 программиста ...

Как сделать текстовую ссылку активной?

Тема в разделе "PHP для новичков", создана пользователем Mike, 4 апр 2006.

  1. Mike

    Mike Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    2
    Симпатии:
    0
    Пишу свой простенький форум. На PHP & MySQL. Как сделать, чтоб при просмотре сообщения текстовая ссылка становилась активной? Как например, на этом форуме. Если можно - то распишите конструкцию поподробнее.
    Спасибо.
     
  2. Svoronkov

    Svoronkov Активный пользователь

    С нами с:
    10 мар 2006
    Сообщения:
    88
    Симпатии:
    0
    Адрес:
    Москва
    а можно поподробнее о функционале? что значит текстовая ссылка? оформленная тегами?
     
  3. мухомор2

    мухомор2 Активный пользователь

    С нами с:
    11 мар 2006
    Сообщения:
    99
    Симпатии:
    0
    Адрес:
    [KZN][MR]
    наверно он имеет введу что вот ввёл www.mult.ru он сделает её кнопкой а не текстом
     
  4. Mike

    Mike Активный пользователь

    С нами с:
    4 апр 2006
    Сообщения:
    2
    Симпатии:
    0
    В сообщение вставляется ссылка. Как сделать, чтоб она автоматически оформлялась в виде тегов "a href", без кнопки "URL".
    Как вот например я сейчас простым текстом ввожу http://forum.php.ru
    А на выходе мы имеем уже подсвеченную ссылку со всеми необходимыми тегами. Вот это мне и нужно. То же и с адресами e-mail.
     
  5. мухомор2

    мухомор2 Активный пользователь

    С нами с:
    11 мар 2006
    Сообщения:
    99
    Симпатии:
    0
    Адрес:
    [KZN][MR]
    вот решил я посмотреть что хрониться в таблицы постов.. и хрпниться просто текст.. никаких сылок.. и тегов. чисто текст.. а это значит всё находиться в 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);
    }
     
  6. мухомор2

    мухомор2 Активный пользователь

    С нами с:
    11 мар 2006
    Сообщения:
    99
    Симпатии:
    0
    Адрес:
    [KZN][MR]
    а вот и готовый код!
    test.php а вот как он работает мона посмотреть тут:
    www.wk.minipro.ru/test.php
    п.с. если хочеш проверить вру ли я тебе.
    то этот скрипт показывает все сообщения которые былли введены в форуме:
    www.wk.minipro.ru/forum/
    введи чтонить а потом посмотри))


    Код (Text):
    1.  
    2. <?
    3.  
    4. $db=mysql_connect("localhost", "root", "");
    5. mysql_select_db("forum");
    6.  
    7. $sql = "SELECT * FROM phpbb_posts_text";
    8. $result = mysql_query($sql);
    9. $num_results=mysql_num_rows($result);
    10. For ($i=1 ; $i <= $num_results ; $i++){
    11. $row=mysql_fetch_array($result);
    12. $text = $row['post_text'];
    13.  
    14.  
    15.  
    16.  
    17.  
    18.  
    19.  
    20.     $text = preg_replace("#([\n ])([a-z]+?)://([^, \n\r]+)#i", "\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>", $text);
    21.  
    22.  
    23.     $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);
    24.  
    25.     $text = preg_replace("#([\n ])([a-z0-9\-_.]+?)@([^, \n\r]+)#i", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $text);
    26.  
    27.  
    28.  
    29. print $text . "<br>";
    30.  
    31. }
    32. ?>
     
  7. kuzmas

    kuzmas Активный пользователь

    С нами с:
    1 янв 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    Москва
    Народ, у меня движок dle. Подскажите, куда код данный пихать?

    Что-то никак он у меня не заработает(