使用str_replace替换变量字符

Dav*_*ell 0 php string

基本上我试图用"?cat =(在这里插入数字)"做一个str_replace

$queryString2 = str_replace("cat=(insert number here)", "cat=4", $queryString);
Run Code Online (Sandbox Code Playgroud)

有没有办法可以实现这个目标?Str_replace +一个字符,因为我搜索的值可能是任何东西.

?cat=7
?cat=3
?cat=4
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Mat*_*chu 5

处理查询字符串的一种更可靠的方法是实际解析它们.

// If your original query string was just the data in $_GET, clone $_GET:
$new_query = $_GET;
// Otherwise, parse the original query string using parse_str:
parse_str($original_query_string, $new_query);
// Then, set the new cat value, and build a new query string.
$new_query['cat'] = 4;
$new_query_string = http_build_query($new_query);
Run Code Online (Sandbox Code Playgroud)

你最初描述的技术是正则表达式的工作:)

$queryString2 = preg_replace('/cat=[0-9]+/', 'cat=4', $queryString);
Run Code Online (Sandbox Code Playgroud)

正则表达式cat=[0-9]+匹配字符串cat=后跟一个或多个(+)数字([0-9]).preg_replace用替换字符串(参数2)替换原始字符串(参数3)中找到的正则表达式(参数1)的所有匹配项并返回结果.

请注意,这也将替换dog_and_cat=1dog_and_cat=4.borkweb的答案是一个更复杂的正则表达式,但是如果它可能出现则处理该边缘情况(例如,这是用户提供的查询字符串).

我更喜欢实际的查询解析,但正则表达式解决方案理想情况下应该也能正常工作,假设没有边缘情况.

  • @BoltClock:哦,你会试着告诉我'preg`不代表怀孕的字符串吗?d: (5认同)