У меня есть URL
http://example.com/test?xyz=27373&page=4&test=5
который я хочу преобразовать, заменив page=4
на page=XYZ
как я могу это сделать с помощью preg_replace
?
Да, вы можете использовать
$oldurl = "http://test.com/test?xyz=27373&page=4&test=5" $newurl = preg_replace("/page=\d+/", "page=XYZ", $oldurl);
Или вы можете восстановить URL-адрес от $_GET
superglobal.
Вы хотите установить значение xyz на значение страницы? Я думаю, вам, возможно, потребуется указать немного больше. Но это легко изменить, если вы не знаете regex.
$url = 'http://test.com/test?xyz=27373&page=4&test=5'; $urlQuery = parseUrl($url, PHP_URL_QUERY); parse_str($urlQuery, $queryData); $queryData['page'] = $queryData['xyz']; unset($queryData['xyz']); $query = http_build_query($queryData); $outUrl = substr_replace($url, $query, strpos($url, '?'));
с$url = 'http://test.com/test?xyz=27373&page=4&test=5'; $urlQuery = parseUrl($url, PHP_URL_QUERY); parse_str($urlQuery, $queryData); $queryData['page'] = $queryData['xyz']; unset($queryData['xyz']); $query = http_build_query($queryData); $outUrl = substr_replace($url, $query, strpos($url, '?'));
$url = 'http://test.com/test?xyz=27373&page=4&test=5'; preg_match('/xyz=([^&]+)/', $url, $newpage); $new = preg_replace('/page=([^&]+)/', $newpage[0], $url); $new = preg_replace('/xyz=([^&]+)&/', '', $new);
Это повернется
http://test.com/test?xyz=27373&page=4&test=5
в
http://test.com/test?page=27373&test=5
Простите меня, если это не то, что вы хотели сделать, но ваш вопрос не совсем ясен.
Я уверен, что вы могли бы сделать что-то с регулярным выражением. Однако, если указанный вами URL является тем, который вы сейчас обрабатываете, у вас уже есть все переменные запроса в $ _Request.
Итак, перестройте URL-адрес, заменив значения, которые вы хотите заменить, а затем переадресовываете новый URL-адрес.
В противном случае найдите учебник регулярных выражений.
Если это ваша собственная страница (и вы находитесь на этой странице), эти переменные появятся в глобальной переменной с именем $_GET
, и вы можете использовать что-то вроде array_slice
, unset
или array_filter
для удаления нежелательных переменных и восстановления URL-адреса.
Если у вас есть только этот URL как строка, то каковы критерии удаления информации? Технически нет никакой разницы между
...?xyz=27373&page=4&test=5
а также
...?test=5&xyz=27373&page=4
поэтому просто удалить все, кроме первого параметра, может не быть тем, что вы хотите.
Если вы хотите удалить все, кроме параметра xyz
. Взгляните на parse_url
и parse_str
Что именно ты пытаешься сделать? Вопрос немного неясен.
$ XYZ = $ _GET ['xyz']; $ PAGE = $ _GET ['page'];
?
Желаете заменить каждое значение другим или заменить оба на один?