PHP : enlever les accents d’une chaîne de caractères

C’est une question récurrente sur les forums. Comment enlever les accents et les remplacer par leurs équivalences ?
Beaucoup utilise des fonctions de remplacement comme strtr, str_replace, preg_replace, etc. Ces fonctions ont toutefois leur inconvénient :

  • strtr : est incompatible avec UTF-8.
  • preg_replace : nécessite l’utilisation des expressions régulières.
  • et les trois fonctions demandent de définir une liste de correspondance.

Une extension permet de palier à ces inconvénients : iconv.
Continuer la lecture

Firefox 4 beta : mes cookies disparaissent

Bien que Firefox 4 soit toujours en version beta, il est toujours bon de tester en avance les prochaines versions des navigateurs. J’utilise Firefox 4 depuis sa beta 6, donc très récemment.

La beta 7 est sortie le 10 novembre 2010. Lors du passage à la version 7, il s’est avéré que les cookies n’étaient plus restitués au démarrage de Firefox pour une raison que j’ignore. Pourtant, la configuration était bonne : cookie activé, supprimé seulement à leur expiration, etc. Mais rien ni faisait, au redémarrage les cookies n’existaient plus.

J’ai donc résolu le problème en supprimant simplement le fichier « cookies.sqlite » présent dans le répertoire du profil de Firefox que vous utilisez.

D’après ce que j’ai pu lire, le problème ne serait pas lié à la beta 7 et peut donc survenir à des versions précédentes, ou peut-être les prochaines.

En savoir plus sur les flux RSS/Atom

Dans cet article, il ne sera pas question de programmation, mais j’essayerai d’expliquer pourquoi les flux d’information sont important à connaître. Pour les programmeurs, vous découvrirez peut-être pourquoi il peut être important de fournir des flux d’information sur vos futures sites web.

Introduction

Les flux RSS et Atom sont des flux d’information fournis par de plus en plus de site web (dont ce blog). Techniquement, un fichier XML est généré et peut être traité par n’importe quel programme (agrégateur de flux par exemple). La structure des fichiers XML est standardisée afin de rendre interopérable son contenu.

Les principaux sites fournissant des flux d’information sont les sites d’actualités (les journaux, les blogs, etc.) mais il est possible d’exploiter cette technologie pour d’autre usage.
Continuer la lecture

Fonction PHP du jour : levenshtein()

Je vais tenter d’écrire périodiquement un billet afin de traiter d’une fonction PHP qui me semble indispensable, ou encore qui me semble simplement utile à connaître.

Pour aujourd’hui, la fonction sera levenshtein().

Présentation

Du nom de son auteur, Vladimir Levenshtein, la distance Levenshtein permet, en gros, de trouver un nombre représentant la distance entre deux chaînes de caractères.

Pour cela, l’algorithme détermine un coût basé sur le nombre de substitution, d’ajout et de suppression de caractères afin de transformer le premier mot vers le second. Plus les deux mots présenteront des différences, plus le nombre sera élevé.

Pour plus d’informations, je vous redirige sur la page de Wikipédia, d’où je me suis inspiré. Continuer la lecture

Eclipse PDT : générer les Getter/Setter

Lorsqu’on applique le principe de l’encapsulation lors de la conception des classes, il peut devenir très long d’écrire tous les Getter/Setter (en français : Accesseur/ Mutateur) quand on a une dizaine, voir plus, d’attributs.

J’utilise Eclipse PDT comme IDE pour le développement PHP. J’ai donc farfouillé sur Internet afin de trouver un moyen de générer ces méthodes automatiquement. Mes recherches n’ont pas été très fructueuses dans un premier temps, jusqu’à ce que je tombe sur un site (1) où j’ai pu récupérer un template.

Les templates permettent de générer des morceaux de code à l’aide de mot clé directement dans l’éditeur. Par exemple, dans ma version d’éclipse, lorsque j’écris « class », ce code est généré :

class ${class_name} {
    function ${function_name}() {
        ${cursor};
    }
}

Les ${var} sont des variables de template. Vous remarquerez que ce template n’est pas à jour par rapport à PHP5, puisque le constructeur devrait être « __construct ».

Pour revenir au sujet de cet article, en modifiant légèrement le template récupéré, j’ai abouti à ceci :

/**
* @param ${type} ${dollar}${field}
* @return ${class_container}
*/
public function set${field_camelcase}(${dollar}${field})
{
    ${dollar}this->_${field} = ${dollar}${field};
    return ${dollar}this;
}

/**
* @return ${type}
*/
public function get${field_camelcase}()
{
    return ${dollar}this->_${field};
}

Pour l’enregistrer dans Eclipse : ouvrez Window > Preferences. Ensuite dans PHP > Editor > Template, créez un nouveau template. Donnez lui un nom (Name), qui sera à taper dans l’éditeur pour générer le code (ex: getset), et collez enfin le template dans « Pattern ». Vous pouvez maintenant utiliser ce template.

Au début de cet article, je recherchais à générer automatiquement tous les Getter/Setter. Hors ici, nous avons plutôt une génération semi-automatique puisque nous devons tout de même taper à la main le mot clé « getset ». Mais c’est déjà beaucoup plus rapide, un gain de temps de 60% facile je pense.

(1) désolé pour la source, mais je ne me souviens plus de l’adresse

Zend Framework : téléchargement, configuration, utilisation

Nous allons voir ici le téléchargement, l’installation et enfin la configuration de base de Zend Framework.

Téléchargement

À ce jour, la dernière version en date de cet article est la 1.10.8.

Pour la récupérer directement, vous pouvez ouvrir ce lien : téléchargement de la version 1.10.8. La dernière version du framework étant à cette adresse.

Le lien direct permet de télécharger la version minimale, ne contenant que le code du framework. Vous pouvez télécharger la version complète si vous souhaitez accéder à la documentation hors ligne ou encore voir le code source des tests unitaires. Continuer la lecture