J'ai une page web où les utilisateurs peuvent ajouter des smileys à leurs commentaires. Et je veux limiter le nombre de smileys par commentaire. Le "système" fonctionne mais j'ai quelques problèmes avec la partie regex. J'ai défini mes smileys dans un fichier de configuration comme suit :
$config['Smilies'] = Array (
// irrelevant stuff
'smilies' => Array (
':)' => 'smile.gif',
':(' => 'sad.gif',
// some more smilies
's:10' => 'worship.gif',
's:11' => 'zip.gif',
's:12' => 'heart.gif',
// some more smilies
's:1' => 'dry.gif',
's:2' => 'lol.gif',
's:3' => 'lollol.gif',
// some more smilies
)
);
Ensuite, lorsque je valide le commentaire (pour voir combien de smileys il y a), je passe en boucle par ce tableau et je fais correspondre le smiley au contenu du commentaire. La regex est utilisée comme suit :
foreach ( $this->config['smilies'] as $smilie => $smilieImage )
{
$matches = Array ();
Preg_Match_All ( '/' . Preg_Quote ( $smilie ) . '/i', $Content, $matches );
$numOfFoundSmilies += Count ( $matches[0] );
}
Le problème est le suivant que si je saisis "s:10" dans le commentaire, le code ci-dessus trouvera deux correspondances : "s:10" et "s:1". Mes connaissances en matière d'expressions régulières sont très faibles, et je n'arrive pas à résoudre ce problème.