Si j'ai bien compris tu veux faire un système de (mauvais) template qui te génère du php, c'est ça ?
avoir un truc genre :
<?php echo $texte ?>
remplacé par :
<?php echo "i am a noob" ?>
???
si c'est ça, ceci devrait t'aider :
$texte = 'et hop $mon_texte hahaha';
$pattern = '/(\$([[:alnum:]][_]?)*)/';
$replace ="je suis un noob";
echo preg_replace($pattern,$replace,$texte);
C'est ce qu'on appelle une "expression régulière".
Je vais détailler :
1 - les simple quote => ' <= : entourent la chaine
2 - le "/" est le délimiteur du masque
3 - les parenthèses délimitent le premier élément du masque (il n'y a qu'un élément ici)
4 - la chaine commence par un $
5a - on commence un sous masque (permettant de déterminer le nom de caractères suivant le $)
5b - [[:alnum:]] : tous les caractères alphanumériques
5c - [_] on inclus l'underscore => _ <=
5d - ? par ce que l'underscore est facultatif
5e - * pour dire qu'il peut y avoir de un à X caractères de type [:alnum:] ou _
A toi de lire ton fichier ligne par ligne, y appliquer à chacune cette transformation pour ensuite la réecrire.
Une fonction un brin plus complète (qui évite que le premier caractères soit incorrect et qui le fait que la chaine commence par $ suivi de _ OU d'un caractère alpha (les variables types $1 $2 sont réservées à php !):
le pattern :
$pattern = '/(\$((([[:alpha:]]|[_]){1})([[:alnum:]][_]?[-]?)*))/';
Des exemples :
$texte = 'et hop $mon_texte-a-des-tirets hahaha';
$texte2 = 'et hop $1mon_texte-a-des-tirets hahaha';
$texte3 = 'et hop $_mon_texte-a-des-tirets hahaha';
$pattern = '/(\$((([[:alpha:]]|[_]){1})([[:alnum:]][_]?[-]?)*))/';
$replace ="je suis un noob";
echo $texte."<br/>";
echo "transformé =><b>".preg_replace($pattern,$replace,$texte)."</b>";
echo "<br/>".$texte2."<br/>";
echo "transformé =><b>".preg_replace($pattern,$replace,$texte2)."</b>";
echo "<br/>".$texte3."<br/>";
echo "transformé =><b>".preg_replace($pattern,$replace,$texte3)."</b>";