Expression régulière

Expression régulière - PHP - Programmation

Marsh Posté le 13-12-2003 à 12:13:34    

Slt,
 
Je travaille sur un projet et j'aurais besoin que mon script analyse une chaine et transforme les morceaux genre "{user}" par $user come pour les templates...je voudrais utiliser la fonction "preg_replace()" pour les \\1 mais je n'arrive pas  :sweat:  
 
Pouvez-vous m'eclarer sur la syntaxe ?
 
Merci

Reply

Marsh Posté le 13-12-2003 à 12:13:34   

Reply

Marsh Posté le 13-12-2003 à 13:54:46    

Code :
  1. $var = preg_replace("#\{([a-zA-Z0-9_-]+)\}#","$$1",$var);


 
edit:
attention tout de meme si tu n'utilise pas la concatenation, si tu as un truc du genre :
{var}2
ton script comprendra :  
$var2
et non pas $var.'2'


Message édité par karamilo le 13-12-2003 à 17:20:57
Reply

Marsh Posté le 13-12-2003 à 14:22:13    

Cool, merci bcp...une question quand meme, le # sert à quoi ?

Reply

Marsh Posté le 13-12-2003 à 17:02:40    

a delimiter l'expression reguliere. Il faut 2 caracteres identiques au debut et a la fin : (nb: parfois, il n'y a pas d'options ...)
#regex#options
/regex/options  
etc
 
Si tu veux utiliser le caractere delimiteur, il faut l'echapper :
#regex_debut\#regex_fin#options
...

Reply

Marsh Posté le 13-12-2003 à 17:07:41    

Ha ok merci mais j'a testé et y a un ptit bug :p
 
dans mon fichier qui va etre pris & analysé il y a "var test : {test} " et le resultat donne "var test : test"...impossible de faire passer le deuxieme test comme variable...

Reply

Marsh Posté le 13-12-2003 à 17:21:08    

oui j'avais oublié un $
edite plus haut


Message édité par karamilo le 13-12-2003 à 17:21:23
Reply

Marsh Posté le 13-12-2003 à 17:25:27    

bin oui c'est ce que j'avais essayé mais pas moyen :|
 
Regarde le code :  
 
<?php
/* ouverture du fichier */
$fp = @fopen("test.x", "r" );
while (!feof($fp))
{
   $Donnees .= fread($fp, 16);
}
 
$Data = $Donnees;
 
$test = "lol";
/* remplace des {} */
$Data = preg_replace("#\{([a-zA-Z0-9_-]+)\}#","$$1",$Data);
$Data = $Data;
echo "$Data";
?>


Message édité par null le 13-12-2003 à 17:28:17
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed