| :: |
| Auteur |
Message |
freezbee PR0

Inscrit le: 10 Déc 2007 Messages: 69
|
Posté le: Lun Fév 18, 2008 4:36 pm Sujet du message: Rewriting probleme accent sur certains URL avec format_url |
|
|
Bonjour,
Bon voilà j'ai presque terminé le rewriting de l'agrégateur RSS dont j'en ai parlé ICI
Et je l'ai mis en ligne : http://www.unicornis.org/rss-actualites-news.html
Il me manque plus qu'à supprimer les liens vers les pages .php, les duplicates donc.
Sinon voici mon problème pour le moment :
J'ai certains accents qui passent mal à la fonction format_url de phpBBSEO
| Code: | 1. function format_url( $url, $type = 'topic' ) {
2. $url = strip_tags($url);
3. $url = htmlentities($url, ENT_COMPAT, $this->encoding);
4. $url = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i","\\1", $url );
5. $url = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$url);
6. $url = preg_replace( array("`[^a-z0-9]`i","`[-]+`" ) , "-", $url);
7. $url = ( $url == "" ) ? $type : strtolower(trim($url, '-'));
8. return $url;
9. } |
exemple :
- Le titre :
Une édition spéciale pour The Witcher
- l'URL :
http://www.unicornis.org/une-dition-sp-ciale-pour-the-witcher-n344.html
Et d'autres qui passent très bien, toujours sur la même page :
- Le titre :
Arecibo découvre le premier système triple d'astéroïdes
- l'URL :
http://www.unicornis.org/arecibo-decouvre-le-premier-systeme-triple-d-asteroides-n345.html
Voici le code qui crée ces liens :
| Code: | $news_url = $phpbb_seo->format_url(smart_utf8_decode($val["titre"])).'-n'.$val["ID"].'.html';
echo "class=a href='".$news_url;
} else {
// si c'est un news à description sélectionnée, stabilote
if(@$_GET["news"]==$val["ID"]) echo "class=stabilo ";
// lien vers le site
echo "target='_blank' href='".$val["lien"];
}
echo "'>".smart_utf8_decode($val["titre"])."</A>
<i>[".$val["titre2"]."]</i> |
Alors ça doit être une histoire d'encodage des caractères, suivant l'encodage des flux RSS. Mais bon tout s'affiche comme il faut dans le texte et les titres de page aussi. Il n'y a que les urls avec le titre injecté (passé sous format_url de phpBB SEO) qui bug...
Et pour les duplicates, comment je peux faire ? J'ai le Zero Duplicate d'installé sur le phpBB déjà comment appliquer le Zero Duplicate ici ?
Merci d'avance pour votre aide. |
Dernière édition par freezbee le Mar Fév 19, 2008 5:52 am; édité 2 fois |
|
| Revenir en haut de page |
|
 |
|
 |
freezbee PR0

Inscrit le: 10 Déc 2007 Messages: 69
|
Posté le: Mar Fév 19, 2008 5:51 am Sujet du message: Re: Rewriting probleme accent sur certains URL avec format_url |
|
|
Dans le deuxième exemple d'URL que j'ai mis les accents et tilde (é,è,',é,¨,) sont bien remplacés.
Seul certains, provenant de certains Flux RSS ne passe pas bien au format_url.
Et comme je le dis je pense à un problème d'encodage, suivant l'encodage de caractère de certains Flux.
En fait ce sont les Flux RSS de clubic qui passent mal (les titres injectés dans l'URL).
Le flux RSS de futura-science est encodé en UTF-8
celui de PC-Inpact en ISO-8859-1
Et celui de Clubic en ISO-8859-1 je crois ??? Puisque si j'enlève la fonction smart_utf8_decode ça passe bien...
Ce qui est bizarre c'est que les accents sont bien affichés sur la page. C'est seulement dans l'url que ça ne passe pas. |
|
|
| Revenir en haut de page |
|
 |
SeO Administrateur - Site Admin

Inscrit le: 15 Mar 2006 Messages: 3477
|
Posté le: Mar Fév 19, 2008 10:22 am Sujet du message: Re: Rewriting probleme accent sur certains URL avec format_url |
|
|
Donc tout d'abord, la méthode format_url peut tout à fait gérer l'utf-8 directement, pour les accents ayant un équivalent en entités html non numérique.
Les problèmes de char-set sont plutôt délicats à bien gérer dans le cas général.
Dans ton cas, tu pourrais dans un premier temps te contenter de faire le trie entre l'utf8 et L'iso-8859-1.
| Code: | // http://www.php.net/mb_detect_encoding
function is_utf8($string) {
return preg_match('%(?:
[\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
|\xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
|\xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
|\xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
|[\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
|\xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)+%xs', $string);
} |
Pourrait de servir à tester si l'utf8 est utilisé, pour ensuite configurer le char set de la classe phpbb_seo :
| Code: | | $phpbb_seo->encoding = "iso-8859-1"; |
ou :
| Code: | | $phpbb_seo->encoding = "utf-8"; |
Juste avant l'appel à format_url, en remettant :
| Code: | | $phpbb_seo->encoding = "iso-8859-1"; |
après pour ne pas perturbé le reste du processus (une fois que tu en as finit avec un flux utf8).
C'est certainement beaucoup plus rapide que smart_utf8_decode. |
_________________ phpBB SEO || SEO Forum || Forum Référencement
GYM Sitemap & RSS for phpBB3 has been released ! || GYM Sitemap & RSS for phpBB3 est disponible ! |
|
| Revenir en haut de page |
|
 |
freezbee PR0

Inscrit le: 10 Déc 2007 Messages: 69
|
Posté le: Mar Fév 19, 2008 11:59 am Sujet du message: Re: Rewriting probleme accent sur certains URL avec format_url |
|
|
Merci SeO.
Ca ne fonctionne toujours pas par contre.
Voilà ce que j'ai fait :
| Code: |
if (is_utf8($val["titre"])) {
$phpbb_seo->encoding = "utf-8";
} else {
$phpbb_seo->encoding = "iso-8859-1";
}
$news_url = $phpbb_seo->format_url($val["titre"]).'-n'.$val["ID"].'.html';
$phpbb_seo->encoding = "iso-8859-1";
|
Et le résultat est exactement le même :
Les Flux RSS de Clubic : les titres s'affichent bien (accent et tout), mais le titre injecté dans l'url se retrouve avec les accents remplacés par des tirets - |
|
|
| Revenir en haut de page |
|
 |
SeO Administrateur - Site Admin

Inscrit le: 15 Mar 2006 Messages: 3477
|
|
| Revenir en haut de page |
|
 |
freezbee PR0

Inscrit le: 10 Déc 2007 Messages: 69
|
Posté le: Mar Fév 19, 2008 12:12 pm Sujet du message: Re: Rewriting probleme accent sur certains URL avec format_url |
|
|
Oui j'ai tout en dernière version pour phpBB2 :
| rapport de vérification de version par XS a écrit: |
phpBB SEO Advanced mod rewrite MOD 0.2.4 Dernière version utilisée.
phpBB SEO Advanced Zero Duplicate MOD 0.2.2 Dernière version utilisée.
phpBB SEO Dynamic meta tags MOD 0.2.0 Dernière version utilisée.
META TAGS phpBB Annuaire MOD 0.2.0 Dernière version utilisée.
phpBB SEO mx Sitemaps MOD 0.2.2 Dernière version utilisée.
phpBB SEO Optimal Titles MOD 1.0.0 Dernière version utilisée.
SEO URL Simple Subforums MOD 0.2.2 Dernière version utilisée.
SEO URL phpBB Annuaire MOD 0.2.0 Dernière version utilisée.
phpBB SEO Simple Show Bots MOD 0.0.2 Dernière version utilisée.
|
|
|
|
| Revenir en haut de page |
|
 |
freezbee PR0

Inscrit le: 10 Déc 2007 Messages: 69
|
Posté le: Mar Fév 19, 2008 12:23 pm Sujet du message: Re: Rewriting probleme accent sur certains URL avec format_url |
|
|
Par contre, j'ai déjà mis le code format_url dans le premier post, mais par rapport à l'original de la version .0.2.4 il a était modifié comme ceci :
| Code: |
function format_url( $url, $type = 'topic' ) {
$url = strip_tags($url);
$url = htmlentities($url, ENT_COMPAT, $this->encoding);
$url = preg_replace( "`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i","\\1", $url );
$url = preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$url);
$url = preg_replace( array("`[^a-z0-9]`i","`[-]+`") , "-", $url);
$url = ( $url == "" ) ? $type : strtolower(trim($url, '-'));
return $url;
}
|
Suite à ce topic : [Réglé] Caractères spéciaux - exotiques |
|
|
| Revenir en haut de page |
|
 |
SeO Administrateur - Site Admin

Inscrit le: 15 Mar 2006 Messages: 3477
|
Posté le: Mar Fév 19, 2008 12:24 pm Sujet du message: Re: Rewriting probleme accent sur certains URL avec format_url |
|
|
Bizarre.
Le problème doit être que les é des flux qui ne marchent pas ne sont pas tout à fait bien formés, ou alors qu'ils sont sous la forme d'entités html numériques, tu as vérifié la source du flux qui pose problème ?
A tout hasards, essais avec utf8_decode() pour tout le monde, en ne touchant pas à $phpbb_seo->encoding, mais je doute. |
_________________ phpBB SEO || SEO Forum || Forum Référencement
GYM Sitemap & RSS for phpBB3 has been released ! || GYM Sitemap & RSS for phpBB3 est disponible ! |
|
| Revenir en haut de page |
|
 |
freezbee PR0

Inscrit le: 10 Déc 2007 Messages: 69
|
Posté le: Mar Fév 19, 2008 12:29 pm Sujet du message: Re: Rewriting probleme accent sur certains URL avec format_url |
|
|
| SeO a écrit: |
A tout hasards, essais avec utf8_decode() pour tout le monde, en ne touchant pas à $phpbb_seo->encoding, mais je doute. |
Oui j'ai déjà essayé, mais ce n'est pas mieux, pire même, que la fonction smart_utf8_decode que voici :
| Code: | // utf8_decode déconne parfois :s
function smart_utf8_decode($in_str) {
// Replace ? with a unique string
$new_str = str_replace("?", "q0u0e0s0t0i0o0n", $in_str);
// Try the utf8_decode
$new_str=utf8_decode($new_str);
// if it contains ? marks
if (strpos($new_str,"?") !== false) {
// Something went wrong, set new_str to the original string.
$new_str=$in_str;
} else {
// If not then all is well, put the ?-marks back where is belongs
$new_str = str_replace("q0u0e0s0t0i0o0n", "?", $new_str);
}
$new_str = str_replace("'","'",$new_str); // RC t'es chiant :)
return $new_str;
} |
|
|
|
| Revenir en haut de page |
|
 |
freezbee PR0

Inscrit le: 10 Déc 2007 Messages: 69
|
Posté le: Mar Fév 19, 2008 12:59 pm Sujet du message: Re: Rewriting probleme accent sur certains URL avec format_url |
|
|
Je viens d'essayer une autre fonction :
| Code: |
function encodeToIso($string) {
return mb_convert_encoding($string, "ISO-8859-1", mb_detect_encoding($string, "UTF-8, ISO-8859-1, ISO-8859-15", true));
}
|
| Code: | $titre_url= encodeToIso($val["titre"]);
$news_url = $phpbb_seo->format_url($titre_url).'-n'.$val["ID"].'.html';
|
Et c'est toujours la même chose.
Les Flux RSS de Clubic : les titres s'affichent bien (accents et tout), mais le titre injecté dans l'url se retrouve avec les accents remplacés par des tirets -
Voici le flux en question : http://www.clubic.com/xml/news.xml |
|
|
| Revenir en haut de page |
|
 |
freezbee PR0

Inscrit le: 10 Déc 2007 Messages: 69
|
Posté le: Mar Fév 19, 2008 1:26 pm Sujet du message: Re: Rewriting probleme accent sur certains URL avec format_url |
|
|
| SeO a écrit: | | ou alors qu'ils sont sous la forme d'entités html numériques, tu as vérifié la source du flux qui pose problème ? |
Voilà un exemple d'un titre de la source du Flux :
| Code: | | Microsoft : des outils de dé ;veloppement gratuits |
Edit : j'ai mis un espace entre 233 et ; car sinon ça convertit automatiquement en é.
C'est ça peut être la forme d'entités html numériques ?
Comment faire dans ce cas là ?
Merci. |
|
|
| Revenir en haut de page |
|
 |
freezbee PR0

Inscrit le: 10 Déc 2007 Messages: 69
|
Posté le: Mar Fév 19, 2008 2:08 pm Sujet du message: Re: Rewriting probleme accent sur certains URL avec format_url |
|
|
Bon bah voilà j'ai trouvé en cherchant des fonctions :
| Code: |
function numericentitieshtml($str){
return preg_replace('/&#(\d+);/e', 'chr(str_replace(";","",str_replace("&#","","$0")))', $str);
}
|
| Code: |
$titre_url= smart_utf8_decode($val["titre"]);
$titre_url = numericentitieshtml($titre_url);
$news_url = $phpbb_seo->format_url($titre_url).'-n'.$val["ID"].'.html'; |
Ceci marche parfaitement : http://www.unicornis.org/rss-actualites-news.html
Merci. |
|
|
| Revenir en haut de page |
|
 |
freezbee PR0

Inscrit le: 10 Déc 2007 Messages: 69
|
Posté le: Mar Fév 19, 2008 2:12 pm Sujet du message: Re: Rewriting probleme accent sur certains URL avec format_url |
|
|
| Ah oui et maintenant comment puis-je appliquer le Zero Duplicate à tout ça ? |
|
|
| Revenir en haut de page |
|
 |
SeO Administrateur - Site Admin

Inscrit le: 15 Mar 2006 Messages: 3477
|
Posté le: Jeu Fév 21, 2008 9:59 am Sujet du message: Re: Rewriting probleme accent sur certains URL avec format_url |
|
|
Et bien, de la même façon que pour phpBB, tu compare l'uri avec l'url que tu es censé avoir, dans ton cas, il n'y a pas l'air d'y avoir de variable en plus, donc, il te suffit de 1) construire l'url complète et de la comparer avec l'uri complète (+ domaine pour être sûr).
Regardes comment c'est fait sur phpBB  |
_________________ phpBB SEO || SEO Forum || Forum Référencement
GYM Sitemap & RSS for phpBB3 has been released ! || GYM Sitemap & RSS for phpBB3 est disponible ! |
|
| Revenir en haut de page |
|
 |
freezbee PR0

Inscrit le: 10 Déc 2007 Messages: 69
|
Posté le: Jeu Fév 21, 2008 10:04 am Sujet du message: Re: Rewriting probleme accent sur certains URL avec format_url |
|
|
| SeO a écrit: | Et bien, de la même façon que pour phpBB, tu compare l'uri avec l'url que tu es censé avoir, dans ton cas, il n'y a pas l'air d'y avoir de variable en plus, donc, il te suffit de 1) construire l'url complète et de la comparer avec l'uri complète (+ domaine pour être sûr).
Regardes comment c'est fait sur phpBB  |
J'ai regardé les codes de Zero duplicate sous phpBB, ainsi que celui pour l'annuaire Genova (qui a l'air plus court et simple). Mais je n'ai rien compris.
Merci |
|
|
| Revenir en haut de page |
|
 |
|
|