OVH Cloud OVH Cloud

preg_replace / strtolower

3 réponses
Avatar
LEMAIRE Mathieu
Voilà j'ai une fonction qui formatte une chaine de caractères. En
particulier j'aimerai que cela fasse :
[A]bcde -> <div style="background:url('maj/a.jpg')">&nbsp;</div>bcde
^ ^
Pour cela j'utilise cette fonction :
####
function v_format($chaine) {
$pattern = "/\[(.*?)\]/i";
$replacement = "<div
style=\"background:url('maj/".strtolower("$1").".png')\">
&nbsp;</div>";

return preg_replace($pattern, $replacement, $chaine);
}
####

Mais ca ne marche pas ca donne :
<div style="background:url('maj/A.jpg')">&nbsp;</div>bcde
le A n'est pas rendu minuscule... Je comprends pas trop :S

Quelqu'un peut m'aider SVP ?

--
Maz

3 réponses

Avatar
Will
Le 06/01/2005 10:54 AM (à peu de choses près), LEMAIRE Mathieu a intelligemment
dit...
function v_format($chaine) {
$pattern = "/[(.*?)]/i";
$replacement = "<div
style="background:url('maj/".strtolower("$1").".png')">
&nbsp;</div>";

return preg_replace($pattern, $replacement, $chaine);
}
Quelqu'un peut m'aider SVP ?


d'après http://fr.php.net/manual/fr/function.preg-replace.php à l'exemple 4, il
faut que tu utilises l'option e de preg replace, pour évaluer le code php contenu.

--
Will

Avatar
P'tit Marcel
LEMAIRE Mathieu wrote:

Voilà j'ai une fonction qui formatte une chaine de caractères. En
particulier j'aimerai que cela fasse :
[A]bcde -> <div style="background:url('maj/a.jpg')">&nbsp;</div>bcde

$pattern = "/[(.*?)]/i";
$replacement = "<div
style="background:url('maj/".strtolower("$1").".png')">
&nbsp;</div>";
return preg_replace($pattern, $replacement, $chaine);

Mais ca ne marche pas ca donne


Après réflexion la réponse se trouve tout bonnement dans le manuel (à
http://www.php.net/preg_replace). il faut et il suffit d'ajouter le
commutateur e après le masque pour que l'instruction strtolower soit
prise en compte. En revanche, le commutateur i me semble ici inutile.

Accessoirement, la chaîne de remplacement me semble à l'ouest pour ce
qui est des ' et ". Essaye plutôt :

"'<div
style="background:url('maj/'.strtolower('$1').'.png')">&nbsp;</div>"

(une seule chaîne représentant une expression php à évaluer).


eça
--
P'tit Marcel

Avatar
LEMAIRE Mathieu
merci !!!!

--
maz