Désaccentuer !

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Les Marseillais et les Parisiens enfin mis sur le même plan linguistique. Ben voilà, c’est pour remplacer les caractères accentués par des pas accentués.

Équipe et Equipe, ça n’a pas forcément la même signification : dans une url, un script ou juste parce que vous n’aimez pas les accents, vous avez le droit de les enlever.
Voici donc une fonction à placer dans mes_fonctions.php3 qui fait ça.

/////////////////////////////////////////////////////////////////////////
////////////////Pour enlever les accents d'un mot
//////VersionPc:
////////"ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛܯàáâãäåçèéêëìíîï©£òóôõöùúûü~ÿ"
/////VersionMac:
///////"¿¡¬?ƒ?«»… ÀÃÕŒœ""''÷Ÿ/€‹›‡·‚„‰ÂÁËÈÍÎÏÌÓÔ?ÚÛÙ?ˆ
/////Pour utiliser la version mac, deplacer le # la ligne au dessus
////////// Exemple : [(#TEXTE|enlever_accents)]
///////////////////////////////////////////////////////////////////////
function enlever_accents($texte){
if (!(is_string($texte)))

    return ("");

  $sortie = strtr($texte,
"ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛܯàâãäåçèéêëìíîï©£òóôõöùúûü~ÿ",
#"¿¡¬?ƒ?«»… ÀÃÕŒœ""''÷Ÿ/€‹›‡·‚„‰ÂÁËÈÍÎÏÌÓÔ?ÚÛÙ?ˆ
"AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy");
  return $sortie;
}
/////////////////////////////////////////////////////////

Si quelqu’un peut m’expliquer CLAIREMENT pourquoi les caractères accentués de MAC ne sont pas les même que sur PC (windows ET linux), je suis preneur :-)

Dernière modification de cette page le 21 octobre 2005

Discussion

5 discussions

  • 1

    C’est mieux ainsi !

    function enlever_accents($texte, $charset=’utf-8’)
    if (!(is_string($texte)))

    return (« ») ;
    $texte = htmlentities($texte, ENT_NOQUOTES, $charset) ;

    $texte = preg_replace(’#\&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml)~;#’, ’\1’, $texte) ;
    $texte = preg_replace(’#\&([A-za-z]2)(?:lig)~;#’, ’\1’, $texte) ; // pour les ligatures e.g. ’œ’
    $texte = preg_replace(’#\&[^ ;]+~;#’, ’’, $texte) ; // supprime les autres caractères

    return $texte ;

    • mais pourquoi vouloir faire si compliqué ?

      [(#VAL{bipéàçœñbip}|translitteration)]   affichera bien   bipeacoenbip

    Répondre à ce message

  • Super.

    Je l’ai utilisée dans le champ META pour « traduire » le #TITRE dans plusieurs versions d’écriture (avec ou sans accent) ce qui dope un peu plus les recherches.

    ex : sans cette contrib, #TITRE : « L’écollège »
    les recherches google ne trouvent pas le site par la recherche « ecollege »...

    Mais avec la contrib passée dans le champ META, on obtient :

    <meta name="description" content="[(#TITRE|textebrut|enlever_accents)]" />

    voir exemple : site du GRAPE

    Répondre à ce message

  • Salut,

    il semblerait qu’il y ait une petite erreur, il y a dans la fonction plus de a sans accent que de a avec accent, de ce fait le è se transforme en c !

    Mais sinon ca marche bien :)

    Répondre à ce message

  • 2
    Philippe Lelédy

    C’est le contraire qu’il faut se demander, comment se fait-il que des caractères soient codées de la même manière sur des plateformes différentes ?

    C’est le résultat d’efforts (trop tardifs) de normalisation. Les Français (par exemple l’Académie Française) ont été nuls dans ce domaine, c’est donc le foutoir intégral.

    Il y a trois grandes étapes de normalisation :

    -  ASCII (American Standard etc.) uniquement américain code à 7 bits numéros 0 à 127, il n’est pas en vigueur partout mais presque (IBM fait exception avec l’EBCDIC)

    -  Cork (en Irlande) ISO-8859-1 ou Latin-1 (devenu ISO-8859-15 avec l’Euro et œ) codes sur 8 bits, mais les logiciels ne sont pas encore tous à cette norme, quant à l’énorme stock de textes codés de façon non standard (par DOS ou MAC, ou IBM), qui se soucie de les convertir ?

    -  Unicode qu’on retient chez nous en utf-8. Unicode vise toutes les langues du monde ! utf-8 est un usage raisonnable d’Unicode qui consomme 1 seul octet pour les caractères ASCII (0 à 127) et 2 ou plus pour tous les autres.
    C’est UTF-8 qui est retenu comme standard universel, il faut absolument s’y mettre.

    -  En outre différents systèmes ont prévu des codages de transfert (exemples HTML, MIME)

    En attendant SPIP est inaccessible pour moi (MAC OSX Mozilla) et c’est absolument énorme, c’est sûrement le seul site au monde inaccessible à des Français utilisant des Mac, et c’est un produit français. Comment se fait-il que tous les sites du monde entier savent faire avec les problèmes d’accents et pas SPIP ? Je cherche.

    Ph. Lelédy

    • Qu’entends tu par là ? Je suis sur mac et je ne vois pas de quels problèmes tu parles là ?

    • Philippe Lelédy

      J’ai fait fausse route ; ayant eu les problèmes cités plus haut, et induit en erreur par une recherche Google qui m’a sorti un problème disparu depuis longtemps, j’ai cru que c’était une question Mac versus PC, ce qui effectivement eût été monstrueux et invraisemblable s’agissant de web moderne. Ensuite ayant hâte de tester sur un site parfaitement maîtrisé comme celui de SPIP, j’ai posté *avant* d’investiguer, mea culpa, mea maxima culpa.

      Pour me faire pardonner, je dis vive SPIP et l’UTF-8.

    Répondre à ce message

  • 2
    Philippe Lelédy

    Je vois à peu près le problème.

    Étant fortement orienté UFT-8, j’ai un annuaire LDAP qui ne connaît que l’UTF-8. Pour avoir la paix, c’est le codage par défaut d’Apache, mais ça ne suffit pas, c’est aussi celui de PHP.

    default_charset = « utf-8 »

    J’ai plusieurs serveurs virtuels mais il n’existe qu’un php.ini, d’où l’obligation d’être 100% utf-8.

    Rien ne marche actuellement parce que en saisie, c’est SPIP qui impose ISO-8859-1, mais en utilisation du site, Apache (ou PHP) prétend que c’est de l’UTF8.

    La bonne solution serait que SPIP sache parler plus fort que Apache et PHP en imposant le code ISO-8859-1 comme il sait le faire dans la partie administration.

    La très bonne solution serait d’offrir le choix d’UTF-8 à l’install.

    Comme palliatif, je peux exporter (en XML par phpmyadmin), convertir de ISO-8859-1 en UTF-8, puis importer.

    Y-a-t-il plus simple ?

    Ph.L.

    • Les anciennes versions était en ISO-8859-1 mais spip1.6 pour gérer le multilingue est passé en UTF-8 par défaut.

    • Philippe Lelédy

      Merci, tout va bien depuis que j’ai pu mis UTF-8 comme charset par défaut dans SPIP 1.6 à la place de iso-8859-1.

      Je m’étais égaré, parce ce que, pour une raison obscure, le charset n’était pas le même en mise à jour (iso-8859-1) et en utilisation (UTF-8).
      Maintenant c’est UTF-8 dans les deux cas.

      Merci et mille excuses ; peut-on retirer une partie de ce que j’ai dit, car sinon, la recherche sur Google peut en induire d’autres en erreurs, comme je l’ai été moi-même ?

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom