Avoir des smilies ET garder une bonne mise en forme
Par Fab,
lundi 18 octobre 2004 à 19:37 :: Dotclear
:: #3
Lorsque j'ai posté mes deux premiers billets, je me suis vite rendu compte qu'il y avait un petit problème au niveau des smilies, à savoir que lorsque l'on souhaite mettre un smiley suivi d'un point, d'une virgule ou d'une parenthèse fermante (ce qui est souvent mon cas
), le smiley en question s'affichait sous forme textuelle et n'était pas remplacé par son homologue graphique...
L'explication, c'est que dotclear (ou l'une des classes utilisées, étant donné que je ne sais absolument pas si l'auteur a utilisé des classes extérieures ou a tout produit lui-même) recherche les versions textuelles des smilies, par exemple :), entouré d'un tag html, d'un caractère vide (espace, etc...), ou d'une fin de ligne/fichier. Etant donné qu'un point ou une virgule ou autre ne correspond pas à ce critère, le smiley n'est pas transformé en image
Ceci n'a rien d'embettant, mais pour moi qui ai beaucoup l'habitude de procéder ainsi, c'est assez gênant, et j'ai trouvé un moyen simple de remédier à mon problème
.
La modification est tres rapide puisqu'il n'y a qu'une seule ligne à compléter! Notez que j'ai fourni quelques caractères à titre d'exemple (point, virgule, parenthèse fermante), il est très facile d'allonger la liste selon vos besoins/habitudes, pour cela, je vous renvois vers syntaxe des masques PCRE sur le manuel PHP
Commençons donc par commenter la ligne original afin d'avoir un point de retour en cas de 'boulette', il s'agit de la ligne 55 du fichier /layout/class.xblog.php, et ajoutons à la suite les modifications souhaitées:
<?php
if (preg_match('|^([^\t]*)[\t]+(.*)$|',$v,$matches))
{
//$r = '/(\A|[\s]+|>)('.preg_quote($matches[1],'/').')([\s]+|[<]|\Z)/ms';
$r = '/(\A|[\s]+|>)('.preg_quote($matches[1],'/').')([\s]+|[<]|\Z|\.|,|\))/ms';
$s = '$1<img src="'.$this->smilies_url.$matches[2].'" '.
'alt="$2" class="smiley" />$3';
$this->arry_smilies[$r] = $s;
}
?>
Voilà, ce n'est pas plus compliqué, et ca fonctionne, la preuve
!!!





Commentaires
1. Le lundi 18 octobre 2004 à 20:20, par Rnò :: site
2. Le lundi 18 octobre 2004 à 21:08, par Fab :: site
3. Le lundi 18 octobre 2004 à 22:09, par Rnò :: site
4. Le lundi 18 octobre 2004 à 22:10, par Rnò :: site
5. Le lundi 18 octobre 2004 à 23:10, par Fab :: site
6. Le mardi 19 octobre 2004 à 07:44, par Rnò :: site
7. Le mardi 19 octobre 2004 à 08:24, par Fab :: site
8. Le jeudi 10 novembre 2005 à 15:13, par david
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.