problème avec preg_replace

Petit nouveau ! | 7 Messages

28 juil. 2007, 02:27

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 :)

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

28 juil. 2007, 03:16

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);

Petit nouveau ! | 7 Messages

28 juil. 2007, 12:35

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 ?