Aide pour un preg_replace, caractère de fin ] [PHP] - PHP - Programmation
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] ?
Marsh Posté le 06-12-2012 à 11:55:03
buldozerben a écrit : dans ton code ... on doit voir quoi exactement ? Un truc du style |
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...
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 "�".
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.
Marsh Posté le 07-12-2012 à 22:52:15
Dawa a écrit :
|
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 \.
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 :
|
Et quand j'ai par exemple
Code : |
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 :
|
Et un pour la deuxième, non ?
Code :
|
Merci de votre aide !
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...
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
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
Quelqu'un pourrait me filer un petit coup de main ?
Merci !
---------------
SHOOT ME AGAIN WEBZINE