Bonsoir,
Je réalise une encyclopédie sur le seigneur des anneaux et pour tous ceux qui connaissent, beaucoup de nom contiennent des accents. Ce n'est pas un problème en soi mais j'ai du mal pour créer mes liens car j'utilise un script en php qui me permet d'éditer mes articles via mon site.
Donc j'ai utilisé dans mon script une regex pour créer mes liens :
Code :
- $article = preg_replace('!\[url\](.+)\[/url\]!isU', '<a href="$1.html"><b>$1</b></a>', $article);
|
Les liens marchent bien sous mozilla mais pas sous i.e qui ne lit pas les liens avec des accents (ex: Fëanor.html). J'ai donc décidé d'enlever les accents et les blancs avec une fonction :
Code :
- function enleve_accent($chaine){
- $accents = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ";
- $sans_accents = "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy";
- $chaine = strtr($chaine, $accents, $sans_accents);
- $chaine = preg_replace('/([^.a-z0-9]+)/i', '_', $chaine);
- return $chaine;
- }
- $article = preg_replace('!\[url\](.+)\[/url\]!isU', '<a href="enleve_fonction($1).html"><b>$1</b></a>', $article);
|
Le code ne marche pas mais j'ai essayé de trouver une solution et j'ai fait ça:
Code :
- $article = preg_replace('!\[url\](.+)\[/url\]!isU', '<a href="<?php echo enleve_accent('$1'); ?>.html"><b>$1</b></a>', $article);
|
puis après validation de mon script "d'édition", il écrit ce code dans mon article :
Code :
- <?php
- function enleve_accent($chaine){
- $accents = "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ";
- $sans_accents = "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy";
- $chaine = strtr($chaine, $accents, $sans_accents);
- $chaine = preg_replace('/([^.a-z0-9]+)/i', '_', $chaine);
- return $chaine;
- }
- ?>
- bla bla bla <a href="<?php echo enleve_accent('Fëanor'); ?>.html"><b>Fëarnor</b></a>
|
Cependant il ne m'écrit pas Fëanor mais Fëanor donc il ne me remplace pas mes accents et il m'écrit comme lien F_euml_anor.html.
Donc je voulais savoir si c'était possible de remplacer mes accents directement dans la regex ?
N'étant pas programmeur de formation je suis à court d'idée
Je vous remercie d'avance pour vos réponses
Message édité par Droopy4ever le 23-02-2006 à 21:14:58