Page 1 sur 1

problème avec preg_replace

Posté : 28 juil. 2007, 02:27
par mook
Bonjour,

Je souhaiterais remplacer chaque lettre d'un mot par une image. J'ai essayé avec la fonction preg_replace de cette façon mais ça affiche n'importe quoi :

Code : Tout sélectionner

$mot = 'phpfrance'; $lettres = array("/a/","/b/","/c/"); // je fais pour toutes les lettres de l'alphabet $images_remplacement = array('<img src="a.jpg">','<img src="b.jpg">','<img src="c.jpg">'); // etc echo preg_replace($lettres,$images_remplacement,$mot);
J'aimerais que quelqu'un m'expliquer ou se situe mon erreur et me donne la solution.
Merci d'avance :)

Posté : 28 juil. 2007, 03:16
par Hubert Roksor
Le problème c'est que preg_replace() effectue les remplacements les uns après les autres, Tous les "a", puis tous les "b", puis tous les "c", et du coup remplacent le "c" de "src".

Il te faut une fonction qui effectue tous les remplacements en même temps, comme strtr().
// On crée la liste de caractères
$chars = 'abcdefghijklmnopqrstuvwxyz';

/**
* On met chaque caractère individuel dans un tableau avec
* comme valeur l'image de remplacement
*/
$tr = array();
foreach (str_split($chars, 1) as $c)
{
	$tr[$c] = '<img src="' . $c . '.jpg">';
}

$str = 'phpfrance';
echo strtr($str, $tr);

Posté : 28 juil. 2007, 12:35
par mook
Je vais essayer en tout cas merci

Le code marche parfaitement en local mais ne marche pas sur mon hébergeur (OVH) existe t il l'equivalent de la fonction str_split() pour PHP 4 ?