Maison > développement back-end > Problème PHP > Comment résoudre le problème des guillemets doubles lors de la conversion d'un tableau php en json

Comment résoudre le problème des guillemets doubles lors de la conversion d'un tableau php en json

PHPz
Libérer: 2023-04-18 15:46:37
original
1710 Les gens l'ont consulté

Lors du processus de conversion de tableaux PHP en données JSON, vous rencontrez parfois des situations où la chaîne JSON contient des guillemets doubles. Cette situation est très courante dans le développement réel et la solution est très simple.

Généralement, pour convertir un tableau PHP en chaîne JSON, vous pouvez utiliser la fonction intégrée PHP json_encode() pour terminer. Cette fonction convertit un tableau PHP en chaîne JSON. Par exemple, le code suivant convertit un tableau PHP contenant certaines données en une chaîne JSON : json_encode() 来完成。这个函数可以把一个 PHP 数组转换成一个 JSON 字符串。例如,下面的代码将一个包含了一些数据的 PHP 数组转换为 JSON 字符串:

$data = array(
    'name' => 'John',
    'age' => 30,
    'gender' => 'male'
);

$json_str = json_encode($data);
echo $json_str;
Copier après la connexion

这段代码的输出结果是:

{"name":"John","age":30,"gender":"male"}
Copier après la connexion

上面的代码中,将一个包含了 nameagegender 三个字段值的 PHP 数组转换成了一个 JSON 字符串。

然而,有时候我们的 PHP 数组中的值本身就包含有双引号,当使用 json_encode() 函数将其转换成 JSON 字符串的时候,会出现问题。

例如,以下 PHP 数组就包含了有双引号的值:

$data = array(
    'name' => 'John "The Rock" Johnson',
    'age' => 30,
    'gender' => 'male'
);
Copier après la connexion

如果直接使用 json_encode() 函数来转换成 JSON 字符串:

$json_str = json_encode($data);
echo $json_str;
Copier après la connexion

输出结果为:

{"name":"John "The Rock" Johnson","age":30,"gender":"male"}
Copier après la connexion

我们会发现,JSON 字符串中的 name 字段的值并没有被正确地转换成双引号内的字符串,而是在第一个双引号处被截断了。

为了解决这个问题,我们需要在使用 json_encode() 函数转换成 JSON 字符串的时候,添加一个参数 JSON_UNESCAPED_SLASHES,例如:

$json_str = json_encode($data, JSON_UNESCAPED_SLASHES);
echo $json_str;
Copier après la connexion

这样,输出结果会正确地将 name 字段的值转换成双引号内的字符串:

{"name":"John \"The Rock\" Johnson","age":30,"gender":"male"}
Copier après la connexion

注意到输出结果中 name 字段的值已经被正确地使用了双引号括起来,并且内部的双引号也被转义成了 "。这样,转换成的 JSON 字符串才能正确地被解析。

除了 JSON_UNESCAPED_SLASHES 参数外,还有一些其他的参数可以用来控制 json_encode() 函数的转换结果。如果你需要了解更多,可以参考 PHP 官方文档中的 json_encode()rrreee

La sortie de ce code est : 🎜rrreee🎜Dans le code ci-dessus, un tableau contenant name, age et gender de trois valeurs de champ sont convertis en une chaîne JSON. 🎜🎜Cependant, parfois les valeurs de nos tableaux PHP eux-mêmes contiennent des guillemets doubles, et des problèmes surviendront lors de l'utilisation de la fonction json_encode() pour les convertir en chaînes JSON. 🎜🎜Par exemple, le tableau PHP suivant contient des valeurs entre guillemets doubles : 🎜rrreee🎜Si vous utilisez directement la fonction json_encode() pour convertir en chaîne JSON : 🎜rrreee🎜Le résultat de sortie est : 🎜rrreee🎜 Nous constaterons que la valeur du champ name dans la chaîne JSON n'est pas correctement convertie en chaîne entre guillemets doubles, mais est tronquée au premier guillemet double. 🎜🎜Afin de résoudre ce problème, nous devons ajouter un paramètre JSON_UNESCAPED_SLASHES lors de l'utilisation de la fonction json_encode() pour le convertir en chaîne JSON, par exemple : 🎜rrreee 🎜De cette façon, la sortie Le résultat convertira correctement la valeur du champ name en une chaîne entre guillemets : 🎜rrreee🎜 Notez que la valeur du champ name dans le résultat de sortie a été utilisé correctement Entouré de guillemets doubles, et les guillemets doubles internes sont également échappés vers ". De cette façon, la chaîne JSON convertie peut être analysée correctement. 🎜🎜Sauf pour JSON_UNESCAPED_SLASHES En plus des paramètres, il existe d'autres paramètres qui peuvent être utilisés pour contrôler les résultats de conversion de la fonction json_encode(). Si vous avez besoin d'en savoir plus, vous pouvez vous référer. à json_encode() dans la documentation officielle PHP code> description de la fonction 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal