expression reguliere

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : expression reguliere

par mojorisin » 29 avr. 2009, 12:29

Bonjour,
il faut eviter les ereg_* et préferer les preg_ qui sont plus vélocent comme regexp.

Voici un petit bout de code permettant d'arriver au résultat escompté :
<?php
$str = 'blabla bla \{hello\} bla bla blah blah \{toto\} blah blah';
$str2 = preg_replace('`\\\{([^\\\]+)\\\}`','{\\1}',$str);

echo 'Chaine normale : '.$str.'<br />';
echo 'Chaine remplacement : '.$str2;
?>

par darkloy » 29 avr. 2009, 11:47

Salut D4Y!

Tu as raison mais le problème, c'est que ma valeur de remplacement va écraser tout le temps ma variable .

Code : Tout sélectionner

// On récupère le contenu $content = $v[contenu]; // Expression régulière $regex = '\{.{0,10}\}'; // {0,10) // On cherche le type \{AAAAAAA\} et on remplace $replace = '{toto}'; $newContent= ereg_replace($regex,$replace,$content) //Problème avec ereg_replace
ca va donner pour 'blabla bla \{hello\} bla bla'
-> 'blabla bla {toto} bla bla'
alors que je veux
-> 'blabla bla {hello} bla bla'


Je pense que je vais faire comme ca :
rechercher si il y'as un chaine du type {blabla}
Si oui je la récupère, je l'extrait, et je change (str_replace) les '\{' par '{' et les '\}' par '{'
Ensuite je fait un str_replace de cette valeur corrigé dans le contenu initial

Je teste et je vous tiens au courant

[/code]

par D4Y » 29 avr. 2009, 11:30

Salut , je suis loin d'être un spécialiste des regex mais ton code m'interpèle tout de même :
// On récupère le contenu
   $content = $v[contenu];
   // Expression régulière
   $regex = '\{.{0,10}\}'; // {0,10)
   // On cherche le type \{AAAAAAA\} et on remplace
   $newContent= ereg_replace($regex,$content) //Problème avec ereg_replace

string ereg_replace ( string $pattern , string $replacement , string $string )

je pense qu'il te manque le string $remplacement

expression reguliere

par darkloy » 29 avr. 2009, 11:21

Bonjour à tous !
J'ai un problème, des insertions en BDD avec des variables de template du type : {VARIABLE} .Le problème c'est que certaines sont inséré avec des antislash ex : \{VARIABLE\}

Je fait un script php pour corriger ça.
Je ne suis pas un pro en expression régulière, mais j'essaye de me battre ...

Je récupère le contenu .
Ex : 'blablabla bla bla bla bla \{hello\} blabla'

j'aimerais le remplacer comme ca:
Ex : 'blablabla bla bla bla bla {hello} blabla'

j'ai fait ca :

Code : Tout sélectionner

// On récupère le contenu $content = $v[contenu]; // Expression régulière $regex = '\{.{0,10}\}'; // On cherche le type \{AAAAAAA\} et on remplace $newContent= ereg_replace($regex,$content) [\code] Forcement c'est tout fait . Si quelqu'un pourrais m'aider et m'expliquer un peu, ca serais très gentil, car je bloque complètement la .... Merci