Problèmes rencontrés lors de l'utilisation de la fonction PHP strpos() pour la récupération d'informations et le recadrage
P粉692052513
P粉692052513 2023-09-21 10:35:25
0
1
671

Je reçois des données brutes d'une API qui contient un JSON et j'essaie de supprimer la partie JSON uniquement des données renvoyées. J'ai utilisé la fonction strpos() de PHP pour écrire une fonction permettant de découper le JSON du début (la position de l'accolade ouvrante) à la fin (la position de l'accolade fermante).

Mais j'ai rencontré un problème, certaines valeurs des données contenaient également des caractères spéciaux, notamment des points-virgules, ce qui empêchait la fonction de recadrer complètement...

Existe-t-il une meilleure façon de résoudre ce problème ?

Exemple de quelques données :

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

C'est la fonction que j'ai écrite :

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

Donc, en utilisant cette fonction, cela s'arrête toujours à DisplayName...

P粉692052513
P粉692052513

répondre à tous(1)
P粉598140294

Votre $data semble être une chaîne JSON mal formée.

Si cela est dû à une mauvaise saisie et que $data est une chaîne JSON normale, alors je vous recommande de changer de stratégie.

En supposant que la chaîne JSON correcte est :

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

Vous pouvez ensuite convertir le JSON en un tableau PHP normal et accéder à ses clés :

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

Le résultat des données est une chaîne codée en URL :

Si vous avez besoin d'une chaîne non codée en URL, ajoutez simplement la conversion :

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

Vous obtiendrez :

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal