У меня есть часть строки запроса, в которую я хочу внести замену. Я хочу использовать preg_replace
но я как бы preg_replace
в регулярном выражении.
Кто-то может помочь? То, что мне нужно заменить, это GET vars.
Вот строка:
bikeType=G&nikeNumber=4351
PHP имеет удобную функцию для синтаксического анализа строк запроса: parse_str () . Вы можете взглянуть на это или предоставить более подробную информацию, поскольку ваш вопрос не совсем ясен.
Вы можете использовать parse_str
как уже упоминалось.
Кроме того, если вы хотите вернуть их в строку запроса, вы можете использовать http_build_query
Пример:
parse_str('bikeType=G&nikeNumber=4351', $params); $params['bikeType'] = 'F'; $params['nikeNumber'] = '1234'; echo http_build_query($params, '', '&');
Вывод
bikeType=F&nikeNumber=1234
Обратите внимание, что вы не должны использовать parse_str
без второго аргумента (или, по крайней мере, с некоторым соображением). Когда вы оставите это, PHP создаст переменные из параметров запроса в текущей области. Это может привести к проблемам безопасности. Вредоносные пользователи могут использовать его для перезаписывания других переменных, например
// somewhere in your code you assigned the current user's role $role = $_SESSION['currentUser']['role']; // later in the same scope you do parse_str('bikeType=G&nikeNumber=4351&role=admin'); // somewhere later you check if the user is an admin if($role === "admin") { /* trouble */ }
Еще одно замечание: использование третьего параметра для http_build_query
рекомендуется, поскольку правильная кодировка амперсанда &
, Некоторые валидаторы будут жаловаться, если вы разместите там только &
.