URL-Rewriting et caractères spéciaux
8 messages
• Page 1 sur 1
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
- DomZ
- WRInaute discret

- Messages: 74
- Inscription: 11 Mar 2006
URL-Rewriting et caractères spéciaux
bonjour,
Actuellement j'ai déjà de l'url-rewriting mais pas terrible, en effet je génère des liens avec juste un id (exemple: 456456464.html)
je souhaiterais faire de l'url rewriting avec du texte, mais j'aimerais savoir comment alors ne prendre que les caractères pris en charge dans les urls.
enlever ("'\ /*&$#...), pour les accents je sais comment faire.
Merci de votre aide
Actuellement j'ai déjà de l'url-rewriting mais pas terrible, en effet je génère des liens avec juste un id (exemple: 456456464.html)
je souhaiterais faire de l'url rewriting avec du texte, mais j'aimerais savoir comment alors ne prendre que les caractères pris en charge dans les urls.
enlever ("'\ /*&$#...), pour les accents je sais comment faire.
Merci de votre aide
- DomZ
- WRInaute discret

- Messages: 74
- Inscription: 11 Mar 2006
chantra a écrit:un str_replace bien placé
str_replace(array('\'','"','#'....),array('','',''...),$mystr)
Certe mais encore faut-il savoir tous les caractères à remplacer ...
Je cherche plutot une méthode qui me garde tous les caractères ascii.
Merci quand meme.
-

SuperPJ - WRInaute impliqué

- Messages: 513
- Inscription: 15 Jan 2005
Salut Domz, voici pour toi une fonction qui pourrait faire l'affaire
- Code: Tout sélectionner
// Le texte à placer dans l'url
$texte = " l'url va être : \"rewritée\" ";
// L'id correspondant à l'enregistrement (afin que chaque url générée soit unique)
$id = 456456464;
// L'extension du fichier généré par l'url-rewriting
$extension = ".html";
// Le caractère utilisé pour séparer les mots dans l'url
$sep_mots = "-";
// Le nombre maximum de caractères dans l'url rewritée (id non-comprise)
$max_caracteres = 50;
/*___________________________________________________________________________________*/
// Appel de la fonction
echo rewriting( $texte, $id, $extension, $sep_mots, $max_caracteres );
// Résultat affiché
// l-url-va-etre-rewritee-456456464.html
/*___________________________________________________________________________________*/
// La fonction en question
function rewriting( $texte, $id, $extension, $sep_mots, $max_caracteres )
{
// Définition des caractères accentués
$car_speciaux = array( 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'È', 'É', 'Ê', 'Ë', 'è', 'é', 'ê', 'ë', 'Ì', 'Í', 'Î', 'Ï', 'ì', 'í', 'î', 'ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'Ù', 'Ú', 'Û', 'Ü', 'ù', 'ú', 'û', 'ü', 'ß', 'Ç', 'ç', 'Ð', 'ð', 'Ñ', 'ñ', 'Þ', 'þ', 'Ý' );
// ... et de leurs "équivalents" non-accentués
$car_normaux = array( 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'E', 'E', 'E', 'E', 'e', 'e', 'e', 'e', 'I', 'I', 'I', 'I', 'i', 'i', 'i', 'i', 'O', 'O', 'O', 'O', 'O', 'O', 'o', 'o', 'o', 'o', 'o', 'o', 'U', 'U', 'U', 'U', 'u', 'u', 'u', 'u', 'B', 'C', 'c', 'D', 'd', 'N', 'n', 'P', 'p', 'Y' );
// On commence par supprimer les accents
$texte = str_replace($car_speciaux, $car_normaux, $texte);
// On remplace les caractères non-alphanumériques par le séparateur $sep_mots
$texte = preg_replace( "/[^A-Za-z0-9]+/", $sep_mots, $texte );
// On supprime le séparateur s'il se trouve en début ou fin de chaîne
$texte = trim( $texte, $sep_mots );
// On limite la chaine à $max_caracteres caractères (ici 50 caractères)
$texte = substr( $texte, 0, $max_caracteres );
// On convertit le tout en minuscules
$texte = strtolower( $texte );
// On ajoute l'id à la fin pour avoir une url unique et on ajoute l'extension (ici .html)
$texte = "$texte$sep_mots$id$extension";
// On retourne le résultat
return ( $texte );
};
-

SuperPJ - WRInaute impliqué

- Messages: 513
- Inscription: 15 Jan 2005
hmmm ... je n'ai pas compris ta remarque sur les entités html
en quoi genent-elles dans la mesure ou tous les caractères non alphanumériques (donc les </> des tags html) sont supprimés dans la fonction ?
EDIT : ok j'ai compris tu voulais dire quand on a $texte qui vaut par exemple "<strong>test</strong>" ne pas se retrouver avec un fichier du genre "strong-test-strong-1.html"
c'est vrai que je n'avais pas pensé à cela car en général on utilise pour le rewriting un texte extrait d'une base, qui n'a pas encore été mis en forme html. Mais c'est vrai qu'il faut penser à ajouter une fonction pour enlever si nécessaire les tags html 
Bref mettre ça juste avant la suppression des caractères non-alphan
:
Bien vu jeune codeur talentueux
- Code: Tout sélectionner
// On remplace les caractères non-alphanumériques par le séparateur $sep_mots
$texte = preg_replace( "/[^A-Za-z0-9]+/", $sep_mots, $texte );
EDIT : ok j'ai compris tu voulais dire quand on a $texte qui vaut par exemple "<strong>test</strong>" ne pas se retrouver avec un fichier du genre "strong-test-strong-1.html"
Bref mettre ça juste avant la suppression des caractères non-alphan
- Code: Tout sélectionner
$texte = strip_tags( $texte );
Bien vu jeune codeur talentueux
- DomZ
- WRInaute discret

- Messages: 74
- Inscription: 11 Mar 2006
Merci bcp.
En effet les tags ne sont pas un probleme car à l'enregistrement je fais un strip_tags donc pas d'HTML sur ce champ en base.
Merci à vous.
Sinon j'avais fait ces fonctions :
En effet les tags ne sont pas un probleme car à l'enregistrement je fais un strip_tags donc pas d'HTML sur ce champ en base.
Merci à vous.
Sinon j'avais fait ces fonctions :
- Code: Tout sélectionner
function fctConvertToLink($str) {
$ret = fctRemoveAccents($str);
$ret = mb_strtolower($str);
$ret = str_replace(" ","-",$ret);
$ret = preg_replace("/-+/","-",$ret);
$ret = preg_replace("/[^a-z0-9'\"-]/i","",$ret);
$ret = trim($ret,"-");
return $ret;
}
function fctRemoveAccents($str = '') {
if(!(is_string($str))) return '';
$ret = strtr($str, "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ", "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy");
return $ret;
}
8 messages
• Page 1 sur 1
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 :
- URL rewriting et caracteres speciaux dans l'URL
- URL avec caractères spéciaux
- Caractères spéciaux / accents dans URL Wordpress
- Reformater 1 url:remplacer caractères spéciaux et espaces
- Accents et caractéres spéciaux dans URL et referencement ?
- [dé]codage de caractères spéciaux dans les URL
- [URL Rewrite] Problème avec les caractères spéciaux.
- Dans les URL, évitez les accents, caractères spéciaux et majuscules
- URL Rewriting et caractère spéciaux (façon Wikipedia)
- URL rewriting et caractères accentués
Consultez la description détaillée des produits ou services de Google suivants : Google goo.gl
- Calcul du nombre de backlinks
Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées. - Transformer des citations en liens
Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



