:o et :ouch:, comment les départager ? - PHP - Programmation
Marsh Posté le 25-07-2007 à 23:59:22
Tu traites les :ouch: et :pfff: en premier, puis les :o et :p
Marsh Posté le 26-07-2007 à 00:04:41
C'est ce que j'avais fait, mais ça ne marchait pas, en fait.
Dans un cas, j'ai que des :o, dans l'autre, j'ai des :ouch: foireux.
Par contre, j'viens de trouver la solution. J'étais dessus depuis 4h, fallait que je poste pour trouver :D
Dans le regex, j'ai donc mis un '(^:o)' au lieu de seulement ':o' et ça fonctionne !
Marsh Posté le 26-07-2007 à 00:06:02
Ah putain nan ca marche pas non plus comme ça, si le smiley est dans une phrase ça foire. Super
Marsh Posté le 26-07-2007 à 00:24:37
Si je les mets dans l'ordre que tu me dis, ça devrait marcher, mais mon pb alors est là :
Code :
|
Le :ouch: est remplacé par le lien vers la bonne image, mais ensuite le title=":ouch:" est lui aussi remplacé par le lien vers l'image, et ça fout tout le bordel.
Marsh Posté le 26-07-2007 à 00:30:34
godbout a écrit : Si je les mets dans l'ordre que tu me dis, ça devrait marcher, mais mon pb alors est là :
Le |
Mets le mode Ungreedy ( U )
PS : Tu peux aussi mettre une légende plus explicite pour ton title et ca arrangerait le problème
Marsh Posté le 26-07-2007 à 01:32:01
J'connaissais pas le mode Ungreedy. J'ai essayé, ça n'a rien changé. Soit je ne sais pas l'utiliser, soit ça va pas sur le coup là
J'avais pensé à changer la légende mais bon, ça pue comme solution Mettre un truc du genre ": o u c h :, mais sans les espaces hein
:p", j'trouve ça un peu naze.
Retour au début quoi, j'ai pas avancé depuis un bout de temps avec tout ça
Merci pour le coup de pouce en tout cas !
Marsh Posté le 26-07-2007 à 01:40:25
forcer des espace avant et apres les smiley ? (+ gerer un smiley en debut/fin de phrase)
Marsh Posté le 26-07-2007 à 01:54:48
Pour ce genre de fonction, j'utiliserais plutôt preg_replace_callback.
Rapidement, ça pourrait donner ça :
Code :
|
Marsh Posté le 26-07-2007 à 18:51:21
kalex, ta réponse est excellente, ça fonctionne merveilleusement bien !
Merci à tous !!!
Marsh Posté le 26-07-2007 à 19:54:18
A vrai dire ça marche tellement bien que j'me demande même pourquoi mon "http://' marche bien, sans me remplacer le "" par le smiley qui devrait. C'est pas que ça me dérange, au contraire c'est niquel ! Mais j'me pose la question quand même
Marsh Posté le 26-07-2007 à 19:56:04
Ah merde, en fait c'est le qui marche pas
Tout ceux à base de parenthèses, slashes ou autres foirent.
Oh, ça marche.
Maintenant c'est donc bien le http qui ne marche plus
Marsh Posté le 26-07-2007 à 20:16:22
Salut,
Dans l'expression régulière, j'ai mis un \w (tout caractère d'un mot), mais tu peux l'arranger autrement pour que ça capture exactement ce que tu souhaites. Par exemple, ton expression pourrait être :
/(:\w+:?|\;\)|:[\)\(])/ |
Marsh Posté le 26-07-2007 à 20:29:29
Salut !
Voilà ce que j'ai mis en fait :
'/:(\)|\w+|\(|\\\):?/ |
Du coup je récupère bien mes parenthèses et, en fait, l'antislash. J'ai préféré mettre un :\ plutôt qu'un :/, comme ça je galère pas avec mon http://. C'est un peu le bordel, chaque truc que j'implémente fout la merde ailleurs :D. Bon, du coup j'ai pas fait comme je voulais, mais ça m'évite de passer 3 jours et de perdre 550 000 cheveux pour un truc de rien du tout.
Sinon, autre petite question si ça te dérange pas :D
J'ai une autre regex qui est sensée me prendre les <img></img> pour me transformer les hauteurs/largeurs. Bref, le truc c'est que ça prend maintenant les smileys, ce que je voudrais éviter.
Ma regex est :
'/\<img src=\"([^][<>]*)\"\>\<\/img\>/' |
Comment faire pour lui indiquer de ne pas prendre les <img> qui ont un title ? J'ai essayé plusieurs combines, pas trouvé...
Marsh Posté le 25-07-2007 à 23:57:35
J'me suis développé un p'tit blog il y a un an pour me mettre au php. C'était marrant, je m'en suis servi pendant 1 an et là j'veux y ajouter des smileys, mais j'en chie un brin :D
En fait, j'arrive pas à départager les smileys dans les cas suivants :
:o et :ouch:
:p et :pfff:
etc...
A chaque fois, quand je fais le :ouch: ou le :pfff:, les deux premiers caractères (:o ou :p) sont échangés par les autres smileys.
Comment faire pour éviter ça ?