2015-11-13 2 views
0

Я искал «весь» stackoverflow, но не нашел достойного ответа, который работает на меня. Мне нужно изменить хост URL-адреса в php.Анализ и редактирование php url

Этот URL: http://example123.com/query?t=de&p=9372&pl=bb02799a&cat=&sz=400x320&scdid=e7311763324c781cff2d3bc55b2d83327aba111f2db79d0682860162c8a13c24&rnd=29137126

Для этого: http://example456.com/test?t=de&p=9372&pl=bb02799a&cat=&sz=400x320&scdid=e7311763324c781cff2d3bc55b2d83327aba111f2db79d0682860162c8a13c24&rnd=29137126

мне нужно изменить только домен и путь или файл, до сих пор я получил это:

$originalurl = http://example123.com/query?t=de&p=9372&pl=bb02799a&cat=&sz=400.... 
$parts = parse_url($originalurl); 
$parts['host'] = $_SERVER['HTTP_HOST']; 
$parts['path'] = '/test'; 
$modifiedurl = http_build_query($parts); 
print_r(urldecode($modifiedurl)); 

но это echos

схема = HTTP & хост = локальный & путь =/тест & запрос = т = де & р = 9372 & пл = bb02799a & кот = & зг = 400 ...

Пожалуйста, я не хочу использовать некоторые strpos или что-то в этом роде, поскольку мне нужно, чтобы он был переменным. Спасибо;)

+0

, потому что 'http_build_query()' строит запрос (как ни странно), а не URL – Dale

ответ

1
$url = 'http://example123.com/query?t=de&p=9372&pl=bb02799a&cat=&sz=400x320&scdid=e7311763324c781cff2d3bc55b2d83327aba111f2db79d0682860162c8a13c24&rnd=29137126'; 
$query = parse_url($url)['query']; 

$newUrl = 'http://www.younewdomain.com/path?' . $query; 
+0

Спасибо, что почти точно WAHT я хочу, но это становится мне ссылку правильно, но запрос получает новую строку, как я могу исправить это Спасибо ... –

+0

Можете ли вы показать мне свой результат? – Dale

+0

Исправлено спасибо всем. –

1

Вам нужно будет выполнить некоторую конкатенацию вручную. Это работает:

$originalurl = "http://example123.com/query?t=de&p=9372"; 
$parts = parse_url($originalurl); 
$new_path = '/test'; 
$modifiedurl = $parts['scheme'] . "://" . $_SERVER['HTTP_HOST'] . $new_path . (isset($parts['query']) ? "?".$parts['query']:""); 
print_r($modifiedurl); 
0

обратная функция parse_url() должна быть http_build_url(), вы пытались с ним?

+1

http_build_url() не является стандартной функцией PHP, его в расширении PECL –

+1

'http_build_url' может быть точной, что он хочет, но он не всегда доступен =>' (PECL pecl_http> = 0.21.0) ' – swidmann

+0

он доступен здесь хотя https://github.com/jakeasmith/http_build_url, легко получить композитор –

1

Пришли с другим подходом:

$url = "http://example123.com/query?t=de&p=9372&pl=bb02799a&cat=&sz=400x320&scdid=e7311763324c781cff2d3bc55b2d83327aba111f2db79d0682860162c8a13c24&rnd=29137126"; 
$new_host = "http://newhost.com/blab"; 

//explode at ? so you get the query 
$split = explode("?",$url,2); 

//build new url 
$new_url = $new_host."?".$split[1]; 

//finish 
echo $new_url; 
Смежные вопросы