Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1038 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [resolu]repetition dun eregi_replace()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu]repetition dun eregi_replace()

n°1255672
benefred
........
Posté le 29-11-2005 à 23:04:23  profilanswer
 

Bonsoir,
 
J'ai beau fouiner... :heink:  
 
Voila j'ai ca..

Code :
  1. $BaliseImg= eregi_replace("\[img([0-9]{1,3})\*([0-9]{1,3})\](.*)\[\/img\]","<img src=\"\\3\" width=\"\\1\" height=\"\\2\" />",$txa_text);


 
Ca marche quand il n'y a qu'une seule balise comme celle-ci dans mon champ

Code :
  1. [img120*120]http://wwwwwwwww.Image.jpg[/img]
  2. Traduit en
  3. <img src="http://images.jpg" width="100" height="100" />


 
Mais si il y a plusieurs balises, il ne prend pas les suivantes genre

Code :
  1. [img150*150]http://images.jpg[/img]
  2. [img100*100]http://images.jgp/[/img]
  3. Ca donne
  4. <img src="http://images.jpg[/img]
  5. <br />[img100*100]http://images.jgp/" width="150" height="150" />


 
J'utilise le meme procedé pour d'autres balises et je n'ai pas ce probleme !
 
Merci :hello:


Message édité par benefred le 30-11-2005 à 21:34:52
mood
Publicité
Posté le 29-11-2005 à 23:04:23  profilanswer
 

n°1255716
art_dupond
je suis neuneu... oui oui !!
Posté le 30-11-2005 à 00:16:01  profilanswer
 

essaye pit etre de remplacer (.*) par
 
(.[^\[]*)
(.[^[]*)
 
pour lui dire de prendre tout sauf "[", sinon il ne sait pas qu'il doit s'arrêter dès qu'il trouve la balise de fin
 
ps: je préviens, je ne suis pas très doué pour ces trucs ;)


Message édité par art_dupond le 30-11-2005 à 00:17:24

---------------
oui oui
n°1255724
afbilou
pouet your life
Posté le 30-11-2005 à 00:28:24  profilanswer
 

Utiliser les regex PCRE (preg_replace) au lieux de la version POSIX (ereg_replace) et utiliser l'option U (ungreedy) qui rend les quantificateur * et + non gourmands : la regex ne cherchera pas a trouver le motif le grand possible qui matche le masque de recherche.

n°1255731
art_dupond
je suis neuneu... oui oui !!
Posté le 30-11-2005 à 00:33:35  profilanswer
 

youp,
 
 
comment on emploie cette option ?
 
(je sais je pourrais chercher mais comme tu en parles :p)


---------------
oui oui
n°1255744
afbilou
pouet your life
Posté le 30-11-2005 à 01:05:37  profilanswer
 

Par exemple : $pattern = '#\[img\](.*)\[/img\]#U';

n°1255804
benefred
........
Posté le 30-11-2005 à 09:42:58  profilanswer
 

ok... boulot oblige.. j'peux pas testé tout de suite.. mais en cherchant plus d'infos sur ungreedy, j'ai trouvé ca
 

Citation :

Les fonctions POSIX eregi(); ou la PCRE preg_match(); ne capture que la première occurence rencontrée dans la chaine. Si l'on veut matcher un texte entier et en retirant toutes les occurences qui correspondent à notre motif, nous devrons employer preg_match_all();
-> voir la fonction ici : preg_match_all


 
Bref... j'vais test le preg_replace
Merci pour les infos ;)

n°1255907
art_dupond
je suis neuneu... oui oui !!
Posté le 30-11-2005 à 11:28:27  profilanswer
 

yop merci afbilou


---------------
oui oui

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [resolu]repetition dun eregi_replace()

 

Sujets relatifs
RESOLU inscription commentaire selon critère[Resolu] Probleme Register_Globals
[VBS][RESOLU] Fonction "Replace" non-case-sensitive[resolu] arrondi d'un décimal
RESOLU coller des formules ss lien de fichier[Résolu] Exécution sous unix
[RESOLU] Transmission de variable entre deux pages PHP ?supprimer une feuille (résolu)
[Résolu] Fonction Execlp avec nombre parametres variable 
Plus de sujets relatifs à : [resolu]repetition dun eregi_replace()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR