Regex du tonnerre de Zeus [PHP] - PHP - Programmation
Marsh Posté le 02-05-2006 à 15:16:12
le pattern doit pas être délimité avec preg_replace ?
genre preg_replace( '/\[b\]/', '<b>', $BBCode )
Auquel cas tes parenthèses ont ptet joué le rôle de délimiteur.
J'ai pas testé et je dis surement des conneries étant un grand professionnel averti des regex !
Marsh Posté le 02-05-2006 à 16:38:10
Ah merde, j'avais pas vu ça quand j'ai lu la doc
Bon ben j'y retourne, merci beaucoup ![[:dawao] [:dawao]](https://forum-images.hardware.fr/images/perso/dawao.gif)
Marsh Posté le 03-05-2006 à 13:04:35
Cool, j'ai fait un truc comme ça donc :
Code :
|
C'est rigolo, ça marche.
Enfin à moitié, parce que si j'imbrique des balises, ça marche plus ![[:tinostar] [:tinostar]](https://forum-images.hardware.fr/images/perso/tinostar.gif)
Marsh Posté le 03-05-2006 à 13:38:59
utilise des span pour l'imbrication
Comme ça ton
| Code : |
Devient
Code :
|
![]()
Marsh Posté le 03-05-2006 à 15:19:14
| godbout a écrit : Cool, j'ai fait un truc comme ça donc :
|
Tu peux faire un truc récursif, style :
function rec_replace($string) {
return preg_replace('#\[([ibu])](.*?)\[\/\1]#ie', '"<$1>" . rec_replace("$2" ) . "</$1>"', $string);
}
Sinon il faut gérer ça par type de balise et repasser plusieurs fois.
Marsh Posté le 04-05-2006 à 12:40:56
| chaced a écrit : utilise des span pour l'imbrication
|
Je ne sais pas pourquoi, mais je sens que la blague était intense.
Marsh Posté le 04-05-2006 à 12:42:48
| sielfried a écrit : Tu peux faire un truc récursif, style : |
Ok, merci pour l'info
De toute façon c'était qu'un essai, j'vais gérer que les [img] et les [url], donc je vais repasser plusieurs fois
Par contre, un p'tite question, j'capte pas la différence entre un
Code :
|
et un
Code :
|
Dans les deux j'y lis : 0 ou plusieurs occurences de n'importe quoi. J'vois pas ce que le ? vient ajouter
Marsh Posté le 04-05-2006 à 12:43:54
| chaced a écrit : Qu'elle blague ? ça marche tres bien... |
C'te rapidité
Disons que la solution ne me convient pas ![[:ohtusais] [:ohtusais]](https://forum-images.hardware.fr/images/perso/ohtusais.gif)
Marsh Posté le 04-05-2006 à 12:52:18
ReplyMarsh Posté le 04-05-2006 à 12:57:27
| godbout a écrit : <strong>Je teste ça <em>tout de </em>suite.</strong> |
ce n'est pas du tout w3c ce truc
pour faire un truc comme ça :
Code :
|
il faudrait ecrire :
<b>a</b><i><b>b</b>c</i>
Marsh Posté le 04-05-2006 à 13:06:30
| godbout a écrit : Ok, merci pour l'info
|
Le ? rend le * feignant ("lazy" ). Exemple simple, sur une chaîne de type : "fooBARfooBARfoo", "foo.*foo" catcherait "fooBARfooBARfoo" (la chaîne entière donc), alors que "foo.*?foo" catcherait "fooBARfoo". Autrement dit, l'étoile s'arrête au premier "foo" si elle est feignante, et au dernier si elle ne l'est pas.
Il y a aussi une option sur les fonctions preg_* pour les rendre feignantes par défaut (U je crois).
Marsh Posté le 04-05-2006 à 13:12:34
| chaced a écrit : ce n'est pas du tout w3c ce truc
|
euh en quoi c'est pas W3C l'usage des balises <strong> et <em> ? Elles ont un sens, contrairement aux balises <b> et <i>, qui elles ne sont là que pour la présentation et n'ont pas de sens. Ce sont donc ces dernières qui "ne sont pas W3C".
Marsh Posté le 04-05-2006 à 13:31:07
| sielfried a écrit : Le ? rend le * feignant ("lazy" ). Exemple simple, sur une chaîne de type : "fooBARfooBARfoo", "foo.*foo" catcherait "fooBARfooBARfoo" (la chaîne entière donc), alors que "foo.*?foo" catcherait "fooBARfoo". Autrement dit, l'étoile s'arrête au premier "foo" si elle est feignante, et au dernier si elle ne l'est pas. |
Ah ok, merci
J'avais déjà vu cette option de fénéantise ouais, mais j'ai cru au début que c'était pour le développeur
En fait j'avais pas compris comment l'appliquer, maintenant c'est bon, merci ![[:dawao] [:dawao]](https://forum-images.hardware.fr/images/perso/dawao.gif)
Marsh Posté le 04-05-2006 à 15:20:34
J'essaye de gérer les balises [img] et [url]/[url=] en pouvant les imbriquer les unes dans les autres, ça fout à chaque fois tout en l'air ![[:sisicaivrai] [:sisicaivrai]](https://forum-images.hardware.fr/images/perso/sisicaivrai.gif)
Marsh Posté le 04-05-2006 à 15:35:17
Code :
|
Voilà mon code. Mais forcément, une fois que les [img] ont été changées en <img src=, ben le regex des url ne marche pas, et ça fait tout foirer.
Marsh Posté le 14-05-2006 à 18:01:40
J'ai rajouté les "<" et ">" dans les choses à éviter, et ça marche
Par contre j'ai une autre question
En ce qui concerne le "^" dans les classes de caractères, j'aurais aimé interdire un mot complet, comment je fais ?
Est-ce que [^(mot)] est correct ? ![]()
Marsh Posté le 02-05-2006 à 14:54:51
J'me mets aux regex en essayant de gérer quelques bbcode, j'ai eu un problème, je l'ai résolu, mais je ne comprends pas pourquoi ça ne marchait pas
Voilà mon ex-code :
J'me suis retrouvé avec mes
[b]
remplacés par des
[<b>]
et il me semble mes
[/b]
par des
[</b>]
J'ai pas compris pourquoi
En ajoutant des parenthèses dans le regex comme ceci '(\[b\])' ça a marché, miraculeusement.
Where is the problem?
PS: Je tiens à préciser que j'ai lu tous les topics sur le forum et sur google.
Message édité par godbout le 02-05-2006 à 14:57:13