Rechercher : dans
Par :

[PHP] str_replace qui remplace pas ??

Dernière réponse le 29 mar 2009 à 17:53:26 karine666, le 29 mar 2009 à 04:41:49 
 Signaler ce message aux modérateurs

Bonjour,

J'ai un ptit soucis avec str_replace sous php. Je ne comprends pas pourquoi ca marche pas... et vu l'heure, je suis trop flappi. Sans doute est ce bête et saurez vous rapidement fixer mon erreur.


Le but du code est de remplacer les caractères exotiques (é,è,ü...) par des equivalents sans accents.
Voici mon code (php) :
echo "1:".$found_designation."<br>";
$eee = array("é", "è", "ê");
$txt= str_replace( $eee , 'e' , $found_designation );
echo "2:".$txt."<br>";
$aaa = array("à", "á", "ä");
$txt = str_replace($aaa,"a",$txt);
echo "3:".$txt."<br>";
$uuu = array("ü", "ù");
$txt = str_replace($uuu,"u",$txt);
echo "4:".$txt."<br>";

Et ca me donne :
1:la sorcière romantique
2:la sorcière romantique
3:la sorcière romantique
4:la sorcière romantique

Bref, il se passe pas grand chose... help !

En esperant que je ne suis pas devenue folle...
Cordialement

Configuration: Windows XP
Firefox 3.0.8

Meilleures réponses pour « [PHP] str_replace qui remplace pas ?? » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
Supprimer les accents avec PHP VoirPour un tas de raisons, il est parfois utile de convertir un texte accentué en un texte sans accents. Voici une fonction permettant de transformer très simplement la quasi-totalité des accents en leur équivalent non-accentués : function...
Installation rapide de LAMP (Apache+MySql+php) sous Linux VoirLAMP = Linux+Apache+MySql+Php. C'est le serveur web par excellence. L'ensemble est facile à installer. Installation rapide sudo aptitude install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 Le mot de passe administrateur mySQL...
Télécharger PHP Edit VoirPHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de fonctionnalités permettant de développer plus efficacement : Coloration syntaxique Auto-complétion des fonctions Débuggeur...
Télécharger PHP FTP Synchronizer VoirLa mise à jour de site web est aussi complexe que sa conception. Alors il faut utiliser le bon outil avec les bon paramètres et une bonne connaissance de programmation pour mettre à jour un site. PHP FTP Synchronizer est une application vous...
PHP - Expressions régulières VoirQu'est-ce qu'une expression régulière? Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...

1

gryzzly, le 29 mar 2009 à 05:08:29

C'est parce que tu transmet un tableau $aaa = array() à str_replace, et non pas des chaines, ou alors, le deuxieme paramètre de str_replace devrait êtr eun tableau comprenant autant d'éléments répétés que d'éléments à remplacer
Trois solutions :

foreach($aaa as $a){
$txt = str_replace($a,"a",$txt); 
}
...

Ou
$txt = str_replace($aaa, array('a','a','a'), $txt); 
}
...

Ou, beaucoup plus simple :
$txt = strtr($txt, 'àáâãäåÂÄÃÀòóôõöÔÖÒÕøèéêëÊËÈçìíîïÎÏÌùúûüÛÜÙÿñ', 'aaaaaaAAAAooooooOOOOeeeeEEEciiiiIIIuuuuUUUyn');


EDIT : j'ai dit une connerie :
Si search est un tableau et que replace est une chaîne, alors la chaîne de remplacement sera utilisée pour chaque élément de search

Je relis ton code

Répondre à gryzzly

2

karine666, le 29 mar 2009 à 05:16:36

Merci pour ton aide,

J'ai effectivement un resultat, meme si c pas tout á fait ca ;

code php :
echo "1:".$found_designation."<br>";
$txt = strtr($found_designation, 'àáâãäåÂÄÃÀòóôõöÔÖÒÕøèéêëÊËÈçìíîïÎÏÌùúûüÛÜÙÿñ', 'aaaaaaAAAAooooooOOOOeeeeEEEciiiiIIIuuuuUUUyn');
echo "2:".$txt."<br>";

resultat :
1:la sorcière romantique
2:la sorciA�re romantique

.. ?

Répondre à karine666

3

gryzzly, le 29 mar 2009 à 05:18:54

Atta, j'vais copier ton code et le tester en local ... je parle dans le vide là. La fatigue sans doute, il est vraiment tard...

Répondre à gryzzly

4

karine666, le 29 mar 2009 à 05:19:57

Moi aussi... merci pour ton aide..
je file me coucher...
@+

Répondre à karine666

5

gryzzly, le 29 mar 2009 à 05:25:27

Bon, j'ai vérifié, mon code fonctionne correctement :

<?php
$found_designation = "sorcière rômantïque";
echo "1:".$found_designation."<br>";
$txt = strtr($found_designation, 'àáâãäåÂÄÃÀòóôõöÔÖÒÕøèéêëÊËÈçìíîïÎÏÌùúûüÛÜÙÿñ', 'aaaaaaAAAAooooooOOOOeeeeEEEciiiiIIIuuuuUUUyn');
echo "2:".$txt."<br>"; 
?>


Le problème vient juste de l'encodage des caractères et/ou du fichier et/ou de l'encodage de l'affichage navigateur(ansi / utf8)

Répondre à gryzzly

6

gryzzly, le 29 mar 2009 à 05:32:05

Exemple :

Fichier encodé ANSI, caractères aussi, affichage navigateur iso :
1:sorcière rômantïque
2:sorciere romantique

Fichier encodé ANSI, caractères aussi, affichage navigateur utf8 :
1:sorci�re r�mant�que
2:sorciere romantique

Fichier encodé UTF8, caractères ASCII, affichage navigateur UTF8 :
1:sorcière rômantïque
2:sorciyUre ryEmanty�que

---> il faut que tout soit encodé de la même façon :o)

Répondre à gryzzly

7

karine666, le 29 mar 2009 à 12:45:55

Hello,

ca devient tricky ! ma page est encodé en utf-8.
Ce que je ne pige pas est que je remplace les caractères exotiques par des caractères std.

echo "1:".$found_designation."<br>";
$txt = strtr($found_designation, 'àáâãäåÂÄÃÀòóôõöÔÖÒÕøèéêëÊËÈçìíîïÎÏÌùúûüÛÜÙÿñ', 'aaaaaaAAAAooooooOOOOeeeeEEEciiiiIIIuuuuUUUyn');
echo "2:".$txt."<br>";

donc $txt ne devrait pas avoir de probleme d'affichage, qqs soit le type de codage choisi, non ?

pourtant :
1:la sorcière romantique
2:la sorciA�re romantique

?

Répondre à karine666

8

 gryzzly, le 29 mar 2009 à 17:53:26

Je bloque pour l'utf8.
Sûr, ça fonctionne en ISO8859.1, mais là, je sèche. Il doit falloir utiliser une autre forme de désignation des caractères.

Répondre à gryzzly