Ich erhalte Rohdaten von einer API, die JSON enthält, und versuche, den Nur-JSON-Teil aus den zurückgegebenen Daten herauszuschneiden. Ich habe die Funktion strpos() von PHP verwendet, um eine Funktion zu schreiben, um den JSON vom Anfang (der Position der öffnenden Klammer) bis zum Ende (der Position der schließenden Klammer) zu kürzen.
Aber ich bin auf ein Problem gestoßen, einige Werte der Daten enthielten auch Sonderzeichen, einschließlich Semikolons, die verhinderten, dass die Funktion vollständig zugeschnitten wurde ...
Gibt es einen besseren Weg, dieses Problem zu lösen?
Beispiel einiger Daten:
$data = { "name" : "Full Name", "DisplayName":"St Philip\u0026#39;", "grade" : "grade", "percentage" : 10, {"EventName":"Event Name","maxErrors":10} };
Das ist die Funktion, die ich geschrieben habe:
function copyData($data, $param1, $param2) { $start = strpos($data, $param1) + strlen($param1); $end = strpos($data, $param2, $start); $return = substr($data, $start, $end - $start); return $return; }
Bei Verwendung dieser Funktion stoppt es also immer bei DisplayName...
您的$data似乎是一个格式错误的JSON字符串。
如果这是由于错误的输入导致的,并且$data是一个正常的JSON字符串,那么我建议您改变策略。
假设正确的JSON字符串是:
然后您可以将JSON转换为普通的PHP数组并访问其键:
数据结果是一个URL编码的字符串:
如果您需要一个非URL编码的字符串,只需添加转换:
您将获得: