(PHP)Поиск и обработка url в переменной

Discussion in 'PHP' started by Fantom3D, 22 Jul 2010.

  1. Fantom3D

    Fantom3D New Member

    Joined:
    23 Aug 2009
    Messages:
    71
    Likes Received:
    2
    Reputations:
    -1
    Привет всем, тут у меня возникла проблемка... в этой области никогда не был силен. :( Есть переменная, например $text полученная через $_POST, но в данном случае это неважно. Она содержит сообщение, написанное пользователем, нужно сделать поиск url в этой переменной, и, когда находится url выполняется:

    PHP:
    {  
    // переменной $url соответственно присваивается найденный url
    // тут я напишу те действия, которые мне нужны, при этом изменяя $url
    // и в конце измененная мной $url заменяет url в $text
     
    }

    И на выходе все url в $text оказываются обработанными тем, что находится между скобками.

    Помогите. :confused:
     
    #1 Fantom3D, 22 Jul 2010
    Last edited: 22 Jul 2010
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Fantom3D Описывайте конечную цель, а не отдельные шаги. А пока - http://php.net/preg_match, http://php.net/str_replace
     
    _________________________
  3. Fantom3D

    Fantom3D New Member

    Joined:
    23 Aug 2009
    Messages:
    71
    Likes Received:
    2
    Reputations:
    -1
    Gifts
    Хорошо, описываю. В $text нужно заменить юрл, которых нет в MySql на "<font color=red>Ссылки запрещены</font>". Проверка есть ли в БД эта ссылка идет как раз там где я писал, что мой код. И в конце мы получаем отфильтраванное сообщение без ненужных ссылок. Надеюсь, теперь понятно.
     
  4. haine

    haine New Member

    Joined:
    13 Dec 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Как заменить, подсказываю:

    PHP:
    $text='<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>'
    ;

    $r=preg_replace(
        
    '!((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)!',
        
    '<span style="color:red">Ссылки запрещены!</span>',$text
    );

    echo 
    $r;
    Если я все правильно понял
     
    #4 haine, 22 Jul 2010
    Last edited: 22 Jul 2010
  5. Fantom3D

    Fantom3D New Member

    Joined:
    23 Aug 2009
    Messages:
    71
    Likes Received:
    2
    Reputations:
    -1
    Тут заменяется любая ссылка, а проверку делал, какие заменять, какие нет) Короче говоря, cам сделал. :)

    Сначала:

    PHP:
    preg_match_all('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=;&]+)',$content,$matchesPREG_PATTERN_ORDER);
    Потом проверка и:

    PHP:
        $content2 str_replace ($matches[0][$ii], $xx$content) ;
    Ну вообщем то и все)) Остальное и так понятно)