Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1246 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Remplacer dans un texte des smileys par des tags <img ... /> ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Remplacer dans un texte des smileys par des tags <img ... /> ?

n°678666
max2048
Begin The Begin
Posté le 20-03-2004 à 12:21:01  profilanswer
 

Bonjour,
 
Je voudrais remplacer dans une chaine de caractères des smileys par des tags <img src=... border=0 />.
 
Je pense que le mieux est de faire deux tableaux comme ceci :


$codes_smileys = array(":)", ":D", ":(" );
$noms_smileys = array("sourit", "rit", "triste" );


 
... ensuite si je fais ça


$message = "Hop :) Voilà de beaux smileys :D"
$message = str_replace($codes_smileys, $noms_smileys, $message);


 
... les smileys sont bien remplacés par leur nom. Le problème est que je n'arrive pas à insérer  "<img src=" avant le nom et " border=0 />" après.
 
J'ai regardé du coté de ereg_replace et preg_replace, mais je n'y arrive toujours pas :/
 
Quelqu'un a une idée ?
Merci :)
 
PS : J'aimerais si possible éviter d'avoir à modifier le tableau $noms_smileys pour qu'il contienne les tags en entier.


---------------
Un site web qu'il est beau (v2.0)
mood
Publicité
Posté le 20-03-2004 à 12:21:01  profilanswer
 

n°678670
Hermes le ​Messager
Breton Quiétiste
Posté le 20-03-2004 à 12:26:50  profilanswer
 

Code :
  1. $noms_smileys = array("<img src=\"adresse.gif\" alt=\"smiley\" title=\"sourit\" />", ...);


Message édité par Hermes le Messager le 20-03-2004 à 12:27:04
n°678699
max2048
Begin The Begin
Posté le 20-03-2004 à 13:24:02  profilanswer
 

Merci mais c'est justement ce que je voudrais éviter de faire.
 
(Parce que si je veux modifier des attributs du tag IMG plus tard il faudra que je modifie toutes les entrées du tableau, et puis ça fait beaucoup de code redondant)


---------------
Un site web qu'il est beau (v2.0)
n°678701
Hermes le ​Messager
Breton Quiétiste
Posté le 20-03-2004 à 13:27:07  profilanswer
 

max2048 a écrit :

Merci mais c'est justement ce que je voudrais éviter de faire.
 
(Parce que si je veux modifier des attributs du tag IMG plus tard il faudra que je modifie toutes les entrées du tableau, et puis ça fait beaucoup de code redondant)


 
Il n'y a pas d'autres méthodes, et si plus tard tu veux modifier les entrées du tableaux, et bien il faut par exemple établir une liste sur un fichier ou encore utiliser une BDD et remplir ton tableau en fonction des entrées listées...

n°678703
max2048
Begin The Begin
Posté le 20-03-2004 à 13:28:23  profilanswer
 

Avec les expressions régulières c'est pas possible ?
(j'en sais absolument rien, je demande, c'est tout)


---------------
Un site web qu'il est beau (v2.0)
n°678711
Hermes le ​Messager
Breton Quiétiste
Posté le 20-03-2004 à 13:35:59  profilanswer
 

max2048 a écrit :

Avec les expressions régulières c'est pas possible ?
(j'en sais absolument rien, je demande, c'est tout)


 
Ben qu'est-ce que ça va changer d'utiliser une expreg ?  :heink:

n°678728
Vinx
Posté le 20-03-2004 à 14:07:26  profilanswer
 

max2048 a écrit :


... ensuite si je fais ça


$message = "Hop :) Voilà de beaux smileys :D"
$message = str_replace($codes_smileys, $noms_smileys, $message);




 
et pourquoi ne pas faire ça :
 
$message = str_replace($codes_smileys, '<img src="http://...'.$noms_smileys.'.gif" border="0">', $message);
 
tu ne modifies pas tout ton tableau ;)

n°678731
Hermes le ​Messager
Breton Quiétiste
Posté le 20-03-2004 à 14:14:26  profilanswer
 

Vinx a écrit :


 
et pourquoi ne pas faire ça :
 
$message = str_replace($codes_smileys, '<img src="http://...'.$noms_smileys.'.gif" border="0">', $message);
 
tu ne modifies pas tout ton tableau ;)


 
oui bien sûr, ça lui évitera d'avoir le <img src qui se répète, mais son problème n'est pas là. Il veut pouvoir mettre à jour le contenu du tableau :
 
Donc il faut que par exemple il fasse :
 
$table_smiley = array("$smiley1",$smiley2', etc...);
 
OU encore :  
 
Un bête boucle qui entoure un $smiley[$i] = $entrée_de_la_bdd;
 
etc...

n°678811
max2048
Begin The Begin
Posté le 20-03-2004 à 16:53:50  profilanswer
 

hermes le messager> Bon alors apparemment je me suis mal expliqué. Je veux juste éviter de répéter les "<img src=... alt=smiley border=0 />" dans mon tableau, rien de plus.
 
Vinx> C'est exactement ça que je veux faire, seulement ça ne marche pas. Quand j'utilise ton code :
 


$message = "Ceci est un message :) contenant des smileys :D";
$codes_smileys = array(":)", ":D", ":(" );
$noms_smileys = array("sourit", "rit", "triste" );
 
$message = str_replace($codes_smileys, '<img src="images/smileys/'.$noms_smileys.'.gif" border="0">', $message);


 
Ca me renvoie :
 

Ceci est un message <img src="images/smileys/Array.gif" border="0"> contenant des smileys <img src="images/smileys/Array.gif" border="0">


 
Au lieu de :
 

Ceci est un message <img src="images/smileys/sourit.gif" border="0"> contenant des smileys <img src="images/smileys/rit.gif" border="0">


 
 
Merci à vous deux en tout cas :)
(Tiens, un smiley qui fonctionne :o )


---------------
Un site web qu'il est beau (v2.0)
n°679496
jolly
Posté le 21-03-2004 à 22:34:44  profilanswer
 

au pire met dans 2 variables le debut et la fin,
et recreer toi un tableau avec une boucle foreach qui va contenir ce que tu veux pas mettre  
 
exemple :  

Code :
  1. $debut = ' <img src="images/smileys/';
  2. $fin = 'border="0">';
  3. et foreach ($noms_smileys, as $key=>$value)
  4. $nom_smiley[$key] = $debut.$value.$fin;


et ensuit tu fait ton replace  
 
comme ca si tu veux modifier t'as a le faire qu'ins fois  
 

mood
Publicité
Posté le 21-03-2004 à 22:34:44  profilanswer
 

n°679502
max2048
Begin The Begin
Posté le 21-03-2004 à 22:44:31  profilanswer
 

Oui mais ça revient à créer le "gros" tableau que je voulais éviter... :-/
 
M'enfin merci :)
 


---------------
Un site web qu'il est beau (v2.0)
n°2158318
valentinoe​val
Posté le 26-09-2012 à 18:44:25  profilanswer
 

Désolé de faire ce que l'on appel détérer le topic mais il  parle exactement de ce que je souhaite faire et de toute facon les forums sont là pour rendre service donc pourquoi ne pas me rendre service actuellement ;)
Revenons en au code voici le code que j'ai fais :
function smileys($post) //remplacement d'un code smiley par une image gif
 {
  $codes_smileys=array(
   ":)",
   "=)",
   ":D",
   "=D",
   ":(",
   "=(",
   "lol"
   );  
  $images_smileys=array(
   "happy.gif",
   "happy.gif",
   "enjoy.gif",
   "enjoy.gif",
   "sad.gif",
   "sad.gif",
   "lol.gif"
   );  
  return str_replace($codes_smileys, '<img src="template/images/smileys/'.$images_smileys.'" border="0">', $post);
 }
Et l'appel de ma fonction dans la page php :
$datas['content']=smileys(strip_tags(nl2br($datas['content']), '<br /><br>'));
Seulement lorsque j'affiche la page il y a bien des image mais corrompus qui s'afiche au lieu du code du smiley donc ca va mais en faisans identifier élément j'apperçois comme un membre plus haut que l'adresse de l'image est de ce type :
<img src="template/images/smileys/Array" border="0">
La fonction str_replace est capable de trouver un code du texte contenu dans la variable tableau mais ne serai pas capable en revanche de trouver l'équivalent en choisissant le bonne indice de la variable?

n°2158322
valentinoe​val
Posté le 26-09-2012 à 19:18:58  profilanswer
 

je crois avoir une réponse à ce problème, la concaténation de la variable uimage_smileys fais buguer la fonction et affiche Array au lieu de la valeur de l'indice concerné ;) donc obligation de mettre le code html img dans le tableau, pas le choix..

n°2158901
CyberDenix
Posté le 02-10-2012 à 23:23:34  profilanswer
 

Tu peux faire une regexp, ça sera plus lisible, mais je ne te le conseille pas car c'est plus lent.


---------------
Directeur Technique (CTO)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Remplacer dans un texte des smileys par des tags <img ... /> ?

 

Sujets relatifs
[PHP] tri de tableaux imbriquésCONNEXION PHP - ORACLE (base de données n'est pas sur serveur apache)
Portail en PHP ou autrePhp + html sur image !
[JavaScript] Comment bloquer un champ texteGeolocalisation en PHP
Comment modifier un fichier texte a partir d'un programme[ORACLE] Comment charger un fichier texte dans une table ?
[ PHP ] Système de "vu" / "non vu" sans enregistrement de membre 
Plus de sujets relatifs à : [PHP] Remplacer dans un texte des smileys par des tags <img ... /> ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR