0

クエリ文字列を配列に変換する必要があるという珍しいシナリオに遭遇しました。

クエリ文字列は次のようになります。

?sort%5B0%5D%5Bfield%5D=type&sort%5B0%5D%5Bdir%5D=desc

次のようにデコードします。

sort[0][field]=type&sort[0][dir]=desc

これを使用可能な配列として PHP に取り込むにはどうすればよいですか? すなわち

echo $sort[0][field] ; // Outputs "type"

私は邪悪な eval() を試しましたが、うまくいきませんでした。


もっと詳しく説明する必要があります。必要なのは、 sort%5B0%5D%5Bfield%5D=type&sort%5B0%5D%5Bdir%5D=desc のリテラル文字列をスクリプトに入れて変数として保存することです。関数のパラメーターとして渡されます。

それ、どうやったら出来るの?

4

2 に答える 2

2

PHP はその形式を配列に変換します。

header("content-type: text/plain");
print_r($_GET);

与えます:

Array
(
    [sort] => Array
        (
            [0] => Array
                (
                    [field] => type
                    [dir] => desc
                )

        )

)

その文字列を Web ページへのクエリ文字列入力としてではなく、文字列として持っていることを意味する場合は、parse_str関数を使用して変換します。

header("content-type: text/plain");
$string = "sort%5B0%5D%5Bfield%5D=type&sort%5B0%5D%5Bdir%5D=desc";
$array = Array();
parse_str($string, $array);
print_r($array);

… 同じ出力が得られます。

于 2013-01-10T14:40:21.053 に答える
0

parse_str()を使用する

http://php.net/manual/en/function.parse-str.php

<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
vecho $first;  // value
echo $arr[0]; // foo bar
echo $arr[1]; // baz


parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz

?>
于 2013-01-10T14:45:09.123 に答える