Bei der Verwendung der PHP-Funktion strpos() zum Abrufen und Zuschneiden von Informationen sind Probleme aufgetreten
P粉692052513
P粉692052513 2023-09-21 10:35:25
0
1
647

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...

P粉692052513
P粉692052513

Antworte allen(1)
P粉598140294

您的$data似乎是一个格式错误的JSON字符串。

如果这是由于错误的输入导致的,并且$data是一个正常的JSON字符串,那么我建议您改变策略。

假设正确的JSON字符串是:

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

然后您可以将JSON转换为普通的PHP数组并访问其键:

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

数据结果是一个URL编码的字符串:

如果您需要一个非URL编码的字符串,只需添加转换:

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

您将获得:

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage