簡體   English   中英

如何從PHP中的URL獲取JSON

[英]How to get JSON from URL in PHP

我正在使用這組數據進行Ajax調用:

"type":"alter",
"param":{
    "key1":"value1",
    "key2":"value2"
}

在PHP中,我通過以下方式處理此問題:

•獲取file_get_contents('php://input')

type=alter&param%5Bkey1%5D=value1&param%5Bkey2%5D=value2

•通過& URL解碼和切片:

[
    "type=alter",
    "param[key1]=value1",
    "param[key2]=value2"
]

•通過=進一步切片每個切片:

[
    [
        "type",
        "alter"
    ],
    [
        "param[key1]",
        "value1"
    ],
    [
        "param[key2]",
        "value2"
    ]
]

•然后創建一個對象$data ,每個索引0為鍵,索引1為值:

$data = array(
    "type"=>"alter",
    "param[key1]"=>"value1",
    "param[key2]"=>"value2"
)

題:

當我在Ajax中設置的數據嚴格為key=value ,這不是問題,但是當我將數組或對象添加為值時,它會變得混亂。 我想處理Ajax中顯示的PHP中的數據集。 我期望的結果是:

$data = array(
    "type"=>"alter",
    "param"=>array(
        "key1"=>"value1",
        "key2"=>"value2"
    )
)

這樣,當我獲得$data['param'] ,它將給我所有的param鍵。 我可以手動執行此操作,但我認為可能會有更簡單的方法來執行此操作。 尤其是如果我可以立即從file_get_contents('php://input')獲取所需的對象。

有一個內置的函數可以解析參數字符串: parse_str()

<?php
$in = 'type=alter&param%5Bkey1%5D=value1&param%5Bkey2%5D=value2';

parse_str($in, $data);

print_r($data);

/*
Array
(
    [type] => alter
    [param] => Array
        (
            [key1] => value1
            [key2] => value2
        )

)
*/

如果可以訪問$ _POST,則可以這樣做,也可以在執行操作前檢查$ _POST為空。

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (empty($_POST)) {
        parse_str(file_get_contents('php://input'), $_POST);
    }

    print_r($_POST);

    /*
    Array
    (
        [type] => alter
        [param] => Array
            (
                [key1] => value1
                [key2] => value2
            )

    )

    */
}

暫無
暫無

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

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