cURL

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.

Вопрос: какая должна быть регулярка для стандартизации всех урлов на странице?
 
Замените site.ru своим сайтом с помощью str_replase () насколько я понял вам это и нужно
$page = str_replace ('site.ru','mysite.ru',$html)
 
где href="/page", где то href="http://site.ru/page2"
не понятно к какому виду привести нужно

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

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

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

и не нужны решулярки
 
а как из ссылки домен получить регуляркой можно?
 
1) при чем тут курл?
2) читай про parse_url
parse_url

(PHP 3, PHP 4, PHP 5)

parse_url - разбирает URL и возвращает его компоненты.
Описание

array parse_url (string url)

Эта функция возвращает ассоциативный массив, возвращающий любые имеющиеся компоненты URL. Это могут быть:

scheme - например, http

host

port

user

pass

path

query- запрос, после знака вопроса ?

fragment -фрагмент, после знака хэша #
 
href еще может быть у link и css тогда нормально не подключается.
а некоторые ссылки могут быть относительные и например src="javascript.js" вернет 404 и не подключится.

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

вообще не видя кода не очень понятно что и как ты хочешь сделать
 
Вот такая простыня пока получилась ((
Код:
$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 минуты
смысл в том чтобы грузить страницу на моем сервере и чтобы нажав по ссылку пользователь не ушел на тот сервак с которого грузится страница.
 
что ты хочешь такой регуляркой сделать ?

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


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

просто заменяй по =' и ="
 
Назад
Сверху