Masalah yang dihadapi semasa menggunakan fungsi PHP strpos() untuk mendapatkan maklumat dan memangkas
P粉692052513
P粉692052513 2023-09-21 10:35:25
0
1
662

Saya mendapat data mentah daripada API yang mengandungi JSON dan saya cuba memotong bahagian JSON sahaja daripada data yang dikembalikan. Saya menggunakan fungsi strpos() PHP untuk menulis fungsi untuk memangkas JSON dari awal (kedudukan pendakap pembukaan) hingga ke penghujung (kedudukan pendakap penutup).

Tetapi saya menghadapi masalah, beberapa nilai data juga mengandungi aksara khas, termasuk koma bertitik, yang menghalang fungsi daripada dipangkas sepenuhnya...

Adakah cara yang lebih baik untuk menyelesaikan masalah ini?

Contoh beberapa data:

$data = {
    "name" : "Full Name",
    "DisplayName":"St Philip\u0026#39;",
    "grade" : "grade",
    "percentage" : 10,
    {"EventName":"Event Name","maxErrors":10}
};

Ini adalah fungsi yang saya tulis:

function copyData($data, $param1, $param2)
{
    $start = strpos($data, $param1) + strlen($param1);
    $end = strpos($data, $param2, $start);
    $return = substr($data, $start, $end - $start);
    return $return;
}

Jadi, menggunakan fungsi ini, ia sentiasa berhenti di DisplayName...

P粉692052513
P粉692052513

membalas semua(1)
P粉598140294

$data anda nampaknya rentetan JSON yang tidak betul.

Jika ini disebabkan input yang buruk, dan $data ialah rentetan JSON biasa, maka saya syorkan menukar strategi anda.

Andaikan rentetan JSON yang betul ialah:

$data = '{
   "name":"Full Name",
   "DisplayName":"St Philip\u0026#39;",
   "grade":"grade",
   "percentage":10,
   "event":{
      "EventName":"Event Name",
      "maxErrors":10
   }
}';

Anda kemudian boleh menukar JSON kepada tatasusunan PHP biasa dan mengakses kekuncinya:

$decodedData = json_decode ($data, true);
echo $decodedData['DisplayName'];

Hasil data ialah rentetan berkod URL:

Jika anda memerlukan rentetan bukan URL yang dikodkan, cuma tambahkan penukaran:

echo htmlspecialchars_decode($decoded['DisplayName']);

Anda akan mendapat:

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan