Scritp url rewrting incomplet

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

Foxus
WRInaute accro
WRInaute accro
 
Messages: 1404
Inscription: Dim Jan 09, 2005 21:21

Scritp url rewrting incomplet

Message le Sam Oct 15, 2005 0:50

bonjour

voila j'ai ce script que j'utilise depuis pas mal de temps (fait maison en partit) :

$var1 = $data['title']; //la variable title contien le texte a rewrité en url
$var1 = strtr($var1,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ@°",
"aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynnao");

$var1 = strtr($var1,"()[]~$%*!?,:/^¨{}|+-¢¥©˜£µ§.#","----------------------------");

$var1 = preg_replace("/¤/i", "euros", $var1);
$var1 = preg_replace("/'/i", "-", $var1);
$var1 = preg_replace("/"/i", "", $var1);
$var1 = preg_replace("/ /i", "-", $var1);
$var1 = ereg_replace("[-]{2,}", "-", $var1);
$var1 = strtolower($var1);

Voila mais magré tous ,certain caractéres comme le ' et ! notement (apostrophes et exlamation) son toujours présents dans le lien !!!

le reste c'est impec !!!

le plus dramatique est que sous spider-simulator.com il me CASSE le lien avec un & aux caracteres non convetionel de l'url (ceux cité ci dessus, j'imagine que google vois pareil) et supprime le reste de l'url après ce &..

merci pour toutes suggestions.


rottman
WRInaute accro
WRInaute accro
 
Messages: 2097
Inscription: Mar Jan 06, 2004 20:11

Message le Sam Oct 15, 2005 11:41

Salut,

Dans dotclear il y a un bon script qui transforme une chaine en url "propre" par contre c'est en javascript, tu peux facilement le transformer en PHP :

Code: Tout sélectionner
function str2url(str,encoding,ucfirst)
{
   str = str.toUpperCase();
   str = str.toLowerCase();
   
   str = str.replace(/[\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5]/g,'a');
   str = str.replace(/[\u00E7]/g,'c');
   str = str.replace(/[\u00E8\u00E9\u00EA\u00EB]/g,'e');
   str = str.replace(/[\u00EC\u00ED\u00EE\u00EF]/g,'i');
   str = str.replace(/[\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8]/g,'o');
   str = str.replace(/[\u00F9\u00FA\u00FB\u00FC]/g,'u');
   str = str.replace(/[\u00FD\u00FF]/g,'y');
   str = str.replace(/[\u00F1]/g,'n');
   str = str.replace(/[\u0153]/g,'oe');
   str = str.replace(/[\u00E6]/g,'ae');
   str = str.replace(/[\u00DF]/g,'ss');
   
   str = str.replace(/[^a-z0-9_\s\'\:\/\[\]-]/g,'');
   str = trim(str);
   str = str.replace(/[\s\'\:\/\[\]-]+/g,' ');
   str = str.replace(/[ ]/g,'-');
   
   if (ucfirst == 1) {
      c = str.charAt(0);
      str = c.toUpperCase()+str.slice(1);
   }
   
   return str;
}

Foxus
WRInaute accro
WRInaute accro
 
Messages: 1404
Inscription: Dim Jan 09, 2005 21:21

Message le Sam Oct 15, 2005 15:49

en javascript... oops

bon be je sais pas, sinon aucuen idée du probleme dans mon code a 1er vus ?? :(

dcz
WRInaute passionné
WRInaute passionné
 
Messages: 722
Inscription: Mer Mar 02, 2005 2:04

Message le Sam Oct 15, 2005 16:34

si non y'a celle là aussi qui est pas mal et très complète, mais tu aura peut être pas besoin de tout (genres les lignes consacré aux images avec les img ou le truc du most rescent topic block avec les <b>) :


Code: Tout sélectionner
function make_url_friendly($url)
{

   $url = trim($url);

   $url = strtolower($url);

   // Fix for most recent topics block
   // or else a b is shown in every url
   $find = array('<b>',
      '</b>');
   $url = str_replace ($find, '', $url);

   $url = preg_replace('/<(\/{0,1})img(.*?)(\/{0,1})\>/', 'image', $url);

   $find = array(' ',
      '&quot;',
      '&',
      '\r\n',
      '\n',
      '/',
      '\\',
      '+',
      '<',
      '>');
   $url = str_replace ($find, '-', $url);

   $find = array('é',
      'è',
      'ë',
      'ê',
      'É',
      'È',
      'Ë',
      'Ê');
   $url = str_replace ($find, 'e', $url);

   $find = array('í',
      'ì',
      'î',
      'ï',
      'Í',
      'Ì',
      'Î',
      'Ï');
   $url = str_replace ($find, 'i', $url);

   $find = array('ó',
      'ò',
      'ô',
      'Ó',
      'Ò',
      'Ô');
   $url = str_replace ($find, 'o', $url);

   $find = array('ö',
       'Ö');
   $url = str_replace ($find, 'oe', $url);

   $find = array('á',
      'à',
      'â',
      'Á',
      'À',
      'Â');
   $url = str_replace ($find, 'a', $url);

   $find = array('ä',
       'Ä');
   $url = str_replace ($find, 'ae', $url);

   $find = array('ú',
      'ù',
      'û',
      'Ú',
      'Ù',
      'Û');
   $url = str_replace ($find, 'u', $url);

   $find = array('ü',
       'Ü');
   $url = str_replace ($find, 'ue', $url);

   $find = array('ß');
   $url = str_replace ($find, 'ss', $url);

   $find = array('ç');
   $url = str_replace ($find, 'c', $url);

   $find = array('/[^a-z0-9\-<>]/',
      '/[\-]+/',
      '/<[^>]*>/');

   $repl = array('',
      '-',
      '');

   $url =  preg_replace ($find, $repl, $url);

   $url = str_replace ('--', '-', $url);

   return $url;

}


De plsu tu peut facilement ajouter des condition supplémentaires ...

++

Foxus
WRInaute accro
WRInaute accro
 
Messages: 1404
Inscription: Dim Jan 09, 2005 21:21

Message le Sam Oct 15, 2005 17:24

merci mais comment on fait un appel de fonction en php ?

de plus je ne vois pas de filtre pour les ! notement


rottman
WRInaute accro
WRInaute accro
 
Messages: 2097
Inscription: Mar Jan 06, 2004 20:11

Message le Sam Oct 15, 2005 23:20

Pour faire appelle à cette fonction il te suffira de mettre :

<?php
make_url_friendly("Ta chaine de caractère");
?>

dcz
WRInaute passionné
WRInaute passionné
 
Messages: 722
Inscription: Mer Mar 02, 2005 2:04

Message le Dim Oct 16, 2005 18:07

Foxus a écrit:merci mais comment on fait un appel de fonction en php ?

de plus je ne vois pas de filtre pour les ! notement


Tu le vois pas mais il le fait ;)

Teste, tu verras

++


Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités