开发者

Replace values in a URI query string

开发者 https://www.devze.com 2023-01-17 02:22 出处:网络
I have part of a query string that I want to make a replacement in. I want to use preg_replace but am kind of hung up on the regex.

I have part of a query string that I want to make a replacement in. I want to use preg_replace but am kind of hung up on the regex.

Can someone please help? What I need replaced a开发者_如何学编程re the GET vars.

Here is the string:

bikeType=G&nikeNumber=4351


PHP has a convenient function to parse query strings: parse_str(). You might want to take a look at that or provide more details as your question isn't exactly clear.


You can use parse_str as was mentioned already.
In addition, if you want to put them back into a query string you can use http_build_query

Example:

parse_str('bikeType=G&nikeNumber=4351', $params);
$params['bikeType'] = 'F';
$params['nikeNumber'] = '1234';
echo http_build_query($params, '', '&'); 

Output

bikeType=F&nikeNumber=1234

Please note that you should not use parse_str without the second argument (or at least not with some consideration). When you leave it out, PHP will create variables from the query params in the current scope. That can lead to security issues. Malicious users could use it to overwrite other variables, e.g.

// 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 */ }

Another note: using the third param for http_build_query is recommended, because the proper encoding for an ampersand is &. Some validators will complain if you put just the & in there.

0

精彩评论

暂无评论...
验证码 换一张
取 消