Problème avec le str_replace et les URL

leinou Messages postés 5 Statut Membre -  
Dalida Messages postés 7114 Statut Contributeur -
Bonjour,

J'utilise un str_replace pour enlever tout ce qui pourrait gêner dans l'URL avec ce code :

<?php

$requete = mysql_query("SELECT * FROM soin WHERE type_soin LIKE 'soin-localise'") or die(mysql_error());

while($donnees = mysql_fetch_array($requete)){

//récupère le nom
$text=$donnees['nom_soin'];

$accents = array("à", "â", "ç", "é", "è", "ê", "ë", "î", "ï", "ô", "û", "’");
$corrige = array("& agrave;", "& acirc;", "& ccedil;", "& eacute;", "& egrave;", "& ecirc;", "& euml;", "& icirc;", "& iuml;", "& ocirc;", "& ucirc;", "& rsquo;");
// les espaces dans les caractères spéciaux sont juste pour l'affichage sur ce forum

$newtext = str_replace($accents, $corrige, $text);

//URL rewriting
$accents2 = array("à", "â", "ç", "é", "è", "ê", "ë", "î", "ï", "ô", "û", "’");
$corrige2 = array("a", "a", "c", "e", "e", "e", "e", "i", "i", "o", "u", "");

$newnom = str_replace($accents2, $corrige2, $newtext);
?>
<li class="t3"><a href="?type=soin-localise&soin=<?php echo $newnom; ?>" class="blue2" ><?php echo $newtext; ?></a></li>
<?php
}


?>

Malheuresement, lorsque je le teste, il ne semble pas effectuer les remplacements ce qui donne des urls non valides.

Si quelqu'un voit un problème dans le code ou bien possède une autre solution, je suis preneur.

Cordialement.

3 réponses

IdleMan Messages postés 254 Statut Membre 60
 
Hé bien tu a créé des tableaux et tu essaye de les lire sans boucles , c'est certainement ça ton probleme .

Je te conseille de structurer ton code de la façon suivante :

$urlrewriting = array(
'é'=>'e',
'à'=>'a',
'ô'=>'o',
'ï'=>'i',
);

foreach($urlrewriting as $cle=>$valeur)
{
$newtext = str_replace($cle,$valeur, $newtext);
}


etc pour le reste
0
Dalida Messages postés 7114 Statut Contributeur 923
 
salut,

<?php
    $url = urlencode( $url );
?>

0
IdleMan Messages postés 254 Statut Membre 60
 
Dalida , tu propose effectivement la meilleure solution mais ai le bon sens de luis expliquer pourquoi.

La fonction urlencode est prevue pour remplacer automatiquement les accents et autres caracteres non specifiques aux url , il te suffira donc d'utiliser la fonction urlencode et urldecode pour convertir tes url sans risque
0
Dalida Messages postés 7114 Statut Contributeur 923
 
salut,

pas la peine, puisque tu es là !
-:oþ

mais tu as raison. habituellement, je mets le lien vers le manuel.
pas toujours le temps…
0