cURL

Тема в разделе "PHP", создана пользователем DestroySys, 2 фев 2011.

Модераторы: latteo
  1. DestroySys

    DestroySys Создатель

    Регистр.:
    11 окт 2009
    Сообщения:
    13
    Симпатии:
    0
    Загружаю страницу с удаленного сервера помощью cURL, но ссылки то на странице по разному стоят, где href="/page", где то href="http://site.ru/page2"
    а Css подключается вообще с другого сервера
    Код:
    http://site2.ru/styles.css
    У меня такой урл
    Код:
    http://mysite.ru/curlpage.php?page=http://site.ru/
    В результате перехода по ссылкам пользователь уходит с моего сайта на сайт site.ru.

    Вопрос: какая должна быть регулярка для стандартизации всех урлов на странице?
     
  2. Murdok

    Murdok

    Регистр.:
    1 окт 2006
    Сообщения:
    236
    Симпатии:
    84
    Замените site.ru своим сайтом с помощью str_replase () насколько я понял вам это и нужно
    $page = str_replace ('site.ru','mysite.ru',$html)
     
    DestroySys нравится это.
  3. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    не понятно к какому виду привести нужно

    1) если нужно что бы все было как относительные пути - ну так сделай str_replace и поменяй все 'href="http://site.ru/' на 'href="/'

    2) если нужны абсолютные тоже самое наооборт
    str_replace и поменяй все 'href="/' на 'href="http://site.ru/'

    с css отдельная замена - и того одна замена на ссылки, одна на css

    и не нужны решулярки
     
    DestroySys нравится это.
  4. DestroySys

    DestroySys Создатель

    Регистр.:
    11 окт 2009
    Сообщения:
    13
    Симпатии:
    0
    а как из ссылки домен получить регуляркой можно?
     
  5. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    1) при чем тут курл?
    2) читай про parse_url
     
    DestroySys нравится это.
  6. DestroySys

    DestroySys Создатель

    Регистр.:
    11 окт 2009
    Сообщения:
    13
    Симпатии:
    0
    href еще может быть у link и css тогда нормально не подключается.
    а некоторые ссылки могут быть относительные и например src="javascript.js" вернет 404 и не подключится.

    походу тут без регулярки не обойтись
     
  7. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    тоже самое -- css грузится с сервера найти и поменять его адрес, или вообще не трогать

    вообще не видя кода не очень понятно что и как ты хочешь сделать
     
    DestroySys нравится это.
  8. DestroySys

    DestroySys Создатель

    Регистр.:
    11 окт 2009
    Сообщения:
    13
    Симпатии:
    0
    Вот такая простыня пока получилась ((
    Код:
    $page = get_web_page($_GET['page']);
     $page = shell_exec("/usr/bin/curl -L ".$_GET['page']);  
     $sever = parse_url($_GET['page']); 
     $root = $sever['scheme'].'://'.$sever['host'].'/';   
    
     $search = 'href="/';                  
     $replace = 'href="http://mysite.net/view.php?page='.$root;
     $page = str_ireplace ($search, $replace, $page);
     
     $search = 'href=\'/';
     $replace = 'href=\'http://mysite.net/view.php?page='.$root;
     $page = str_ireplace ($search, $replace, $page);
     
     $search = 'href="'.$sever['scheme'].'://'.$sever['host'];                  
     $replace = 'href="http://mysite.net/view.php?page='.$sever['scheme'].'://'.$sever['host'];
     $page = str_ireplace ($search, $replace, $page);
     
     $search = 'href=\''.$sever['scheme'].'://'.$sever['host'];                  
     $replace = 'href=\'http://mysite.net/view.php?page='.$sever['scheme'].'://'.$sever['host'];
     $page = str_ireplace ($search, $replace, $page);
     
     $search = 'href="'.$sever['scheme'].'://www.'.$sever['host'];                  
     $replace = 'href="http://mysite.net/view.php?page='.$sever['scheme'].'://www.'.$sever['host'];
     $page = str_ireplace ($search, $replace, $page);
     
     $search = 'href=\''.$sever['scheme'].'://www.'.$sever['host'];                  
     $replace = 'href=\'http://mysite.net/view.php?page='.$sever['scheme'].'://'.$sever['host'];
     $page = str_ireplace ($search, $replace, $page);
     
     $search = 'src="/';
     $replace = 'src="'.$root;
     $page = str_ireplace ($search, $replace, $page);
     
     $search = 'src=\'/';
     $replace = 'src=\''.$root;
     $page = str_ireplace ($search, $replace, $page);
     echo $root;
     echo $page;
    
    Есть подозрения что регулярка для href может выглядеть вот так:
    Код:
    (a)*href./*
    Добавлено через 3 минуты
    смысл в том чтобы грузить страницу на моем сервере и чтобы нажав по ссылку пользователь не ушел на тот сервак с которого грузится страница.
     
  9. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    что ты хочешь такой регуляркой сделать ?

    в твоем коде - если убрать объявление перемнных строк будет ровно в три раза меньше, и это нормальный код


    и как вариант заменить все вхождения домена на редирект через твой скрипт - тогда не нужно обрабатывать отдельно картинки, ссылки и css

    просто заменяй по =' и ="