ereg_replace -> Preg_replace [résolu]

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 : ereg_replace -> Preg_replace [résolu]

Re: ereg_replace -> Preg_replace

par Calimero » 04 janv. 2012, 00:02

Message subliminal :
Potasse bien le manuel et les nombreux exemples : http://fr.php.net/manual/fr/book.pcre.php

Et bon /réveillon/ :)
Les délimiteurs sont deux caractères identiques en début et en fin de motif. Après le délimiteur de fin, on trouve souvent des modifieurs (des caractères ne faisant pas partie du motif, mais ayant une signification particulière), voir le manuel pour comprendre leur signification.

Re: ereg_replace -> Preg_replace

par leiopar » 03 janv. 2012, 22:37

merci !

La bonne réponse est donc :
if ($log){
	$page=preg_replace('(\[#si_log#\](.*)\[#/si_log#\])',preg_replace('((^.*\[#si_log#\])|(\[#/si_log#\].*$))','', $page),$page);
}else{
	$page = preg_replace('(\[#si_log#\](.*)\[#/si_log#\])',"",$page);
}

Re: ereg_replace -> Preg_replace

par xTG » 03 janv. 2012, 21:55

Non tes apostrophes c'est juste pour dire à PHP que c'est une chaîne de caractère...
Voilà ton expression actuelle : (^.*\[#si_log#\])|(\[#/si_log#\].*$)
Faut rajouter un délimiteur à cette expression.

Re: ereg_replace -> Preg_replace

par leiopar » 03 janv. 2012, 20:55

pourtant il i à des apostrophe... ou alors j'ai mal compris.

Re: ereg_replace -> Preg_replace

par xTG » 03 janv. 2012, 20:39

les prce nécessitent des délimiteurs.
Là tu n'en as pas dans ton expression.
Donc de base il prend la première parenthèse comme délimiteur.
Sauf que du coup comme tu la fermes bah il tombe sur un caillou à savoir le |

Re: ereg_replace -> Preg_replace

par leiopar » 03 janv. 2012, 20:38

ok...

on va y aller petit bout par petit bout.

Si j'isole :
preg_replace('(^.*\[#si_log#\])|(\[#/si_log#\].*$)','', $page)
dont le rôle et de sélectionner tout ce qui précède la balise [#si_log#] et qui suit [#/si_log#] balise compris, sachant que l'expression (^.*\[#si_log#\])|(\[#/si_log#\].*$) fonctionne dans l'outil "RegExr" proposé si dessus, jobtien l'erreur suivante :
Warning: preg_replace() [function.preg-replace]: Unknown modifier '|' in ...
De même, si j'isole :
$page = preg_replace("\[#si_log#\](.*)\[#/si_log#\]","",$page);
j'obtiens :
Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in ...
Des suggestion ?

Re: ereg_replace -> Preg_replace

par Calimero » 31 déc. 2011, 23:33

Salut,

Si tu ne sais pas remplacer, alors ne remplace pas, refais-les directement en syntaxe preg.

L'apprentissage des regexp perl te prendra moins d'un an et demi ;-)

Potasse bien le manuel et les nombreux exemples : http://fr.php.net/manual/fr/book.pcre.php

Et bon /réveillon/ :)

Re: ereg_replace -> Preg_replace

par leiopar » 31 déc. 2011, 22:58

1 an et demi après.... UP ! :(

Je n'ai pas trop su quoi faire du lien de stealth35.
Cet outil semble fait pour étudier l’expression elle même.
Le problème n'est pas là (mon expression, je le rappel, fonctionne actuelement en production)

Mon souci est que je ne sais pas comment remplacer "ereg_replace" par "Preg_replace"

Sinon, bonne année a tous ;)

Re: ereg_replace -> Preg_replace

par stealth35 » 06 mai 2010, 23:00

hello,
a part les délimiteur en plus y'a pas grand chose qu'a changer, je te conseil se petit site pour tester tes masques
http://gskinner.com/RegExr/

:wink:

ereg_replace -> Preg_replace [résolu]

par leiopar » 06 mai 2010, 21:23

Bonjour :)

Comme beaucoup, je suis confronté a un "Function ereg_replace() is deprecated"... :?

J'ai donc entrepris de passé à la commende "preg_replace()".

Problème : je bute sur le remplacement de ces commande là :

Code : Tout sélectionner

if ($log){ $page=ereg_replace("\[#si_log#\](.*)\[#/si_log#\]",ereg_replace('(^.*\[#si_log#\])|(\[#/si_log#\].*$)','', $page),$page); }else{ $page = ereg_replace("\[#si_log#\](.*)\[#/si_log#\]","",$page); }
sachant que "$page" est un truc du genre :
titre [#si_log#]vous êtes connecté [#/si_log#]suite...
le but du jeu étant de faire d'afficher
"titre vous êtes connecté suite..."
si $log est vrai et
"titre suite..."
dans le cas contraire.

mais là, je n'y arrive plus ! :cry:
S'il vous plait un coup de mains serait bien venu !!!

Je précise que le code avec les "ereg_remplace" est tout à fait fonctionnel...

Leiopar