簡體   English   中英

PHP - 從 URL 獲取索引的 URL 查詢字符串參數

[英]PHP - Get indexed URL query string parameters from URL

我想知道是否有人可以幫助我。 我正在從 Segment 向我的后端發送一個 webhook。 這是目的地 URL 的最終結果,包括參數:

https://example.com/page.php?cid=123456&eventid=965254&trackerid=2523654&amount1=233.55&amount2=156.99&catgory1=clothing&category2=accessories&itemsku1=01235654&itemsku2=525124&quantity1=1&quantity2=3

像 cid 這樣的獨立參數很容易獲得,但是像 category1 和 category2 這樣的索引查詢字符串參數是我卡住的地方。 我嘗試了這種方法How to get multiple parameters with same name from a URL in PHP但這並不是我的情況的正確解決方案。

我還可以選擇以 JSON 格式發送 webhook,如果這樣更有意義,但仍然不確定如何獲取索引參數,如 itemsku1 和 itemsku2。

我也忘了提到索引參數會根據購買的產品數量而變化,所以我事先不知道URL會有多少。

提前致謝!

嘗試這樣的事情

<?php

$param_names = [
    'amount',
    'category',
    'itemsku',
    'quantity',
];

$data = [];

foreach ($_GET as $key => $val) {

    foreach ($param_names as $param_name) {

        if (strpos($key, $param_name) === 0) {
            $idx = substr($key, strlen($param_name), 1);

            $data[$idx][$param_name] = $val;
        }
    }

}

var_dump($data);

這是結果

array (size=2)
  1 => 
    array (size=3)
      'amount' => string '233.55' (length=6)
      'category' => string 'clothing' (length=8)
      'itemsku' => string '01235654' (length=8)
      'quantity' => string '1' (length=1)
  2 => 
    array (size=4)
      'amount' => string '156.99' (length=6)
      'category' => string 'accessories' (length=11)
      'itemsku' => string '525124' (length=6)
      'quantity' => string '3' (length=1)

我不確定我是否正確理解您,但您不能使用:

$category1 = filter_input(INPUT_GET,"category1",FILTER_SANITIZE_STRING);
$category2 = filter_input(INPUT_GET,"category2",FILTER_SANITIZE_STRING);
$sku1 = filter_input(INPUT_GET,"itemsku1",FILTER_SANITIZE_STRING);
$sku2 = filter_input(INPUT_GET,"itemsku2",FILTER_SANITIZE_STRING);

依此類推...除非您不知道索引參數的確切數量,否則您可以使用以下內容,它將參數存儲在數組中。

$query  = explode('&', $_SERVER['QUERY_STRING']);
$params = array();
foreach( $query as $param )
{
  list($name, $value) = explode('=', $param, 2);
  $params[urldecode($name)][] = urldecode($value);
}

假設您要訪問鏈接https://example.com/page.php?itemsku=test1&itemsku=test2

$params['itemsku'][0]將返回: test1 $params['itemsku'][1]將返回: test2

要遍歷itemsku參數數組,只需執行以下操作:

foreach($params['itemsku'] as $sku){
   echo $sku . "\n";
}

output:

test1
test2

我不確定我是否正確理解您,但您可以使用parse_url 在你的情況下:

$url = 'https://example.com/page.php?cid=123456&eventid=965254&trackerid=2523654&amount1=233.55&amount2=156.99&catgory1=clothing&category2=accessories&itemsku1=01235654&itemsku2=525124&quantity1=1&quantity2=3';

$temp_array = [];
parse_str(parse_url($url, PHP_URL_QUERY), $temp_array);
var_dump($temp_array);

這將生成一個包含所有查詢參數的數組。 然后,您可以訪問每個參數,例如:

echo $temp_array['cid'];
echo $temp_array['catgory1'];
echo $temp_array['catgory2'];
echo $temp_array['itemsku1'];
echo $temp_array['itemsku2'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM