0

「1、2」などのリストがあります。このリストを $_GET で送信すると、ブラウザーのアドレス バーに次のように表示されます?myList=1,%25202

問題は、それがPHPで得られることです。" " に基づいてリストを分解したいのですが,(コンマの後のスペースに注意してください)、別の方法でフォーマットされるため、それはできません。とにかくリストを爆発させるにはどうすればよいですか?リスト内のすべての要素を含む配列で終わる必要があり、要素はコンマとそれに続くスペースで区切られています。

explode(", ", $list);うまくいきません。

ありがとう!

編集:これは、次のようにGETリクエスト内で渡されます:

$args = "list=" . $_POST["assigned"];
$extra = 'test.php?' . $args;
header("Location: http://$host$uri/$extra");
exit;

$s = "1,%25202";
$p = explode(", ", urldecode($s));
var_dump($p);

結果:

array(1) { [0]=> string(6) "1,%202" }

$s = "1,%25202";
$p = explode(", ", base64_decode($s));
var_dump($p);

結果:

array(1) { [0]=> string(4) "�nv�" }
4

2 に答える 2

1

おそらく試してみてください:

   $numbers = urldecode($_GET['key']);

その後爆発$numbers.

ブラウザーがそれらを安全な文字として自動的にエンコードする場合は、それらをデコードする必要があります。

于 2013-06-06T22:24:26.447 に答える
0

POSTスクリプトの最初の変数で何かが起こっています。変数が実際に である場合、1, 2正しくデコードされることを検証する簡単な概念実証を次に示します。

if(empty($_GET['myList'])) {
    $simulated_POST = '1, 2';

    $extra = http_build_query(array(
        'myList' => $simulated_POST
    ));

    header('Location: http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . '?' . $extra);

} else {
    $myList = explode(', ', $_GET['myList']);
    var_dump($myList);

}

POST変数が実際1, 2に送信されていることを検証できますか?

于 2013-06-06T22:24:33.293 に答える