Rumah > Soal Jawab > teks badan
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粉5981402942023-09-22 00:33:25
$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: