Archives des forums MMO/MMORPG > Forums divers > Problèmes, questions et suggestions > [Question stupide du jour]Interprétation des smileys ?
[Question stupide du jour]Interprétation des smileys ?
Par Lwevin Myan le 3/10/2002 Ã 22:34:35 (#2278130)
Comme un petit dessin vaut mieux qu'un long discours, voici un exemple (les . étant pour laisser le code, mais sont évidemment des : dans la version smiley...) :
.rolleyes. ) donne :rolleyes: ) -> OK, pas d'autre interprétation possible
.rolleyes.rolleyes. donne :rolleyes:rolleyes: -> Interprétation "naturelle" (enfin, pour moi, ça l'est), de gauche à droite
.rolleyes.) donne :rolleyes:) -> Ici, il semble que l'interpétation soit faite de droite à gauche ???
La seule explication que je vois est une espèce de hiérarchie de smileys, mais même cette solution me parait un peu bancale (vu que cela implique de décoder 2 "mots" à l'avance, et sans rentrer dans le technique, c'est quand même bien plus lourd et complexe à gérer...)
Quelqu'un aurait-il l'explication pour me permettre de dormir tranquille ? :merci:
Par Nikkau, un, deux, t le 3/10/2002 Ã 22:58:48 (#2278229)
Sinon je sais pas, j'suis pas en état d'y refléchir.
Par Eldarendil le 4/10/2002 Ã 0:31:07 (#2278710)
Pour la hierarchie des smileys : vBulletin les teste les un apres les autres, et là , manifestement, :) est avant :rolleyes:
Pour le :rolleyes:rolleyes: qui ne garde que le smiley de droite, cela vient du mécanisme des expressions régulieres compatible Perl (PCRE) :
En gros, php parse de droite à gauche : ainsi le :rolleyes: de droite est reperé, remplacé, et tant pis pour l'autre...
Par Nikkau, un, deux, t le 4/10/2002 Ã 0:51:28 (#2278803)
Par Eldarendil le 4/10/2002 Ã 2:03:23 (#2278972)
Par Lwevin Myan le 4/10/2002 Ã 20:39:24 (#2282681)
Provient du message de Eldarendil
C'est tres simple
Pour la hierarchie des smileys : vBulletin les teste les un apres les autres, et là , manifestement, :) est avant :rolleyes:
Pour le :rolleyes:rolleyes: qui ne garde que le smiley de droite, cela vient du mécanisme des expressions régulieres compatible Perl (PCRE) :
En gros, php parse de droite à gauche : ainsi le :rolleyes: de droite est reperé, remplacé, et tant pis pour l'autre...
Merci pour ces explications. Je suis convaincu, les 3-4 tests que je viens de faire semblent montrer que les smileys sont hiérarchisés dans l'ordre où ils sont affichés lors de l'édition d'un message, pour être précis.
Mais je trouve qu'en termes de performances, heu... ce n'est pas très optimisé, on va dire. Perl permet heureusement de faire de la reconnaissance sur plusieurs motifs à la fois (au hasard /:([\)|\(])/$1/g doit marcher pour :) et :( simultanément).
La question qui va donc me tourmenter pour les prochaines nuits :) sera donc : quel est la contrainte qui empêche de faire plusieurs patterns matching simultanément ? (si ça se trouve, c'est une contrainte php, auquel cas je vais chercher longtemps...)
(Bien vu pour la méthode de prévention d'affichage des smileys, au passage :))
Par Nikkau, un, deux, t le 4/10/2002 Ã 20:52:00 (#2282752)
Provient du message de Eldarendil
C'est ce que j'ai fais, regarde l'heure de mon post http://druide.mad-troll.com/Forum/images/smiles/grnbiggrin.gif
C'est vrai, et y a quelques mois j'en aurai tenu compte mais au stade où j'en suis le matin c'est l'heure où je me lève car pour moi minuit-1h fait parti du soir dans la mesure où je suis jamais couché à cette heure là .
Par Tite puce le 4/10/2002 Ã 21:42:32 (#2283002)
... qui ne garde que le smiley de droite, cela vient du mécanisme des expressions régulieres compatible Perl (PCRE) ...
A tout hasard... il garde pas plutot celui de gauche ? ze veut dire... il affiche celui de gauche nan ?
Pis ca c'est parce que je pense que c'est un replace() (ou equivalent) qui scan la fonction de gauche a droite :)
Par Eldarendil le 4/10/2002 Ã 23:52:03 (#2283593)
Posté par Nikkau, un, deux, t
Je te rassure, c'est pareil pour moi : regarde l'heure de mon 2eme post
C'est vrai, et y a quelques mois j'en aurai tenu compte mais au stade où j'en suis le matin c'est l'heure où je me lève car pour moi minuit-1h fait parti du soir dans la mesure où je suis jamais couché à cette heure là .
posté par Tite puce
Quand je disais "il garde celui de droite" c'etait en fait pour traduire : "il repere celui de droite et le remplace".
A tout hasard... il garde pas plutot celui de gauche ? ze veut dire... il affiche celui de gauche nan ?
Pis ca c'est parce que je pense que c'est un replace() (ou equivalent) qui scan la fonction de gauche a droite :)
Et je pense que c'est un preg_replace
posté par Lwevin Myan
Ce n'est pas vraiment une contrainte php, mais plutot un element du cahier des charges de VBulletin :
La question qui va donc me tourmenter pour les prochaines nuits sera donc : quel est la contrainte qui empêche de faire plusieurs patterns matching simultanément ? (si ça se trouve, c'est une contrainte php, auquel cas je vais chercher longtemps...)
L'administrateiur doit etre capable de rajouter n'importe quel smiley, avec n'importe quel code, sans mettre les mains dans le script, mais seulement grace à une table de smiley (en tout cas, pour phpBB c'est comme ça).
Et comme il est impossible de faire un masque sans connaitre à l'avance les codes des smileys, il faut passer par une bête boucle...
Par Lwevin Myan le 5/10/2002 Ã 1:34:47 (#2284003)
Provient du message de Eldarendil
Ce n'est pas vraiment une contrainte php, mais plutot un element du cahier des charges de VBulletin :
L'administrateiur doit etre capable de rajouter n'importe quel smiley, avec n'importe quel code, sans mettre les mains dans le script, mais seulement grace à une table de smiley (en tout cas, pour phpBB c'est comme ça).
Et comme il est impossible de faire un masque sans connaitre à l'avance les codes des smileys, il faut passer par une bête boucle...
Je visualise un peu mieux (surtout si c'est une fonction preg_replace, qui donne moins de contrôle, a priori).
Par contre, je ne suis pas certain qu'il ne soit pas possible de construire un motif générique à partir de n motifs donnés... Ca doit être assez complexe, mais je suis à peu près certain que c'est faisable.
(Oui, je sais, je chipote, parce que les temps de traitement d'un message doivent être négligeables comparés aux temps d'accès à la base sql, mais bon... La fonction décrite plus haut me tente bien, je dois dire :))
Par Erkethan le 5/10/2002 Ã 1:53:49 (#2284064)
Ca me parait pas un mystere pour moi ... :doute:
Le script php parcours le corps de texte a la recherche de la premiere substring de sa liste (genre foreach() avec liste des smil), et effectue les remplacements. Arrivé à la fin de la string, la boucle recommence, et ce jusqu'au FALSE. Ensuite, la string ainsi modifiée est envoyée à la base de données. ;)
Non ?
Par Loekit le 6/10/2002 Ã 11:06:49 (#2288896)
Provient du message de Eldarendil
L'administrateiur doit etre capable de rajouter n'importe quel smiley, avec n'importe quel code, sans mettre les mains dans le script, mais seulement grace à une table de smiley (en tout cas, pour phpBB c'est comme ça).
Pour VB aussi c'est comme ça. J'étais allé faire un tour sur leur site, et on apprends pas mal de choses.
Je vous le conseille (pour l'url vous vous arrangez avec gooooooooooogle :)
JOL Archives 1.0.1
@ JOL / JeuxOnLine