problème de génération d'url à partir d'un texte
13 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
-

Fab le Fou - WRInaute accro

- Messages: 1511
- Inscription: Jeu Déc 02, 2004 15:20
problème de génération d'url à partir d'un texte
Salut,
De manière à générer automatiquement des url de page à partir d'un champ de saisie (par ex. le titre d'un texte), j'utilise une fonction php inspirée d'urlencode() mais prenant en compte un plus grand nombre de caractères (via des str_replace() en série).
Mon problème c'est qu'il semble y avoir un problème de reconnaissance des caractères spéciaux, suivant les utilisateurs.
Par exemple, si je saisie "le corbeau et le renard" ma fonction va bien remplacer les espaces pas des tirets et me donner "le-corbeau-et-le-renard" mais avec certains utilisateurs, je vais obtenir : "le%20corbeau%20et%20le%20renard", bref les espaces ne sont pas reconnus et donc pas remplacés.
Ceci est également valable pour d'autres caractères.
Je penche pour les cas de figure où le texte est copier / coller à partir d'une application du type MS Word, dans laquelle les caractères ont un codage spécial, mais je ne sais pas comment faire pour créer une fonction gérant tous les cas de figure...
Fab
De manière à générer automatiquement des url de page à partir d'un champ de saisie (par ex. le titre d'un texte), j'utilise une fonction php inspirée d'urlencode() mais prenant en compte un plus grand nombre de caractères (via des str_replace() en série).
Mon problème c'est qu'il semble y avoir un problème de reconnaissance des caractères spéciaux, suivant les utilisateurs.
Par exemple, si je saisie "le corbeau et le renard" ma fonction va bien remplacer les espaces pas des tirets et me donner "le-corbeau-et-le-renard" mais avec certains utilisateurs, je vais obtenir : "le%20corbeau%20et%20le%20renard", bref les espaces ne sont pas reconnus et donc pas remplacés.
Ceci est également valable pour d'autres caractères.
Je penche pour les cas de figure où le texte est copier / coller à partir d'une application du type MS Word, dans laquelle les caractères ont un codage spécial, mais je ne sais pas comment faire pour créer une fonction gérant tous les cas de figure...
Fab
-

Fab le Fou - WRInaute accro

- Messages: 1511
- Inscription: Jeu Déc 02, 2004 15:20
Ok voici la fonction que j'appelle à différents endroits :
Elle est toute simple et marche très bien quand c'est moi qui saisie, mais avec certaines personnes, ça ne passe pas...
Fab
- Code: Tout sélectionner
function mon_urlencode($url)
{
$url=strtolower(trim(stripslashes($url)));
//--caractères supprimés.
$url=str_replace("…","",$url);
$url=str_replace("«","",$url);
$url=str_replace("«","",$url);
$url=str_replace("»","",$url);
$url=str_replace("»","",$url);
$url=str_replace("!","",$url);
$url=str_replace("?","",$url);
$url=str_replace("\"","",$url);
$url=str_replace("/","",$url);
$url=str_replace(":","",$url);
$url=str_replace(")","",$url);
$url=str_replace("#","",$url);
$url=str_replace(".","",$url);
$url=str_replace(",","",$url);
$url=str_replace("%","",$url);
//--caractères remplacés.
$url=str_replace(" ","-",$url);
$url=str_replace("'","-",$url);
$url=str_replace("’","-",$url);
$url=str_replace("(","-",$url);
$url=str_replace("_","-",$url);
$url= str_replace("--", "-", $url);
$url= str_replace("&", "et", $url);
$url=str_replace("é","e",$url);
$url=str_replace("è","e",$url);
$url=str_replace("ê","e",$url);
$url=str_replace("ë","e",$url);
$url=str_replace("à","a",$url);
$url=str_replace("â","a",$url);
$url=str_replace("ä","a",$url);
$url=str_replace("ù","u",$url);
$url=str_replace("û","u",$url);
$url=str_replace("ü","u",$url);
$url=str_replace("ï","i",$url);
$url=str_replace("î","i",$url);
$url=str_replace("ô","o",$url);
$url=str_replace("ö","o",$url);
$url=str_replace("ç","c",$url);
return $url;
}
Elle est toute simple et marche très bien quand c'est moi qui saisie, mais avec certaines personnes, ça ne passe pas...
Fab
Re: problème de génération d'url à partir d'un texte
Fab le Fou a écrit:Je penche pour les cas de figure où le texte est copier / coller à partir d'une application du type MS Word, dans laquelle les caractères ont un codage spécial, mais je ne sais pas comment faire pour créer une fonction gérant tous les cas de figure...
En prenant le problème à l'inverse ?
N'accepter par exemple que abcd...z012...9 et remplacer tout le reste par un tiret.
Pourquoi tu n'utilise pas un code beaucoup moin long
- Code: Tout sélectionner
function suppaccents($mot){
$accents = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
$ssaccents = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn";
return(strtr($mot,$accents,$ssaccents));
}
-

Fab le Fou - WRInaute accro

- Messages: 1511
- Inscription: Jeu Déc 02, 2004 15:20
Re: problème de génération d'url à partir d'un texte
jerome347 a écrit:En prenant le problème à l'inverse ?
N'accepter par exemple que abcd...z012...9 et remplacer tout le reste par un tiret.
Excellente idée !
Je vais essayer d'écrire une fonction qui fait ça.
-

Fab le Fou - WRInaute accro

- Messages: 1511
- Inscription: Jeu Déc 02, 2004 15:20
Borower a écrit:Pourquoi tu n'utilise pas un code beaucoup moin long
C'est totalement subjectif, mais je trouve cela plus clair à lire.
D'autres penseront l'inverse...
-

Fab le Fou - WRInaute accro

- Messages: 1511
- Inscription: Jeu Déc 02, 2004 15:20
En fait, le nom de ma variable est mal choisi.
Il s'agit en fait d'un texte que je transmets à ma fonction et non d'une url.
Le texte en question provient d'un des champs de ma bd mysql.
Au final, la solution de jerome347 ne convient pas non plus, puisque je ne souhaite pas remplacer tous les caractères spéciaux par des tirets (par ex. "à" est remplacé par "a", cf la fonction).
Ce que je ne comprends pas c'est pourquoi ma fonction n'arrive pas toujours à reconnaître les caractères qui sont listés.
Mon histoire de MS Word est une supposition, mais c'est étrange puisque quand on recopie un texte dans un champ de formulaire et à fortiori quand il a été enregistré dans la base, le codage Word devrait disparaître, non ?
Il s'agit en fait d'un texte que je transmets à ma fonction et non d'une url.
Le texte en question provient d'un des champs de ma bd mysql.
Au final, la solution de jerome347 ne convient pas non plus, puisque je ne souhaite pas remplacer tous les caractères spéciaux par des tirets (par ex. "à" est remplacé par "a", cf la fonction).
Ce que je ne comprends pas c'est pourquoi ma fonction n'arrive pas toujours à reconnaître les caractères qui sont listés.
Mon histoire de MS Word est une supposition, mais c'est étrange puisque quand on recopie un texte dans un champ de formulaire et à fortiori quand il a été enregistré dans la base, le codage Word devrait disparaître, non ?
Dans la doc de strtr sur php.net :
To replace unicode characters with their ascii equivalents, use
$my_string = strtr($my_string, $unicode_array);
using this array:
$unicode_array = array(
"–" => "-",
"—" => "-",
"–" => "-",
"‘" => "'",
"’" => "'",
"’" => "'",
"‘" => "'",
"…" => "...",
"…" => "...",
"“" => "\"",
"“" => "\"",
"”" => "\"",
"”" => "\"",
);
It is important to note you need both the unicode contol character (”) AND its text equivalent (”). For instance, text copied and pasted into your html form from M$ Word will have the control character, whereas the same text viewed in a browser and copied into your html form using drag-and-drop will have the text equivalent.
A pox on Redmond for the way M$ Word is set to convert all these characters to unicode equivalents by default.
J'ai aussi trouvé cette fonction là:
function un_microsuck($text){
static $chars = array(
128 => '€',
130 => '‚',
131 => 'ƒ',
132 => '„',
133 => '…',
134 => '†',
135 => '‡',
136 => 'ˆ',
137 => '‰',
138 => 'Š',
139 => '‹',
140 => 'Œ',
142 => 'Ž',
145 => '‘',
146 => '’',
147 => '“',
148 => '”',
149 => '•',
150 => '–',
151 => '—',
152 => '˜',
153 => '™',
154 => 'š',
155 => '›',
156 => 'œ',
158 => 'ž',
159 => 'Ÿ');
$text = str_replace(array_map('chr', array_keys($chars)), $chars,
$text);
return $text;
}
function un_microsuck($text){
static $chars = array(
128 => '€',
130 => '‚',
131 => 'ƒ',
132 => '„',
133 => '…',
134 => '†',
135 => '‡',
136 => 'ˆ',
137 => '‰',
138 => 'Š',
139 => '‹',
140 => 'Œ',
142 => 'Ž',
145 => '‘',
146 => '’',
147 => '“',
148 => '”',
149 => '•',
150 => '–',
151 => '—',
152 => '˜',
153 => '™',
154 => 'š',
155 => '›',
156 => 'œ',
158 => 'ž',
159 => 'Ÿ');
$text = str_replace(array_map('chr', array_keys($chars)), $chars,
$text);
return $text;
}
-

Fab le Fou - WRInaute accro

- Messages: 1511
- Inscription: Jeu Déc 02, 2004 15:20
A mon avis la deuxième fonction devrait coller.
Je vais donc l'ajouter à mon code et voir ce que ça donnera lorsqu'un de mes auteurs ajoutera un texte (bah oui, comme j'utilise OpenOffice, moi je n'ai jamais de problèmes
...)
En tous cas merci, bonne trouvaille !
Je viendrai mettre à jour ce topic si je me rends compte qu'il est nécessaire d'ajouter certaines occurences à la fonction.
@+, Fab
Je vais donc l'ajouter à mon code et voir ce que ça donnera lorsqu'un de mes auteurs ajoutera un texte (bah oui, comme j'utilise OpenOffice, moi je n'ai jamais de problèmes
En tous cas merci, bonne trouvaille !
Je viendrai mettre à jour ce topic si je me rends compte qu'il est nécessaire d'ajouter certaines occurences à la fonction.
@+, Fab
-

Fab le Fou - WRInaute accro

- Messages: 1511
- Inscription: Jeu Déc 02, 2004 15:20
Je reviens sur ce problème car même avec la fonction précédente il reste des erreurs avec les espaces et c'est souvent eux qui me posent des problèmes en me générant des url non conformes...
En fait il faudrait ajouter à la fonction suivante la gestion des différents codages générant des espaces sur ms word, mais pas moyen de trouver l'info sur le web...
Si quelqu'un a une version de MS Office sur son PC, il me semble que tous les codes se trouvent dans l'aide de VBA (notamment d'Access).
En fait il faudrait ajouter à la fonction suivante la gestion des différents codages générant des espaces sur ms word, mais pas moyen de trouver l'info sur le web...
Si quelqu'un a une version de MS Office sur son PC, il me semble que tous les codes se trouvent dans l'aide de VBA (notamment d'Access).
13 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... 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 :
- CSV AdStats v4 : le logiciel pour analyser ses statistiques AdSense
- 5 fans de VTT chez Google lancent le blog Google Earthlings
- Google Answers ferme ses portes
- Créer des expressions à partir de mots-clés
- Rumeur : Google pourrait racheter Adscape Media
- ImiTiki lance les séminaires référencement
- Google Code Jam 2003
- Référencement d'un forum phpBB
- Google recrute Vinton Cerf, le père d'Internet
- Google acquiert YouTube pour 1,65 Md$
- Script php de génération de thumb à partir d'une URL
- Génération d'annonces à partir d'une liste de mots clés
- Problème de génération sitemap
- Problème de génération de vignette de site
- [PHP] Probleme temps generation
- un problème avec un outil online de génération de sitemap
- Problème pour bloquer les images à partir d'un autre site
- Pb de generation de graph
- Génération de liens sur Allposters
- génération automatique de liens internes
- Nouvelle génération de spam
- Génération d'un flux RSS ...
- Generation d'un Flux rss ?
- probelem de generation de GG sitemap
- Outil de génération de fautes
- Stratégies de mots-clés
Cet outil vous permet de créer à partir de quelques mots-clés une liste d'expressions constituées des mots pris dans tous les ordres possibles. Il sert aux analyses de positionnement et achats de mots-clés.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité





le forum