Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-05-2008 11:58:24

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

[Résolu] Ma Class My_Filter_Accent problème

Bonjour,
J'écris une class My_Filter_Accent qui doit m'enlever tous les accent d'un chaine.

Code:

<?php
require_once 'Zend/Filter/Interface.php'; 
class My_Filter_Accent implements Zend_Filter_Interface
{
    public function filter($value)
    {
        echo $value; //retourne Père
    $accents = 'è';
        $noaccents = 'e';

        echo str_replace('è', 'e', $value); // retourne Père
        echo str_replace('è', 'e', 'Père'); // retourne Pere
        exit;
    }
}

Le problème ce situe à cette ligne :
echo str_replace('è', 'e', $value); // retourne Père
Il ne me retourne pas Pere alors que la ligne suivante le retourne en écrivant directement.
Pourtant si je fais un echo $value il me retourne bien Père.
Ca fait 2 jours que je butte sur ca, d'ou peut venir le problème ?

Dernière modification par alien7 (28-05-2008 12:41:53)


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#2 23-05-2008 12:21:37

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: [Résolu] Ma Class My_Filter_Accent problème

Bonjour,


$value ne contiendrait pas Père, mais avec l'accent encodé ?

Par exemple : "P&eagrave;re" ?


Vérifie dans la source comment il l'a wink

Dernière modification par stf (23-05-2008 12:21:57)

Hors ligne

 

#3 23-05-2008 12:22:44

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [Résolu] Ma Class My_Filter_Accent problème

Ton code fonctionne bien chez moi. J'ai mis $value = 'Père' et je récupère bien 'Pere'.

Sinon tu as strtr qui remplace des caractères par un autre. J'ai trouvé ce code, peut-être que ça t'interesseras :

Code:

<?
/* Retire les accents de la chaine "$string" */

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

Dernière modification par whitespirit (23-05-2008 12:27:49)

Hors ligne

 

#4 23-05-2008 12:50:11

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: [Résolu] Ma Class My_Filter_Accent problème

Bah je ne pense pas que ce soit un problème d'encodage: je teste comme ca:

Code:

 $label = new My_Filter_Accent();
        echo $label->filter('Père');

Père n'est pas encodé.

Même problème avec strtr, il eme retorune Père, et encore là si je remplace $string par Père ca marche, j'ai bien Pere.
Ce n'est pas lié au framework puisque si je n'implemente pas Zend_Filter_Interface, j'ai le meme souci.

Je comprends pas, je suis sûr que c'est une erreur toute bête, mais je vois pas.
Pourtant c'est une classe toute bete.
Même en suivant ve tuto ca ne marche pas : http://www.ericmery.fr/blog/ecriture-du … ne-chaine/


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#5 23-05-2008 13:02:12

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [Résolu] Ma Class My_Filter_Accent problème

Code:

$str = strtr('Père',
     utf8_decode("ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç'" ),
         utf8_decode("AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc " ));

Juste pour tester

Dernière modification par whitespirit (23-05-2008 13:02:29)

Hors ligne

 

#6 23-05-2008 13:08:19

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: [Résolu] Ma Class My_Filter_Accent problème

Yes ca marche.
Là j'ai besoin d'explication svp smile

Pour info mon fichier est encodé en ISO-8859-1 et ma classe en utf-8, c'est de là alors non ?

En tous cas je vous remercie pour votre aide.

Dernière modification par alien7 (23-05-2008 13:09:18)


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

Hors ligne

 

#7 28-05-2008 12:41:32

alien7
Membre
Date d'inscription: 29-04-2007
Messages: 447

Re: [Résolu] Ma Class My_Filter_Accent problème

Bon je suis passé tout en utf-8 cette fois, grace au tuto de philippe :
http://www.kitpages.fr/php_tutorial_utf8.php

Et voilà un bout de code que j'ai pu trouver :

Code:

    public function filter($value)
    {        
        $str = htmlentities($value, 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); // pour les ligatures e.g. '&oelig;'
        $str = preg_replace('#\&[^;]+\;#', '', $str); // supprime les autres caractères
        
        return $str;
    }

Merci encore stf et whitespirit pour votre aide

Dernière modification par alien7 (28-05-2008 14:07:00)


ZF 2.3 - Twitter Bootstrap 3.2
Local: Ubuntu  -> Apache2 2.4 - MariaDB 10 - PHP 5.6

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