Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 01-09-2009 11:51:25

jcerdan
Nouveau membre
Date d'inscription: 19-02-2009
Messages: 5
Site web

[Zend_Filter_StringToUpper][1.9.2] Problème avec les accents

Bonjour,

Je développe une application avec le ZF en UTF-8. Je n'ai pas de problèmes pour la visualisation ni pour le stockage des informations et des chaïnes de caractères dans la base de données.
Par contre, je modifie toutes les données entrées par les utilisateurs et je les mets en majuscules. Tout marche ok sauf pour les caractères accentués.

Ainsi, téléphone devient TéLéPHONE. ??

Mis à part la modification de la classe Zend_Filter_UpperCase, quelqu'un aurait-il une idée plus simple?

Salutations!

Dernière modification par jcerdan (01-09-2009 11:52:33)

Hors ligne

 

#2 01-09-2009 13:36:19

aelyta1
Membre
Lieu: Rouen
Date d'inscription: 29-06-2009
Messages: 98

Re: [Zend_Filter_StringToUpper][1.9.2] Problème avec les accents

Peut etre une fonction pour remplacer les accents par des caractères sans accents ?

Code:

$string =  str_replace( array("à","á","â","ã","ä","ç","è","é","ê","ë", "ì","í","î","ï", "ñ", "ò","ó","ô","õ","ö", "ù","ú","û","ü", "ý","ÿ", "À","Á","Â","Ã","Ä", "Ç", "È","É","Ê","Ë", "Ì","Í","Î","Ï", "Ñ", "Ò","Ó","Ô","Õ","Ö", "Ù","Ú","Û","Ü", "Ý"), array("a","a","a","a","a", "c", "e","e","e","e", "i","i","i","i", "n", "o","o","o","o","o", "u","u","u","u", "y","y", "A","A","A","A","A", "C", "E","E","E","E", "I","I","I","I", "N", "O","O","O","O","O", "U","U","U","U", "Y"), $string);

veni, vidi, riendi
Vive les lapins-antilopes !

Hors ligne

 

#3 01-09-2009 14:00:27

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: [Zend_Filter_StringToUpper][1.9.2] Problème avec les accents

j'avais testé avec l'utf-8 sans succès.

Voici un filtre que j'ai créer si tu veux (en reprenant un code existant)

Code:

class App_Filter_DellSpecialChars implements Zend_Filter_Interface {
    /**
     * @see Zend_Filter_Interface::filter()
     *
     * @param mixed $value
     * @return mixed
     */
    public function filter($value) {
        $value = str_replace("'", "", $value);
        $value = htmlentities($value, ENT_NOQUOTES, 'utf-8');
        $value = preg_replace('#\&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml)\;#', '\1', $value);
        $value = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $value); // pour les ligatures e.g. 'œ'
        $value = preg_replace('#\&[^;]+\;#', '', $value); // supprime les autres caractères
        $value = preg_replace('/\s/', '', $value); //supprime les espaces
        
        return $value;
    }

}

sa devrai t'aider je pense.

Sinon ya pas un second argument pour le filtre stringtoupper pour justement dire que c'est en utf-8

Dernière modification par throrin19 (01-09-2009 14:02:52)

Hors ligne

 

#4 01-09-2009 14:25:23

jcerdan
Nouveau membre
Date d'inscription: 19-02-2009
Messages: 5
Site web

Re: [Zend_Filter_StringToUpper][1.9.2] Problème avec les accents

Oui, effectivement il y a un second argument pour indiquer le charset. Je l'utilise déjà, mais cela ne tient pas en compte les caractères accentués et isl restent an minuscules.

Je pensais qu'il existait une fonction magique que je ne connaissais pas mais je vois que non, il faudra donc que je fasse comme vous me l'avez bien proposé aelyta1 et throrin19.

Merci.

Hors ligne

 

#5 01-09-2009 14:40:22

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: [Zend_Filter_StringToUpper][1.9.2] Problème avec les accents

j'avais essayé avec la fonction de base de php et j'avais réussi à agrandir les accents. Le bémol c'est que je ne retrouve pas le code concerné pour te le montrer

Hors ligne

 

#6 03-09-2009 10:50:05

jcerdan
Nouveau membre
Date d'inscription: 19-02-2009
Messages: 5
Site web

Re: [Zend_Filter_StringToUpper][1.9.2] Problème avec les accents

Voilà, j'ai résolu le problème de façon plutôt "élégante":

j'ai créé le filtre Zend_filter_UpperCase:

Code:

<?php
class Zend_Filter_UpperCase implements Zend_Filter_Interface
{
    public function filter($value)
    {
        $valueFiltered =  str_replace(
                        array("à","á","â","ä","ç","è","é","ê","ë","ì","í","î","ï","ñ","ò","ó","ô","ö","ù","ú","û","ü","ý","ÿ"),
                        array("À","Á","Â","Ä","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ñ","Ò","Ó","Ô","Ö","Ù","Ú","Û","Ü","Ý","Ÿ"),
                        $value);

        return $valueFiltered;
    }
}

Dans un fichier que j'ai placé dans /library/Zend/Filter/UpperCase.php

Maintenant, dans mes controlleurs je peux faire:

Code:

$this->f = new Zend_Filter();
$this->f->addFilter(new Zend_Filter_StripTags());
$this->f->addFilter(new Zend_Filter_UpperCase());
$this->f->addFilter(new Zend_Filter_StringToUpper("UTF-8"));

Et voilà!

Hors ligne

 

#7 03-09-2009 11:50:48

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: [Zend_Filter_StringToUpper][1.9.2] Problème avec les accents

j'avais essayé cette méthode sans succès, sa me mettais les caractères ?? propres à utf-8 quand il reconnait pas les caractères.

Hors ligne

 

#8 10-06-2011 10:07:30

DJPi
Membre
Date d'inscription: 12-04-2010
Messages: 12

Re: [Zend_Filter_StringToUpper][1.9.2] Problème avec les accents

@jcerdan, ta solution est parfaite !
Merci wink

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages