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...
$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:
Anda kemudian boleh menukar JSON kepada tatasusunan PHP biasa dan mengakses kekuncinya:
Hasil data ialah rentetan berkod URL:
Jika anda memerlukan rentetan bukan URL yang dikodkan, cuma tambahkan penukaran:
Anda akan mendapat: