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
/\&filtered_features\[(?<n1>\d*)\]\[\]\=(?<n2>\d*)/'

これは、n1 の最初の数字と n2 の 2 番目の数字に一致します

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

不可解な答えは、必要以上に次の文字列に置き換えます。

&something[1][]=123&filtered_features[48][]=491
于 2012-11-28T11:19:55.883 に答える
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 に答える