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

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2166013
Dawa
www.shootmeagain.com
Posté le 29-11-2012 à 11:53:55  profilanswer
 

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
mood
Publicité
Posté le 29-11-2012 à 11:53:55  profilanswer
 

n°2166154
Dawa
www.shootmeagain.com
Posté le 30-11-2012 à 14:27:48  profilanswer
 

[:bobdumas]


---------------
SHOOT ME AGAIN WEBZINE
n°2166214
Buldozerbe​n
Shizofan !
Posté le 30-11-2012 à 18:49:32  profilanswer
 

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
n°2167072
Dawa
www.shootmeagain.com
Posté le 06-12-2012 à 11:55:03  profilanswer
 

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
n°2167079
fnisse
Posté le 06-12-2012 à 13:06:59  profilanswer
 

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 "�".

n°2167265
CyberDenix
Posté le 07-12-2012 à 21:40:07  profilanswer
 

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)
n°2167273
czh
Posté le 07-12-2012 à 22:52:15  profilanswer
 

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
n°2167286
Dawa
www.shootmeagain.com
Posté le 08-12-2012 à 07:21:19  profilanswer
 

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

n°2169802
Dawa
www.shootmeagain.com
Posté le 04-01-2013 à 07:47:10  profilanswer
 

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
n°2169805
Buldozerbe​n
Shizofan !
Posté le 04-01-2013 à 08:09:07  profilanswer
 

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

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

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

 

Sujets relatifs
AIDE A LA PROGRAMMATIONAfficher les différents caractère set d'une base oracle
Afficher correctement du code PHP "littéral"récuperer un caractère dans un fichier avec read
Récupérer une URL en PHP contenue dans une page[PHP] SSO avec LDAP
Besoin d'aide svp!Aide formulaire d'encodage de données
[Résolu] VBA XLS Aide msgboxProjet d'application, aide base de données
Plus de sujets relatifs à : [PHP] Aide pour un preg_replace, caractère de fin ]


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