【发布时间】:2011-07-28 18:29:11
【问题描述】:
如何从查询字符串中删除某个变量?假设我有一个查询字符串
$query_string = "first=val1&second=val2&third=val3";
function removevar($var, $query_string) {
return preg_replace("/(".$var."=[^&]*(&))/i","",$query_string);
}
echo removevar("first",$query_string); // ok
echo removevar("second",$query_string); // ok
echo removevar("third",$query_string); // doesn't change the string because third doesn't have a trailing &
如何解决这个问题,以便以稳健的方式从查询字符串中删除变量?可能有人已经有了一个函数来处理更复杂的字符串的特殊情况。
所以我必须匹配 & 或字符串结尾 ($) 但我不知道如何将其转换为正则表达式。
【问题讨论】:
-
使用 parse_str 和 unset 怎么样?
-
为什么要这样做,你已经有了 $_GET 数组,你可以只取你需要的参数,如果你真的想删除一个,只需使用没有这个的数组重建字符串...
-
为了使其更健壮,我会先通过preg_quote($var,'/') 运行
$var,以确保它是“正则表达式安全的”。