正则表达式匹配字符串与数字

时间:2012-11-28 10:36:34

标签: php regex preg-replace

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

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

&filtered_features[48][]=491

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

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

任何人都知道我会这样做吗?

3 个答案:

答案 0 :(得分:1)

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

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

echo $string;

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

答案 1 :(得分: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);
}

答案 2 :(得分: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