Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/07/2006, 20h02   #1
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
Par défaut Problème avec une ReGex

Salut a tous,

j'ai un petit soucis sur une regex pour mon forum.

Je suis en train de faire la fonction qui permet de transformer le [quote="auteur"] .

Cependant j'ai un petit soucis, car je veut prendre en compte aussi bien :

[quote=auteur]

que
[quote="auteur"] et [quote='auteur']

J'ai donc fait cette regex:
Code :
1
2
 
$string=preg_replace('!\[quote=["\']?(.*)[\'"]?]!isU', '<div>Cite:$1</div>', $string);
le problème que pour la variable $1 il me renvoi
'auteur et "auteur pour les 2 derniers cas au lieu de tout simplement me renvoyer auteur.

Avez vous une petit idée qui me permetterais de remédier à ce problème?

Merci d'avance!
__________________
manganimes (en construction) -
zemanga
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 21h37   #2
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 569
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 569
Points : 2 503
Points : 2 503
Salut, si tu essaies ça
Code :
$string=preg_replace('!\[quote=["\']?([^\'"]*)[\'"]?]!isU', '<div>Cite:$1</div>', $string);
Ca donne quoi ?
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 21h56   #3
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
ca marche niquel merci .

Mais je suis encore bloqué sur la même regex.

La structure de la chaine de caractère est de la forme:

Citation:
[quote ="auteur"]<br />test<br />[/q uote]
J'ai donc essayé ca:

Citation:
$string=preg_replace('!\[quote =["\']?([^\'"]*)[\'"]?](.*)[/q uote]!isU', '<div>Cite:$1<br>Text:$2</div>', $string);
Edit: j'ai rajouté un esxpase dans quote = pour éviter que ca interagissent avec le BBcode de ce forum ^^

Mais ca me ressort ca:

Citation:
<div>Cite:auteur<br>Text:<br </div>>test<br />[/q uote]
Avez vous une idée sur la cause de ce problème?
__________________
manganimes (en construction) -
zemanga
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 22h38   #4
Membre éprouvé
 
Homme
Consultant en Business Intelligence
Inscription : mai 2003
Messages : 910
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mai 2003
Messages : 910
Points : 407
Points : 407
salut,

désolé pas de réponse à te donner, mais un lien à te donner, puisque apparemment tu te sers beaucoup des regex : http://www.expreg.com

gôm
__________________
Quand on n'a pas d'tête, on a ...
ghohm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 23h53   #5
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
Merci j'ai regardé un peu sur le site il est pas mal, je l'ai mis dans mes favoris mais je n'ai pas trouvé de réponses.

Je voit vraiment pas ce qui cloche la. J'ai essayer en remplacant (.*) par ([^\[]) mais ca ne marche pas non plus, et en plus ca interdirait les utilisateur de citer un text contenant des [] .
__________________
manganimes (en construction) -
zemanga
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2006, 09h37   #6
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
et avec ca :
\[quote=["\']?(.*?)[\'"]?\](.*?)\[\/quote\]
__________________
If it's not broken, don't fix it.
BiliBa Built on top of Zend Framework
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2006, 15h55   #7
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
En effet j'avais oublier d'échapper des [.
Merci,

mais j'ai encore un problème lol (décidement).


Je me suis attaqué au balise [ur] en utilisant le meme code que pour le quote mais ca déconne avec les "".

donc le code a traité est soit:
[u rl=http://www.monsite.com]monsite[/u rl]
[u rl='http://www.monsite.com']monsite[/u rl]
[u rl="http://www.monsite.com"]monsite[/u rl]

Pour les 2 premier ca marche mais pour la derniere ca me sort:

Citation:
[u rl="http://www.google.fr"]google[/u rl]
(les espaces sont volontaire).

Ma regex:
Code :
1
2
 
$string=preg_replace('!\[url=["\']?http://([^\]\'"]*)["\']?\](.*)\[/url\]!isU', '<a href="http://$1">$2</a>', $string);
__________________
manganimes (en construction) -
zemanga
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2006, 18h02   #8
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
C' vraiment bizarre.

Même quand je fait juste ca :

Code :
1
2
 
$string=preg_replace('!\[url="http://([^\]\'"]*)"\](.*)\[/url\]!isU', '<a href="http://$1">$2</a>', $string);
ca ne marche pas (j'ai remplacer ["\']? par ").

La je vois vraiment pas ou est le probleme. Et pourquoi avec ' ca marche
__________________
manganimes (en construction) -
zemanga
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2006, 21h02   #9
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
ca ne peut pas venir du mime_magic de php?
__________________
manganimes (en construction) -
zemanga
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2006, 21h27   #10
Membre chevronné
 
Avatar de Death83
 
Inscription : mars 2005
Messages : 1 667
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 667
Points : 746
Points : 746
C'est bon j'ai trouver la réponse a mon problème.
Vu que je passe par FCKeditor, il transforme les " en &quot; donc forcément ca ne marchait pas ^^.
__________________
manganimes (en construction) -
zemanga
Death83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h05.


 
 
 
 
Partenaires

Hébergement Web