8 avril 2008
Il est souvent utile de supprimer les accents des caractères accentués dans une chaîne. Cette action est utilisée par exemple pour générer une URL propre ou bien un nom de fichier qui ne posera pas de problème.
En PHP, le développeur retrouve souvent la solution suivante :
$str = strtr($str, ‘ÁÀÂÄÃÅÇÉÈÊËÍÏÎÌÑÓÒÔÖÕÚÙÛÜÝ’, ‘AAAAAACEEEEEIIIINOOOOOUUUUY’);
$str = strtr($str, ‘áàâäãåçéèêëíìîïñóòôöõúùûüýÿ’, ‘aaaaaaceeeeiiiinooooouuuuyy’);
Ce bout de code fonctionne très bien en IS0-8859-1. Cependant, avec une chaîne en UTF8, des caractères étranges vont s’immiscer. Cela vient du fait que les caractères sont encodés sur 8 bits.
Après maintes essais avec iconv() et autres strtr(), je n’ai pas trouvé de solution à ce problème. Heureusement, Olivier Laviale a trouvé une astuce. Je ne suis pas convaincu que ce soit la méthode la plus performante, mais elle a le mérite de fonctionner :
$str = htmlentities($str, ENT_NOQUOTES, ‘utf-8′); $str = preg_replace(‘#\&([A-za-z])(?:uml|circ|tilde|acute|grave|cedil|ring)\;#’, ‘\1′, $str);
$str = preg_replace(‘#\&([A-za-z]{2})(?:lig)\;#’, ‘\1′, $str);
$str = preg_replace(‘#\&[^;]+\;#’, ”, $str);
Je vous laisser consulter le billet original d’Olivier sur le sujet si vous souhaitez avoir plus d’informations.
Ah ! Les joies de l’encodage… 
php utf8
Publié dans Développement | 1 commentaire »
22 septembre 2006
Je vous ai souvent parlé du modèle de conception MVC et de ses avantages.
Ajaxian vient de relater un article de PHPied sur la mise en application du modèle MVC avec Ajax.
Selon l’auteur, avec Ajax, la vue contient des pages HTML, des feuilles de style CSS et des scripts Javascript pour la mise à jour du HTML. Le controleur contient des scripts Javascripts pour les comportements et du code PHP pour aiguiller les requêtes. Et pour finir, le modèle contient la logique métier en PHP.
A partir de ce modèle, l’auteur a écrit une petite démonstration dont le code source est accessible. Il propose même un squelette de projet pour les nouveaux projets. La couche Ajax est implémentée avec YUI.
L’approche, même si elle reste simpliste, est réellement intéressante. Elle permet de se poser des questions sur l’organisation du code dans les applications qui utilisent Ajax.
ajax mvc php
Publié dans Conception | 2 commentaires »
7 septembre 2006
La société ez System propose depuis peu une suite de composants PHP très utile distribuée sous la nouvelle licence BSD : eZ components.
Ces composants sont très bien fait et permettent d’augmenter la productivité des développeurs. La liste contient plus de vingt composants des plus variés possibles : du moteur de template, à l’outil de manipulation d’image, en passant par le générateur de code PHP ou le moniteur système !
En version 1.1.1 actuellement, le carnet de route laisse présager de nouvelles fonctionnalités très intéressantes pour la fin de l’année.
Le générateur d’icône d’email, Email 2 icon 1.3.0, a été réécrit avec certain de ces composants comme :
- Mail : pour la génération et l’émission de mail.
- Template : pour le moteur de rendu à partir de template.
- Translation : pour l’internationnalisation de l’application.
J’ai été très décu par Template. L’écriture des templates est beaucoup moins simple qu’avec Smarty. Par contre, les composants Mail et Translation sont très simples à utiliser et très efficaces (même si perfectible pour le second).
J’aurais bien aimé utiliser UserInput mais sa dépendance avec l’extension PHP filter me pose des problème avec mon hébergeur[1].
Je suis actuellement en train de tester :
- Database : une API de communication avec les bases de données basée sur PDO.
- PersistentObject : un outil de persistance des objets basé sur le composant précédent.
J’aimerai par la suite tester :
- Dans un premier temps :
- EventLog : pour générer des traces applicatives.
- Feed : pour la gestion des flux RSS (pas encore disponible).
- Url : pour manipuler des URLs.
- Puis dans un second temps :
- Archive : pour manipuler des fichiers d’archives dans différents format de compression.
- Cache : pour la gestion d’un cache.
- ImageConvertion : pour manipuler des images.
Ces composants sont très utiles car ce sont le type de service que l’on retrouve dans la plupart des applications web[2].
Notes
[1] Impossible d’installer des extensions PEAR, et le programme autoconf non disponible.
[2] Notez que certain de ces composants sont dédiés à l’utilisation de PHP en mode console.
php
Publié dans Développement | 2 commentaires »