8768 sujets

Développement web côté serveur, CMS

Bonjour,
voici mon souci...
J'ai un texte en code HTML que je souhaite stocker en BDD MySQL avec ses balises (<p><i> etc), jusque là rien de compliqué et j'ai choisi longtext.

Mais dans ce texte contient aussi des variables php du genre $nom $prenom que je souhaite stocké et pouvoir récupérer ensuite.

en fait j'ai une page php qui va chercher des infos en BDD comme le nom et le prénom que je transforme en variable $prenom = et ainsi de suite.
L'idée est une fois ces données récupérées, d'aller chercher le texte en base de donnée et de remplacer les variables du texte par les valeurs récupérées au préalable.

car un fois le texte récupéré et les variables remplacées le tout passera par html2pdf pour générer un pdf.

Le souci est que je récupère bien les datas nom prénom et autre, je récupère bien le texte qui lorsque je fais un echo il s'affiche bien à l'écran (avec les paragraphes, italique et autre) mais impossible de replacer les variables par les bonnes valeurs... c'est frustrant.

Comment feriez vous à ma place ? Merci d'avance
Modérateur
Bonjour,

pour ce genre de cas, on évite de mettre du php et de l'évaluer pour des raisons évidentes de sécurité, on fait plutôt du remplacement de variable comme dans l'exemple suivant. Il suffit de créer un format de variables qui a peut de chance de se retrouver dans le texte naturellement (bien qu'on peut complexifier la chose pour éviter ce problème : {{MA_VARIABLE}} ou __MA_VARIABLE__ ou $$$$%%--{{MA_VARIABLE}}--%%$$$$ si on n'est pas serein.


$mon_texte_issu_de_la_bdd = '<p>Bonjour {{PRENOM}} {{NOM}}, comment-allez vous?</p>';

$replace = array(
  '{{PRENOM}}' => 'Bruce',
  '{{NOM}}' => 'Wayne',
);

$mon_texte_avec_les_variables_remplacees = str_replace(
  array_keys($replace),
  array_values($replace),
  $mon_texte_issu_de_la_bdd
);



p.s. : Il existe bien entendu des scripts ou moteurs de templating complets pour aller plus loin, mais ceci gère très bien les situations basiques.
Modifié par kustolovic (13 Jul 2017 - 17:42)
Meilleure solution
Et bien merci de ton aide.

J'ai fais quelques tests et cela me parait pas mal du tout....

je vais voir avec les transformations par html2pdf, mais tu m'as donné une bonne partie de la solution.

Encore merci.