Page 1 sur 1

preg_replace_callback besoin d'aide sur un regex

Posté : 02 mars 2012, 11:30
par john-web
Bonjour voici mon souci:

Préambule:
Dans l'optique de rendre un site multilingues, j'utilisais un système de traduction de mon cru grâce à la paire $Clef => $Valeur dans un tableau. Mais ce système à des limites et consomme un peut trop de mémoire à mon goût, donc je passe à GETTEXT de php.

J'utilise aussi un système de Template ressemblant pas mal à celui des forums phpbb.

Pour les traductions faites à partir du php aucun problème, Mais pour les traductions situées dans les templates aïe...

Il faut que j'arrive à identifier les fonctions e_("Mon texte à traduire") contenu dans une $VariableContenentMonTemplate (celle qui a chargé le template)


Pour les tests j'ai fait cet essai:
$Text = ' ze fzef ezf ef   zefez fzef   e_(" Les Textes à traduire ") ezf zefzfzefzefzef  ezf zzfef zef f zef  e_("Un autre text a traduire avec des  ") quotes et des parentese qsfqsfqs") ';


$regex= '#e_\(\"(.*?)\"\)#is';
// Fonction de callback
function TranslateTemplate($matches)
{
  // comme d'habitude : $matches[0] représente la valeur totale
  // $matches[1] représente la première parenthèse capturante
  return '<h1>'.$matches[1].'</h1>';
}

echo  preg_replace_callback($regex, "TranslateTemplate", $Text);
ce qui me renvoi ceci:

 ze fzef ezf ef   zefez fzef   
<h1> Les Textes à traduire </h1> 
ezf zefzfzefzefzef  ezf zzfef zef f zef  
<h1>Un autre text a traduire avec des  ") </h1>
quotes et des parentese ") qsfqsfqs 
ce qui est logique vu le regex mais je voudrais obtenir ceci:
 ze fzef ezf ef   zefez fzef   
<h1> Les Textes à traduire </h1> 
ezf zefzfzefzefzef  ezf zzfef zef f zef  
<h1>Un autre text a traduire avec des  ") quotes et des parentese</h1> 
qsfqsfqs 

et c'est la que j'ai du mal... donc si quelqu’un peut m'indiquer ou chercher... ou encore mieux trouver la soluce :lol:

Merci d'avance, car je vais finir par me pendre, surtout que je suis sur que c'est un truc évident mais je le vois pas!!