IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

parser pour smiley [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 48
    Points : 59
    Points
    59
    Par défaut parser pour smiley
    Bonjour

    Les informations comme le symbole à remplacer, le nom du fichier l'attribut ALT de l'image sont contenu dans une table mysql pour pouvoir ajouter on retirer dans le futur des smileys facilement.

    Seulement je n'arrive pas à écrire le code correct pour que ça fonctionne.

    J'ai essayé deux solutions mais aucune ne fonctionne:

    la première: dans le champs, symbole, j'ai mis uniquement les symbole et j'ai essayé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $req = mysql_query("SELECT * FROM smileys");
    	while ($donnees = mysql_fetch_array($req))
    	{
     
    		$texte=preg_replace('! ' . $donnees['symbole']. '!i', ' <img src="' . $donnees['nonfichier'] . '" alt="' . $donnees['alt'] . '" />', $texte);
    	}
    Pa bon du tout ça m'affiche un superbe message d'erreur.

    Du coup j'ai essayé une autre solutions: mettre le motif directement dans le champ symbole ce qui donne ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $req = mysql_query("SELECT * FROM smileys");
    while ($donnees = mysql_fetch_assoc($req))
    {
    $texte= preg_replace($donnees['symbole'],'<img src="1.gif" />',$texte);
    }
    Là j'ai plus de message d'erreur, mais pas de remplacement non plus.

    Voici par exemple un motif du champs symbole: '!:content:!isU'

    Sans passer par la BDD, en mettant directement : $texte = preg_replace('!:content:!i','<img src="2.gif" />',$texte); ça fonctionne, du coups cela vient peut être de ma requête qui est mal écrite et je ne suis peut être pas sur le bon forum. Si c'est le cas je m'en excuse.

  2. #2
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut
    Citation Envoyé par zave Voir le message
    Pa bon du tout ça m'affiche un superbe message d'erreur.
    Tellement superbe que tu oublies de le mentionner
    Linio

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Il est possible que ce soit lié au fait que votre smiley pouvant comportant des métacaractères qui ne devraient pas être interprétés soit à l'origine d'une erreur de syntaxe au niveau du motif. Si tel est cas vous devez les faire échapper (fonction preg_quote) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req = mysql_query("SELECT * FROM smileys");
    while ($donnees = mysql_fetch_array($req))
    {
        $texte=preg_replace('.' . preg_quote($donnees['symbole']) . '.i', ' <img src="' . $donnees['nonfichier'] . '" alt="' . $donnees['alt'] . '" />', $texte);
    }
    Cela dit l'utilisation d'une expression régulière ne semble pas nécessaire, la fonction str_replace suffirait sans doute.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 48
    Points : 59
    Points
    59
    Par défaut
    Pour le message d'erreur, tu as raison j'aurais pu l'indiquer et c'est d'ailleurs ce que j'ai voulu faire en exécutant le script, c'est à ce moment que j'ai trouvé la solution au problème, en fait ça ne venait n'y de l'expression régulière, n'y de la requête.

    C'était tout simplement un problème de variable mal écrite, j'ai pourtant regardé ce script en long en large et en travers, peut être le fait de l'avoir laissé de coté pendant quelques jours m'a permis de mieux me relire.

    Sinon de mémoire le message d'erreur avait rapport avec un problème d'allocation de mémoire.

    Citation Envoyé par Julp
    Il est possible que ce soit lié au fait que votre smiley pouvant comportant des métacaractères qui ne devraient pas être interprétés soit à l'origine d'une erreur de syntaxe au niveau du motif. Si tel est cas vous devez les faire échapper (fonction preg_quote) :
    J'ai eu aussi ce problème, j'avais donc réécris tous les symboles sous cette forme :non_du-symbole:, merci pour preg_quote je connaissais pas.

    Citation Envoyé par Julp
    Cela dit l'utilisation d'une expression régulière ne semble pas nécessaire, la fonction str_replace suffirait sans doute.
    C'est intéressant ta remarque, j'ai lu ce plusieurs autres forums que des personnes dire sur l'utilisation de str_replace, pour un parser de bbcode, que ça faisait pas propre, je suis d'accord pour la partie mise en page (gras, souligné etc...). Maintenant pour les smileys je pense que tu as raisons.

    Quoi qu'il en soir ça fonctionne, je suis désolé d'avoir posté un peu pour rien, même si j'ai appris quelques choses. Merci Linio et Julp pour vos interventions

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Une fonction qui utilise str_replace pour smiley
    Par sliverman dans le forum Langage
    Réponses: 3
    Dernier message: 11/10/2009, 20h09
  2. Réponses: 0
    Dernier message: 03/12/2008, 16h57
  3. Parser des smileys
    Par foohey dans le forum Ruby on Rails
    Réponses: 7
    Dernier message: 01/11/2007, 11h26
  4. [Bison] plusieurs parsers pour un meme programme
    Par gedeon555 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 23/02/2007, 21h20
  5. Utiliser un parser pour extraire des formules
    Par EpOnYmE187 dans le forum C++
    Réponses: 2
    Dernier message: 15/03/2005, 23h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo