tuscan88
tuscan88

Reputation: 5829

regex to match string with numbers

I have a query string stored in a variable and I need to strip out some stuff from it using preg_replace()

the parameters I want to strip out look like this:

&filtered_features[48][]=491

As there will be multiples of these parameters in the query string the 48 and the 491 can be any number so the regex needs to essentially match this:

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

Anyone know how I would do this?

Upvotes: 1

Views: 406

Answers (3)

TomTom
TomTom

Reputation: 1885

/\&filtered_features\[(?<n1>\d*)\]\[\]\=(?<n2>\d*)/'

this will match first number in n1 and second in n2

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

cryptic answer will replace more than necessary with this string:

&something[1][]=123&filtered_features[48][]=491

Upvotes: 0

Li-chih Wu
Li-chih Wu

Reputation: 1082

$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);
}

Upvotes: 0

kittycat
kittycat

Reputation: 15045

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

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

echo $string;

I assume you wanted to remove the numbers from the string. This will match a multi-variable query string as well since it just looks for [A_NUMBER][]=A_NUMBER and changes it to [][]=

Upvotes: 1

Related Questions