Tout d'abord, passons en revue l'utilisation de base de la fonction substr () . La fonction de la fonction substr () est de renvoyer une sous-chaîne dans la chaîne à partir de la position spécifiée et de spécifier la longueur. La syntaxe est la suivante:
<span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$start</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>
$ String : une chaîne en attente.
$ start : position de démarrage, les nombres négatifs indiquent les calculs à partir de la fin de la chaîne.
$ Longueur : Paramètre facultatif, indiquant la longueur de la sous-chaîne. S'il est omis, la pièce du début à la fin de la chaîne est extraite.
JSON (notation d'objet JavaScript) est un format d'échange de données léger qui est souvent utilisé pour l'interaction des données frontale et back-end. Une structure de données JSON typique est la suivante:
<span><span><span class="hljs-punctuation">{</span></span><span>
</span><span><span class="hljs-attr">"name"</span></span><span><span class="hljs-punctuation">:</span></span><span> </span><span><span class="hljs-string">"John"</span></span><span><span class="hljs-punctuation">,</span></span><span>
</span><span><span class="hljs-attr">"age"</span></span><span><span class="hljs-punctuation">:</span></span><span> </span><span><span class="hljs-number">30</span></span><span><span class="hljs-punctuation">,</span></span><span>
</span><span><span class="hljs-attr">"city"</span></span><span><span class="hljs-punctuation">:</span></span><span> </span><span><span class="hljs-string">"New York"</span></span><span>
</span><span><span class="hljs-punctuation">}</span></span><span>
</span></span>
Les données JSON contiennent généralement une structure de paires de valeurs clés, où la clé est une chaîne, et la valeur peut être une chaîne, un nombre, un booléen, un tableau ou même un objet imbriqué. Lorsque nous extrayons la valeur d'un champ à partir d'une chaîne JSON, nous utilisons généralement la fonction JSON_DECODE () pour l'analyser dans un objet PHP ou un tableau associatif, puis accéder directement à la clé correspondante.
Supposons que nous ayons la chaîne JSON suivante:
<span><span><span class="hljs-variable">$json_data</span></span><span> = </span><span><span class="hljs-string">'{"name": "John", "age": 30, "city": "New York"}'</span></span><span>;
</span></span>
Si nous voulons extraire les données "Nom": "John" , nous pouvons théoriquement utiliser substr () pour extraire une partie de la chaîne. Par exemple:
<span><span><span class="hljs-variable">$substring</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$json_data</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">20</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$substring</span></span><span>; </span><span><span class="hljs-comment">// Sortir: {"name": "John"}</span></span><span>
</span></span>
Cette méthode extrait une partie de la chaîne JSON, mais il y a quelques problèmes. Les données JSON sont un format de données structuré, et substr () intercepte simplement les chaînes en fonction de l'emplacement, il est donc impossible de comprendre les niveaux et les relations entre les différents éléments de JSON. Lorsque vous utilisez substr () , nous devons calculer manuellement la position et la longueur, ce qui est très peu fiable pour les données JSON complexes ou les structures JSON à modification dynamique.
Impossible d'analyser la structure : substr () ne peut fonctionner que des octets et ne peut pas analyser la structure réelle des données JSON. Les clés et les valeurs dans JSON peuvent contenir divers caractères spéciaux ou des caractères d'échappement, dont aucune ne peut être gérée efficacement avec une interception simple.
Inflexible : si la structure des données JSON change, calculant manuellement la position de départ et la longueur de la chaîne devient lourde et sujette aux erreurs.
Le manque de gestion des erreurs : substr () ne vérifie pas si la chaîne cible répond au format JSON attendu, peut donc entraîner des erreurs d'analyse.
La bonne façon de traiter les données JSON est d'utiliser la fonction intégrée de PHP JSON_DECODE () pour analyser la chaîne JSON en une variable PHP. Cela vous permet d'accéder facilement aux champs individuels dans vos données JSON. Par exemple:
<span><span><span class="hljs-variable">$json_data</span></span><span> = </span><span><span class="hljs-string">'{"name": "John", "age": 30, "city": "New York"}'</span></span><span>;
</span><span><span class="hljs-variable">$data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">json_decode</span></span><span>(</span><span><span class="hljs-variable">$json_data</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>); </span><span><span class="hljs-comment">// Convertir en tableau associatif</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$data</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>]; </span><span><span class="hljs-comment">// Sortir: John</span></span><span>
</span></span>
Si vous n'avez qu'à extraire une partie de JSON, cela peut être fait en accédant à la clé correspondante sans compter sur substr () . Ce n'est pas seulement plus sûr, mais aussi plus maintenable.
Bien que la fonction substr () puisse être utilisée dans certains cas pour extraire des pièces des chaînes JSON, ce n'est pas le meilleur outil pour gérer les données JSON. L'utilisation de substr () peut provoquer un code inflexible et un sujet d'erreur, en particulier lorsque la structure des données JSON change. Lors du traitement des données JSON, la méthode la plus recommandée consiste à utiliser JSON_DECODE () pour analyser les chaînes JSON et accéder aux données requises via un tableau ou un objet.
Pour les scénarios où les chaînes JSON sont manipulées, JSON_DECODE () et JSON_ENCODE () peuvent être utilisées en combinaison pour extraire et modifier les données JSON plus solidement et de manière fiable.