0

PHPでドット付きのパラメータを動的に受け取るにはどうすればよいですか?

URLパラメータ"hl"があることは知っているが、パラメータ名に次のような動的な値が追加されているとします。

"h1.u", "hl.p"これらのパラメータを動的な名前で使用することは可能ですか?

4

4 に答える 4

2

これは既知の動作であり、いくつかの回避策があるようです (実際の $_GET パラメータを取得する関数を作成します)。

詳細については、この質問を確認してください: Get PHP to stop replacement '.' $_GET または $_POST 配列の文字?

于 2013-03-18T17:02:16.957 に答える
0

$_GET列挙配列です。

つまり、$_GET配列全体をループして「バリアント」をチェックできます。

パラメータ h1.u が配置されることを意味します$_GET['h1.u'];

検索は次のように機能します。

foreach($_GET as $key => $value) {
    if(strpos($key, "h1") !== false) {
        //Do stuff
    }
}

このコードは、配列全体を繰り返し処理し、キーのどこかに 'h1' を含むものを探し、それに対して何かを行います。

strposh1 は位置 0 (最初の文字) に配置される可能性があるため、をチェックする代わりboolean falseに型チェックを行う必要があるのはそのためです。not 0

于 2013-03-18T17:01:32.610 に答える
0

私の知る限り、GET 変数ではドット文字は使用できません。GET はそれらを「_」に置き換えます。変数にアンダースコアが自然に含まれない場合は、これで問題ありません。PHP スクリプトの先頭で、「h1_」と可能な文字の組み合わせ全体を動的に組み合わせて探します (または、Ronnie の回答を「_」を使用するように調整します)。 ' それ以外の '。')。

GET 変数名で _ が有効な文字である状況に遭遇しましたが、「.」を指定する方法が必要です。それも。だから私はJavascriptを使ってすべての「。」を確実にします。を__(アンダースコア2つ)に変換しておき、受信PHPでこのパターンを探します。

于 2013-06-08T12:50:27.560 に答える
0
$gets=array_keys($_GET);
foreach($item in $gets){
  $check1=explode($item, ".");
  if(count($check1) <2){
    //No appended keys recieved
  }

  else{
    $key = $check1[0];
    $apeendedPart= $check1[1];
  }

 //Do something with these two
}

テストされていません。小さなバグが存在する可能性があります。見つかった場合は修正します。

于 2013-03-18T17:09:34.010 に答える