За последние 24 часа нас посетили 36313 программистов и 1537 роботов. Сейчас ищут 1327 программистов ...

Скрипт для скрытия реферера

Тема в разделе "PHP для новичков", создана пользователем Jensi, 13 сен 2009.

  1. Jensi

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

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Помогите написать скрипт для скрытия/чистки реферера, т.е. есть статьи и в них есть ссылки, нужно сделать отдельную страницу редиректа (не знаю как объяснить).
    Скрипт:
    Код (Text):
    1.  
    2. $contents = $text['text']; // текст из БД
    3. preg_match_all("/(http:\\/\\/)?([a-z_0-9-.]+\\.[a-z]{2,3}(([ \"'>\r\n\t])|(\\/([^ \"'>\r\n\t]*)?)))/", $contents, $matches);
    4.  
    5. for($i=0; $i<count($matches); $i++){
    6. if(isset($matches[0][$i])){echo "<a href='link.php?go=".$matches[0][$i]."'>".$matches[0][$i]."</a>";}}  
    Но этот код просто находит ссылки и в верху статьи их заменяет на
    Код (Text):
    1. <a href='link.php?go=URL>что-то</a>
    , а нужно, чтоб прямо в тексте всё изменилось, как это реализовать? Думал через preg_replace, но не додумал...:(
    Далее код будет в link.php, но до этого ещё дойти нужно как-то О_о
     
  2. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    А теперь ещё и раз и нормальными словами.

    Сначала объясните, что это такое?

    preg_replace_callback?
     
  3. Jensi

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

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Есть текст (к примеру):
    Код (Text):
    1. 11111111111111
    2. http://site.ru/index.php
    3. 11111111111111111
    Когда я ставлю код, который я предоставил, получается так:
    Код (Text):
    1. <a href="http://site.ru/index.php?go=http://site2.ru/"> http://site2.ru/ </a>
    2. 11111111111111
    3. http://site.ru/
    4. 11111111111111111
    Нужно:
    Код (Text):
    1.  
    2. 11111111111111
    3. <a href="http://site.ru/index.php?go=http://site2.ru/"> http://site2.ru/ </a>
    4. 11111111111111111
     
  4. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Ммм?

    PHP:
    1. <?php
    2.  
    3. $text = "11111111111111\r\n
    4.          [url=http://site.ru/index.php]http://site.ru/index.php[/url]
    5.         11111111111111111";
    6.  
    7. $regex = '~((?:http://|www\.)([^\s]+))~si';
    8. $text = preg_replace($regex, '<a href="link.php?go=$1">$1</a>',$text);
    9.  
    10. echo $text;
    11.  
    12. ?>
     
  5. Jensi

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

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Ненене, не совсем то, $text = определённой статье, выбранной из БД человеком, в этой статье могу содержаться ссылки на другие ресурсы и конечно же могут быть длинными (http://www.site.ru/afisha/me.php?code=TRPLX&ss=2 и т.д.) и короткими (http://site.ru/) и в самой статье нужно изменить ссылки на другие ресурсы, т.к добавить ?go=
    Нашёл пример такого редиректа: http://www.nulled.ws/r.php?url=http%3A% ... .com%2Fedu вот такое же и мне нужно сделать, но сперва нужно сделать парсер ссылок правильный О_О
     
  6. Jensi

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

    С нами с:
    9 апр 2009
    Сообщения:
    299
    Симпатии:
    0
    Код (Text):
    1. preg_match_all("/(http:\\/\\/)?([a-z_0-9-.]+\\.[a-z]{2,3}(([ \"'>\r\n\t])|(\\/([^ \"'>\r\n\t]*)?)))/", $contents, $matches)
    Вроде как парсер есть, как теперь изменить ссылки правильно?