PHPでドット付きのパラメータを動的に受け取るにはどうすればよいですか?
URLパラメータ"hl"
があることは知っているが、パラメータ名に次のような動的な値が追加されているとします。
"h1.u", "hl.p"
これらのパラメータを動的な名前で使用することは可能ですか?
PHPでドット付きのパラメータを動的に受け取るにはどうすればよいですか?
URLパラメータ"hl"
があることは知っているが、パラメータ名に次のような動的な値が追加されているとします。
"h1.u", "hl.p"
これらのパラメータを動的な名前で使用することは可能ですか?
これは既知の動作であり、いくつかの回避策があるようです (実際の $_GET パラメータを取得する関数を作成します)。
詳細については、この質問を確認してください: Get PHP to stop replacement '.' $_GET または $_POST 配列の文字?
$_GET
列挙配列です。
つまり、$_GET
配列全体をループして「バリアント」をチェックできます。
パラメータ h1.u が配置されることを意味します$_GET['h1.u'];
検索は次のように機能します。
foreach($_GET as $key => $value) {
if(strpos($key, "h1") !== false) {
//Do stuff
}
}
このコードは、配列全体を繰り返し処理し、キーのどこかに 'h1' を含むものを探し、それに対して何かを行います。
strpos
h1 は位置 0 (最初の文字) に配置される可能性があるため、をチェックする代わりboolean false
に型チェックを行う必要があるのはそのためです。not 0
私の知る限り、GET 変数ではドット文字は使用できません。GET はそれらを「_」に置き換えます。変数にアンダースコアが自然に含まれない場合は、これで問題ありません。PHP スクリプトの先頭で、「h1_」と可能な文字の組み合わせ全体を動的に組み合わせて探します (または、Ronnie の回答を「_」を使用するように調整します)。 ' それ以外の '。')。
GET 変数名で _ が有効な文字である状況に遭遇しましたが、「.」を指定する方法が必要です。それも。だから私はJavascriptを使ってすべての「。」を確実にします。を__(アンダースコア2つ)に変換しておき、受信PHPでこのパターンを探します。
$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
}
テストされていません。小さなバグが存在する可能性があります。見つかった場合は修正します。