[PHP] Aide pour un preg_replace, caractère de fin ]

Aide pour un preg_replace, caractère de fin ] [PHP] - PHP - Programmation

Marsh Posté le 29-11-2012 à 11:53:55    

Hello,
 
Je patauge un peu avec la fonction preg_replace. J'aimerais, dans un texte, que tous les liens en balise PHPBB du style
 

Code :
  1. Page


 
soient simplement effacés. Malheureusement il semble ne pas pouvoir accepter le ] comme caractère et pour être franc, je ne comprends pas bien comment coder mon "pattern" comme expliqué dans le manuel PHP : http://php.net/manual/fr/function.preg-replace.php  
 

Code :
  1. $texte = preg_replace("@(\[url=[^\])\r\n]+)@i","*lien*", $texte,-1,$count);


 
Quelqu'un pourrait me filer un petit coup de main ? :)  
 
Merci !


---------------
SHOOT ME AGAIN WEBZINE
Reply

Marsh Posté le 29-11-2012 à 11:53:55   

Reply

Marsh Posté le 30-11-2012 à 14:27:48    

[:bobdumas]


---------------
SHOOT ME AGAIN WEBZINE
Reply

Marsh Posté le 30-11-2012 à 18:49:32    

dans ton code ... on doit voir quoi exactement ? Un truc du style  
 
[url=http://www.lien.com?id=1&test=quelquechose]le lien ici [url] ?


---------------
Topic Ach/Vds/Ech jeux vidéo
Reply

Marsh Posté le 06-12-2012 à 11:55:03    

Buldozerben a écrit :

dans ton code ... on doit voir quoi exactement ? Un truc du style  
 
[url=http://www.lien.com?id=1&test=quelquechose]le lien ici [url] ?


 
Oui exactement, avec juste le [/url] à la fin
 
Dans l'idéal, ce serait parfait que ça me donne juste comme résultat "le lien ici" en enlevant simplement ce qu'il y a entre les crochets...


---------------
SHOOT ME AGAIN WEBZINE
Reply

Marsh Posté le 06-12-2012 à 13:06:59    

Coucou Dawa. Je ne peux répondre à ta question, mais j'ai simplement constaté que tu n'as pas déclaré de "charset" dans tes documents. D'où tes caractères spéciaux sont mal interprétés par le navigateur et la traduction en "�".

Reply

Marsh Posté le 07-12-2012 à 21:40:07    

1] Je vois que tu n'utilises que le pattern i
Essaye le pattern Usiu (Ungreedy, multiline, case insensitive, utf-8)
 
2] Si ça bugge essaye sans le petit u (t'as ptete pas l'extension utf-8 d'installée pour preg)
 
3] Si t'y arrives toujours pas, fais le en plusieurs étapes, avec la fonction preg_replace_callback : tu choppes un pattern plus simple, puis tu lui balances une fonction en callback, dans laquelle tu peux faire un if, une boucle, un preg... ou plein d'autres choses.


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 07-12-2012 à 22:52:15    

Dawa a écrit :


Code :
  1. "@(\[url=[^\])\r\n]+)@i"


 


 
Tu as une parenthèse fermante en trop (qui ferme dans le vide).
 
Et puis quand on débute en regexp, généralement on commence par "/.*/".
Après on rajoute des caractères tout en testant que ça continue de "matcher" :
"@url.*@"
"@url=.*@"
'@\[url=.*\]@'
'@\[url=\[^\/\]*\]@'
'@\[url=\[^\/\]+\]@'
'@\[url=\[^\/\r\n\]+\]@'
'@\[url=\[^\/\r\n\]+\]|\[/url\]@'
 
etc.
 
Edit : de plus dans ton expression il y a aussi tes double quotes ( " ) qui protègent ta string qui pourrait poser problème. Il vaut mieux utiliser les single quotes ( ' ) quand on travaille avec les regexp pour éviter le comportement imprévisible de l'échappement antislash \.


Message édité par czh le 07-12-2012 à 23:08:20
Reply

Marsh Posté le 08-12-2012 à 07:21:19    

Merci pour votre aide, je vais tester ça ! :)

Reply

Marsh Posté le 04-01-2013 à 07:47:10    

Je ne suis pas arrivé exactement à ce que je voulais :/  
 
C'est plutôt bizarre d'ailleurs car j'ai ceci :  
 

Code :
  1. $texte=preg_replace('@\[url=.*\]@',"*lien*",$texte);


 
Et quand j'ai par exemple  
 

Code :
  1. Test URL


 
Il me remplace absolument toute la chaine, alors qu'il devrait en principe s'arrêter au premier crochet non ? :??:  
 
Je suppose que si je veux garder uniquement le texte au milieu, donc le "Test URL", je devrais faire 2 preg_replace différents, un pour la première partie :  
 

Code :
  1. [url=http://www.blablabla.com]


 
Et un pour la deuxième, non ?  
 

Code :
  1. [/url]


 
Merci de votre aide !


---------------
SHOOT ME AGAIN WEBZINE
Reply

Marsh Posté le 04-01-2013 à 08:09:07    

salut
 
les regexp m'intéresse car il faut que je m'y mette ^^ mais en ce moment je planche sur autre chose.
Est ce que ce script ne peut pas t'aider : http://www.supportduweb.com/script [...] regex.html
 
Il traite la plupart des BBCODES dont les URLs .... sert toi en pour t'aider...


---------------
Topic Ach/Vds/Ech jeux vidéo
Reply

Sujets relatifs:

Leave a Replay

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