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

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