php replace in url path

203
28 июня 2017, 00:49

Здравствуйте, как заменить параметры в url path? Есть адрес:

http://site.com/param1/param2/param3?a=1&b=2&c=3

Как заменить например param2 на hello, при этом чтобы всё что после ? осталось на месте. При этом хотелось бы использовать http_build_url.

Примерный каркас функции:

@params — входные параметры для замены param2 => hello
function replace_path($params = array()) {
    return http_build_url();
}
Answer 1

Один из вариантов

<?php
$str = 'http://site.com/param1/param2/param3?a=1&b=2&c=3';
echo replace('param2', 'hello', $str);
// http://site.com/param1/hello/param3?a=1&b=2&c=3
/**
* 
* @param str $patt Искомое значение
* @param str $repl Значение для замены
* @param str $str  Строка для поиска
* 
* @return str 
*/
function replace($patt, $repl, $str) {
    return preg_replace('~'. preg_quote($patt, '~') .'~', $repl, $str);
}

Или так

<?php
$str = 'http://site.com/param1/param2/param3?a=1&b=2&c=3';
$repl = ['param2' => 'hello'];
echo replace($str, $repl);
// http://site.com/param1/hello/param3?a=1&b=2&c=3
/**
* 
* @param str $str Строка для поиска
* @param arr $arr Массив для поиска и замены
* 
* @return str
*/
function replace($str, $arr) {
    return strtr($str, $arr);
}
READ ALSO
Как правильно составить mysql запрос

Как правильно составить mysql запрос

Нужно получить id из таблицы fnews, где userid = $_post['userid'] и newsid = $_post['newsid'], при этом получить ещё userid из таблицы news где id = $_post['newsid']

179
Не проходит POST запрос PHP

Не проходит POST запрос PHP

Не проходит POST запрос вот такого вот вида

165
Opencart редактирования кода страниц

Opencart редактирования кода страниц

Здравствуйте, пытаюсь редактироватьtpl шаблоны и css файлы, все сохраняю перезаливаю на сервер, чищу куки

297
Ошибки в логах модификаторов

Ошибки в логах модификаторов

Добрый день, я использую opencart 22

400