probleme preg_replace

VaN
Mammouth du PHP | 1107 Messages

26 juil. 2005, 14:45

<?php
function no_accent($str_accent) 
{
   $pattern = Array("/é/", "/è/", "/ê/", "/ç/", "/à/", "/â/", "/î/", "/ï/", "/ù/", "/ô/");
   // notez bien les / avant et après les caractères
   $rep_pat = Array("e", "e", "e", "c", "a", "a", "i", "i", "u", "o");
   $str_noacc = preg_replace($pattern, $rep_pat, $str_accent);
   return $str_noacc;
}
$accent = "Bé alors comment va ta mère ? Où vas tu ? àààhh !!";
echo $accent."<br>";
no_accent ($accent);
echo $str_noacc;
?>
me renvoie Undefined variable: str_noacc in c:\program files\easyphp1-7\www\extranet\back\ressources\accent.php on line 21

Ou est le problème ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

26 juil. 2005, 14:46

$str_noacc est une variable locale de ta fonction, non définie dans le reste du script

comme tu fais un return $str_noacc, il faut que tu rècupères ce retour de fonction dans une variable
$str_noacc = no_accent();
echo $str_noacc; 
Modifié en dernier par ouckileou le 26 juil. 2005, 14:47, modifié 1 fois.

Mammouth du PHP | 19672 Messages

26 juil. 2005, 14:47

remplace les deux dernière ligne par ceci:
$chaine = no_accent ($accent);
echo $chaine;
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 juil. 2005, 14:48

C'est pas parce que tu utilise $str_noacc dans ta fonction que tu peut l'utiliser dans le code.

Cette variable à une portée locale, c'est à dire que tu ne peut l'utiliser que dans la fonction. pour afficher cette variable, il faut que tu récupère le retour de ta fonction et que tu l'affiche
$retour = no_accent ($accent);
echo $retour;
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer