Bonsoir,

Je rencontre un problème pour échapper un apostrophe et le stoker dans un fichier JSON

J’ai bien essayé la fonction utf8_encode mais elle me retourne une erreur.

Warning: utf8_encode() expects parameter 1 to be string, object given in C:\wamp\www\...\models\manager-pages.php on line 38

Je stocke dans ce fichier JSON le nom et les URL de mon menu.

6 réponses


vavoir
Auteur
Réponse acceptée

J'ai apporter des modifications la première:

 array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')

Quand je me connecte à la bdd et j'ajoute le paramêtre: JSON_HEX_APOS se qui donne

menu            = json_encode($file_menu, JSON_HEX_APOS);

Pour plus d'information voir: php.net/manual/fr/json.constants.php Pour l’instant je n'ai plus de problème.

Bonsoir,

Ton erreur est écrit ici.
Il te dit que la fonction utf8_encode attend 1 paramètre string (une chaine de charactère) et tu lui donne un objet donc ça risque pas de marché.
Peux tu montrer le code en question ?

Ce code est dans un model d'une ORM nan ? Si oui quel framework et/ou quel ORM ?

De plus tu ne te sert jamais de ta variable $slug ligne 3, c'est normal ?

vavoir
Auteur

@drdoom Quequ'une ORM ? Non je n'utilise aucun framework. Si j'utilise la variable $slug ligne 4 si je fait:

    $file_menu->$page->slug   = $page->name;

ça ne marche pas mais si je fait

    $slug                       = $page->slug;
    $file_menu->$slug   = $page->name;

tout fonctionne

Ok je vois je ne savais pas que cette syntax était possible en php !

Une ORM "Object Related Model" permet de gérer les entrées de ta base de données via des objets.

vavoir
Auteur

C'est pas ce que fait un peu pdo ?
La syntaxe est visiblement possible mais peut être pas fait dans les règles de l'art mais je ne connais aucune autre.