PHP Conference Nagoya 2025

simdjson_is_valid

(PECL simdjson >= 2.0.0)

simdjson_is_validVérifie si une chaîne JSON est valide

Description

simdjson_is_valid(string $json = false, int $depth = 512): bool

Prend une chaîne encodée en JSON et retourne true si elle est valide.

Liste de paramètres

json

Le string json à valider.

Cette fonction ne fonctionne qu'avec des chaînes encodées en UTF-8.

Cette fonction valide les entrées que json_decode() peut décoder, à condition qu'elles soient inférieures à 4 Go de longueur.

depth

La profondeur maximale de la structure à décoder. La valeur doit être supérieure à 0, et inférieure ou égale à 2147483647. Ceux qui appellent cette fonction devraient utiliser des valeurs raisonnablement petites, car des profondeurs plus importantes nécessitent plus d'espace tampon et augmenteront la profondeur de récursion, contrairement à l'implémentation actuelle de json_decode().

Valeurs de retour

Renvoie true si json est une chaîne JSON valide, sinon false.

Erreurs / Exceptions

Si json est invalide, une SimdJsonException est lancée à partir de PECL simdjson 2.1.0, alors qu'auparavant, une RuntimeException était lancée.

Si depth est en dehors de la plage autorisée, une SimdJsonValueError est lancée à partir de PECL simdjson 3.0.0, alors qu'auparavant, une erreur de niveau E_WARNING était lancée.

Exemples

Exemple #1 Exemples de simdjson_decode()

<?php
$json
= '{"a":1,"b":2,"c":3}';
$invalidJson = '{"a":1,"b":2,"c":';

var_dump(simdjson_is_valid($json));
var_dump(simdjson_is_valid($invalidJson));

?>

L'exemple ci-dessus va afficher :

bool(true)
bool(false)

Exemple #2 Erreurs de depth

<?php
// Encoder des données avec une profondeur maximale de 4
// (array -> array -> array -> string)
$json = json_encode(
[
1 => [
'English' => [
'One',
'January'
],
'French' => [
'Une',
'Janvier'
]
]
]
);

// Afficher les erreurs pour différentes profondeurs.
var_dump(simdjson_is_valid($json, 4));
var_dump(simdjson_is_valid($json, 3));
?>

L'exemple ci-dessus va afficher :

bool(true)
bool(false)

Notes

Note:

La spécification JSON n'est pas JavaScript, mais un sous-ensemble de JavaScript.

Note:

Dans le cas où le décodage échoue, une SimdJsonException est lancée et SimdJsonException::getCode() et SimdJsonException::getMessage() peuvent être utilisés pour déterminer la nature exacte de l'erreur.

Voir aussi

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top