OVH Cloud OVH Cloud

remplacer un texte par un include

3 réponses
Avatar
LF36
bonjour,

j'ai un script qui afffiche le contenu d'une base dans une page.
le contenu est constitué de texte et images au format html
Ce contenu peut contenir un mot code du genre [mini form]

je voudrait pourvoir remplacer automatiquement le mot code trouvé par
l'insertion d'un script (mini formulaire).

j'ai testé avec str_replace mais rien à faire

$contenu = str_replace("[mini
form]","include('../conf/mini_form.php');",$row[contenu]);

je retrouve dans ma page final
include('../conf/mini_form.php');

auriez vous une idée je séche lamentablement.

Merci d'avance
LaurentF

3 réponses

Avatar
Olivier Miakinen

j'ai un script qui afffiche le contenu d'une base dans une page.
le contenu est constitué de texte et images au format html
Ce contenu peut contenir un mot code du genre [mini form]

je voudrait pourvoir remplacer automatiquement le mot code trouvé par
l'insertion d'un script (mini formulaire).

j'ai testé avec str_replace mais rien à faire

$contenu = str_replace("[mini
form]","include('../conf/mini_form.php');",$row[contenu]);


ATTENTION ! Si « contenu » n'est pas une constante définie, ton code est
syntaxiquement incorrect. Tu voulais peut-être écrire $row['contenu'].

je retrouve dans ma page final
include('../conf/mini_form.php');


Et ce n'est pas ce que tu voulais ?

auriez vous une idée je séche lamentablement.


Peut-être <http://fr.php.net/preg_replace> ?

preg_replace("/[(.*) (.*)]/", "include('../conf/$1_$2.php');", ...)

Avatar
Calimero
LF36 wrote:
$contenu = str_replace("[mini
form]","include('../conf/mini_form.php');",$row[contenu]);

je retrouve dans ma page final
include('../conf/mini_form.php');

auriez vous une idée je séche lamentablement.


Regarde du côté de file_get_contents(), au lieu d'include().

Attention aux problématiques d'échappement des caractères (si
nécessaires). Si le "contenu" vient des utilisateurs, il faut le
traiter avant affichage pour le rendre inoffensif (pour éviter les
attaques XSS et autres cochonneries)... sans désactiver ton code pour
le formulaire par la même occasion. Faut donc faire les choses dans le
bon sens.

Enfin bon, tu y avais peut-être déjà pensé. :)

--
@+
Calimero

Avatar
Florian Sinatra
*LF36* @ 05/10/2006 17:12 :
je voudrait pourvoir remplacer automatiquement le mot code trouvé par
l'insertion d'un script (mini formulaire).

j'ai testé avec str_replace mais rien à faire

$contenu = str_replace("[mini
form]","include('../conf/mini_form.php');",$row[contenu]);


Et tu fais quoi avec $contenu ? Tu l'affiches ? Et comment espères-tu
alors que l'include soit interprété dans cette chaîne?

je retrouve dans ma page final
include('../conf/mini_form.php');


Ce qui est parfaitement normal. Tu dois remplacer par le résultat de
mini_form à afficher. Donc deux cas :
* Soit mini_form.php ne contient que du HTML statique, dans ce cas vois
avec file_get_contents().
* Soit il le génère, et dans ce cas tu dois récupérer le code généré,
avec la "Bufferisation de sortie"
(http://ch2.php.net/manual/fr/ref.outcontrol.php).

Voilà :-)

PS (question) :
Il me semblait qu'include est une structure du langage qui n'est même
pas prise en compte pendant l'interprétation mais pendant la
"pré-interprétation". La FAQ (http://faqfclphp.free.fr/#rub2.9) dit que
ca n'est le cas que pour require en PHP3, mais ne précise pas pour
PHP>=4. Qu'en est-il? C'est où dans la doc ? Comment on appelle ça
correctement ?