Problème avec le str_replace et les URL

Fermé
leinou Messages postés 5 Date d'inscription jeudi 10 avril 2008 Statut Membre Dernière intervention 6 juin 2010 - 10 avril 2008 à 11:30
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 12 avril 2008 à 12:53
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 243 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 juin 2012 60
10 avril 2008 à 12:20
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 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
10 avril 2008 à 12:23
salut,

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

0
IdleMan Messages postés 243 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 juin 2012 60
11 avril 2008 à 19:48
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 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
12 avril 2008 à 12:53
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