Web Developpement

Forum de discussions pour les webmasters et les web developpeurs. (PHP, SQL, XHTML, JavaScript, Référencement, Positionnement,...)

Vous n'êtes pas identifié.

#1 31-03-2008 18:25:58

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Soucis sur une fonction de ré ecriture d'url

Bonjour,

Voici le casse tête du jour!
Dans la tentative de rendre un des mes sites dynamique, je tente de le "CMSardisé" tongue
J'ai un petit soucis sur cette fonction: mes "é" sont remplacés par des "b".
Si j'écris les mots "créer un site" j'obtient "crb-er-un-site" .. yikes

Code:

<?php

//fonction de transformation de chaine de caractères
function reecritureUrl($lien)
{
   $accent="ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ";
   $noAccent="aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyyby";
   $reecriture=strtr(trim($lien),$accent,$noAccent);
   $url=preg_replace('/[^0-9a-z]/', ' ', strtolower($reecriture));
   $url=preg_replace('/ +/', '-', trim($url));
   return  $url;
}

include("data_bd.php");

mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir

correctement remplit les donn&eacute;es du fichier data_bd.php.');

$query = mysql_query("SELECT id, titre_de_la_page FROM PAGE_DU_SITE WHERE

categorie_de_la_page='".mysql_real_escape_string($idtransmit)."'");

$id_de_la_page="";
$titre_de_page="";

while($titrepage = mysql_fetch_array($query))
 {
   $id = $titrepage['id'];
   $id_de_la_page.="$id";

   $titre_de_la_page = $titrepage['titre_de_la_page'];
   $titre_de_page.="$titre_de_la_page";
   $lien=html_entity_decode($titre_de_la_page);


      echo '<a href="'.reecritureUrl($lien).'-'.$id.'.php">Version reecrite</a>';

 }

mysql_close();


?>

Je prend toutes suggestions sur le pourquoi du comment .
note:hébergement ovh, 1er offre ^^ Start G1 me semble t'il et si sa peut aider !
Merci

Hors ligne

 

Liens utiles

#2 31-03-2008 19:14:28

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Soucis sur une fonction de ré ecriture d'url

Tu peu utiliser cette fonction la:
http://www.zone-webmasters.net/code-php … d-url.html

Normalement elle fonctionne correctement.

c00lman a écrit:

Je prend toutes suggestions sur le pourquoi du comment .
note:hébergement ovh, 1er offre ^^ Start G1 me semble t'il et si sa peut aider !
Merci

Cela peu jouer sur la réécriture avec ton fichier .htaccess, mais pour le code PHP je ne pense pas, à moins que le moteur PHP soit configuré pour travailler en UTF-8, mais cela m'étonnerait.

Hors ligne

 

#3 31-03-2008 20:13:25

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Re: Soucis sur une fonction de ré ecriture d'url

Merci Crocxx,
Je viens de tenter avec ton code et le résultat est pour ainsi dire quasi identique mad . Mes "é" sont remplacés par des "un" soit pour "créer" j'obtiens "cruner" !
Je ne pige pas !!!!
J' ai viré mon htaccess et sa na rien changé, j'ai modifier mon champ de type TEXT pour le mettre en VARCHAR latin1_general_ci, sa ne change rien, idem en utf8.

Quelque soit la fonction d'écriture utilisé je suis ennuyé avec les "é".

Hors ligne

 

#4 31-03-2008 21:58:55

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Soucis sur une fonction de ré ecriture d'url

C'est typiquement une histoire d'utf-8 (encodé sur 2 octets pour les lettres accentuées).

Regarde si ton fichier est encodé en utf-8 (cela doit être le cas) et met le en latin.

Sinon si tu veut travailler en utf-8 voila la fonction que j'utilise personnellement:

Code:

function OptimiseUrl($chaine)
{    

    $chaine=strtolower($chaine);
    
    $accents = Array("/é/", "/è/", "/ê/","/ë/", "/ç/", "/à/", "/â/","/á/","/ä/","/ã/","/å/", "/î/", "/ï/", "/í/", "/ì/", "/ù/", "/ô/", "/ò/", "/ó/", "/ö/");
    $sans = Array("e", "e", "e", "e", "c", "a", "a","a", "a","a", "a", "i", "i", "i", "i", "u", "o", "o", "o", "o");
    
    $chaine = preg_replace($accents, $sans,$chaine);    
    
    $chaine = preg_replace('#[^a-z0-9_-]#','-',$chaine);
    while (strpos($chaine,'--') !== false) $chaine = str_replace('--','-',$chaine);
    
    return $chaine; 
}

wink

Hors ligne

 

#5 01-04-2008 00:17:54

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Re: Soucis sur une fonction de ré ecriture d'url

Bon c'est cool, sa fonctionne avec ton aide wink.
Pour reprendre les chose dans l'ordre:
1-Vérifier le Jeu de caractères utiliser pour MySQL ISO UTF-8 ..etc
2-Utiliser le bon Content-Type soit charset=utf-8 si mysql tourne sous utf-8
3-Coder avec un logiciel adéquate qui utilise le même jeux de caractères (notepad++).

Ceci dit, il me semble bien avoir déjà essayé en UTF-8 et sans succès .. de plus mon domaine de teste est un domaine sur lequel je possède un annuaire utilisant un Content-Type en charset=iso-8859-1 et fonctionnant très bien ainsi.
Du coup ma question est pourquoi UTF-8 obligatoire pour mon petit code perso alors que l'autre tourne normalement en iso-8859-1 ..?

Hors ligne

 

#6 01-04-2008 13:07:50

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Soucis sur une fonction de ré ecriture d'url

Si tes tables que tu utilise ainsi que ton fichier et ton Content-Type sont tous les trois en iso-8859-1 cela devrai fonctionner de la même manière.

Mais peu être que les données dans ses tables sont en utf-8 ce qui ta obligé à l'utiliser.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB & édité par Rudy Onfroy

Liens & partenaires