Remplacer dans un texte des smileys par des tags <img ... /> ? [PHP] - PHP - Programmation
Marsh Posté le 20-03-2004 à 12:26:50
Code :
|
Marsh Posté le 20-03-2004 à 13:24:02
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)
Marsh Posté le 20-03-2004 à 13:27:07
max2048 a écrit : Merci mais c'est justement ce que je voudrais éviter de faire. |
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...
Marsh Posté le 20-03-2004 à 13:28:23
Avec les expressions régulières c'est pas possible ?
(j'en sais absolument rien, je demande, c'est tout)
Marsh Posté le 20-03-2004 à 13:35:59
max2048 a écrit : Avec les expressions régulières c'est pas possible ? |
Ben qu'est-ce que ça va changer d'utiliser une expreg ?
Marsh Posté le 20-03-2004 à 14:07:26
max2048 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
Marsh Posté le 20-03-2004 à 14:14:26
Vinx a écrit : |
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...
Marsh Posté le 20-03-2004 à 16:53:50
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 :
|
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 )
Marsh Posté le 21-03-2004 à 22:34:44
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 :
|
et ensuit tu fait ton replace
comme ca si tu veux modifier t'as a le faire qu'ins fois
Marsh Posté le 21-03-2004 à 22:44:31
Oui mais ça revient à créer le "gros" tableau que je voulais éviter... :-/
M'enfin merci
Marsh Posté le 26-09-2012 à 18:44:25
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?
Marsh Posté le 26-09-2012 à 19:18:58
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..
Marsh Posté le 02-10-2012 à 23:23:34
Tu peux faire une regexp, ça sera plus lisible, mais je ne te le conseille pas car c'est plus lent.
Marsh Posté le 20-03-2004 à 12:21:01
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)