Prob avec preg_replace()

Résolu
Kevergeek
Messages postés
64
Date d'inscription
jeudi 14 février 2002
Statut
Membre
Dernière intervention
22 janvier 2006
- 20 janv. 2006 à 04:29
Kevergeek
Messages postés
64
Date d'inscription
jeudi 14 février 2002
Statut
Membre
Dernière intervention
22 janvier 2006
- 22 janv. 2006 à 21:31
Voici mon code :



<?php

$file = "templates/default/test.tpl";

$template['TITLE'] = "titre";

$template['TEXT'] = "blabla";



$file = file_get_contents($file);



$file = preg_replace('#\{([a-z0-9\-_]*?)\}#is', $template['\1'], $file);



echo $file;

?>



Voici ma page templates/default/test.tpl :



{TITLE}




{TEXT}



J'aimerai tout simplement remplacer {TITLE} par le contenu de $template['TITLE'] et {TEXT} par le contenu de $template['TEXT']. Mais il me met le message d'erreur suivant et je ne sais pas comment le corriger :

Notice: Undefined index: \1 in d:\program files\easyphp1-8\www\visual-creative\test.php on line 8



Merci pour l'aide que vous pourrez m'apporter

4 réponses

cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
20 janv. 2006 à 11:01
Salut,

tu ne peux pas faire ça à ma connaissance, mais en revanche tu peux faire une boucle sur ton tableau (en obtenant les clés avec array_keys()) puis tu fais un str_replace entre un tableau d'entrée et un tableau de sortie (meilleure méthode) ou plusieurs str_replace (moins rapide)

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
3
Kevergeek
Messages postés
64
Date d'inscription
jeudi 14 février 2002
Statut
Membre
Dernière intervention
22 janvier 2006

20 janv. 2006 à 15:14
Merci !! J'ai eu du mal à comprendre mais j'ai fini par réussir :)



Vala mon code final :



$file_content = file_get_contents($file);



$block = array_keys($template);



for( $i=0; $i<count($block); $i++) {

$file_content = str_replace("{".$block[$i]."}", $template[$block[$i]], $file_content);

}



$file_content = preg_replace('#\{([a-z0-9\-_]*?)\}#is', 'BLOCK NON DEFINI {\1}', $file_content);



echo $file_content;



Merci encore
0
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
20 janv. 2006 à 18:39
Tu peux faire ça :

$file_content = file_get_contents($file);

$block = array_keys($template);
$nb=count($block);

$recherche=array();
$remplace=array();

for( $i=0; $i<$nb; $i++)
{
$recherche[]='{'.$block[$i].'}';
$remplace[]=$template[$block[$i]];
}

$file_content = str_replace($recherche,$remplace, $file_content);
$file_content = preg_replace('#\{([a-z0-9\-_]*?)\}#is', 'BLOCK NON DEFINI {\1}', $file_content);

echo $file_content;

hop ;-)

a +
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Kevergeek
Messages postés
64
Date d'inscription
jeudi 14 février 2002
Statut
Membre
Dernière intervention
22 janvier 2006

22 janv. 2006 à 21:31
machi :)
0