1

我有一个存储在变量中的查询字符串,我需要使用 preg_replace() 从中删除一些东西

我要删除的参数如下所示:

&filtered_features[48][]=491

由于查询字符串中将有多个这些参数,因此 48 和 491 可以是任何数字,因此正则表达式需要基本上匹配:

'&filtered_features[' + Any number + '][]=' + Any number

有人知道我会怎么做吗?

4

3 回答 3

1
$string = '&filtered_features[48][]=491';

$string = preg_replace('/\[\d+\]\[\]=\d+/', '[][]=', $string);

echo $string;

我假设您想从字符串中删除数字。这也将匹配多变量查询字符串,因为它只查找 [A_NUMBER][]=A_NUMBER 并将其更改为 [][]=

于 2012-11-28T10:41:53.580 回答
0
$query_string = "&filtered_features[48][]=491&filtered_features[49][]=492";
$lines = explode("&", $query_string);
$pattern = "/filtered_features\[([0-9]*)\]\[\]=([0-9]*)/";
foreach($lines as $line)
{
    preg_match($pattern, $line, $m);
    var_dump($m);
}
于 2012-11-28T10:50:36.697 回答
0
/\&filtered_features\[(?<n1>\d*)\]\[\]\=(?<n2>\d*)/'

这将匹配 n1 中的第一个数字和 n2 中的第二个数字

preg_match_all( '/\&filtered_features\[(?<n1>\d*)\]\[\]\=(?<n2>\d*)/', $str, $matches);

神秘的答案将用此字符串替换不必要的内容:

&something[1][]=123&filtered_features[48][]=491
于 2012-11-28T11:19:55.883 回答