Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/07/2006, 18h12   #1
Invité régulier
 
Inscription : juin 2003
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 39
Points : 7
Points : 7
Par défaut Prb avec preg_replace

Bonjour à tous,

j'utilise php4 et je voudrais traduire un fichier csv.

Code :
1
2
3
4
5
6
 
$chaine_traduite = preg_replace($tab_termefr, $tab_termelg,  $contenu_du_fichier);
//tel que $tab_termefr, est un tableau des termes en français à rechercher
//$tab_termelg est un tableau des termes dans la langue choisie correspondant 
//aux éléments du tableau  $tab_termefr
//$contenu_du_fichier est une chaine de caractère englobant la totalité du //fichier csv
Mon problème c'est que je voudrais que ma recherche soit insensible à la casse.
Avec str_replace, ça marche très bien quand je passe tt en majuscule mais voilà le souci avec cette méthode c'est que je récupère aussi une chaine en majuscule.
En bien sûr je ne peux pas utiliser str_ireplace parce que je ne suis pas en php5

En construisant mon tableau $tab_termefr j'ai mis chq élément dans "/" "/i" comme suit :
Code :
$tab_termefr[$i] = "/".$termefr."/i" ;
Mais ça ne marche pas! est ce que quelqu'un a une idée?

merci.
Tikate est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 18h27   #2
Membre expérimenté
 
Avatar de hansaplast
 
Inscription : septembre 2005
Messages : 925
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2005
Messages : 925
Points : 562
Points : 562
essaie avec
Code :
$tab_termefr[$i] = "/".$termefr."/Ll"
ca te met tut en minuscule...

bon, c'est ptet pas le top...
__________________
Vous un sur Grenoble? on est fait pour tout du moins si vous mon CV
hansaplast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2006, 18h32   #3
Invité régulier
 
Inscription : juin 2003
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 39
Points : 7
Points : 7
Merci pour ta réponse!

malheureusement ça ne marche pas, cette fois le script ne s'arrête pas mais la chaine est renvoyée telle qu'elle inchangée

Citation:
Envoyé par hansaplast
essaie avec
Code :
$tab_termefr[$i] = "/".$termefr."/Ll"
ca te met tut en minuscule...

bon, c'est ptet pas le top...
Tikate est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 09h53   #4
Invité régulier
 
Inscription : juin 2003
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 39
Points : 7
Points : 7
Par défaut toujours rien

Je n'ai toujours pas trouvé alors si quelqu'un veut bien m'aider ça serait pas de refus

J'ai testé ce petit bout de code et ça marche très bien :
Code :
1
2
3
4
5
6
7
8
9
10
 
$str_rem = "2 an   -  BATTERIE LI-ION 3.6V-900mAH";
 
$pattern = Array('/2 An/i', "/BATTERIE LI-ION 3.6V-900mAh/i");
 
$rep_pat = Array("2 year", "BATTERIE ALL LI-ION 3.6V-900mAh");
 
$str_rem = preg_replace($pattern, $rep_pat, $str_rem);
 
echo "str_rem : ".$str_rem ;
Je ne comprends pas ce qui cloche... Est ce que le fait que mes tableaux $tab_termefr et $tab_termelg fassent une taille de 1112 cause prob ? je ne vois pas...
Tikate est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2006, 11h44   #5
Invité régulier
 
Inscription : juin 2003
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 39
Points : 7
Points : 7
Par défaut suite de l'avanture

bon ben mon code ne bugge plus maintenant mais il ne fait pas exactement ce que je voudrais :

Pour ceux à qui ça profiterais et pis pour ceux qui voudrait ajouter leurs commentaires :

J'utilise deux fois dans mon script preg_replace parce que j'ai des tables de termes traduits différents, la 1ere fois :
Code :
1
2
 
$chaine_traduite = preg_replace($tab_termefr, $tab_termelg,  $contenu_du_fichier);
puis la seconde qui utilise le resultat de la 1ere :
Code :
1
2
 
$chaine_traduite = preg_replace($tab_termefr, $tab_termelg,  $chaine_traduite);
La première fois les éléments de $tab_termefr sont issus de :
Code :
1
2
3
 
$termefr = "\/".$tabtermes[0]."\/i";
//en sachant que .$tabtermes[0] est issu de while($tabtermes = mysql_fetch_row($result_termes_traduits) )
Il fallait donc mettre un \ parce que j'ai des termes qui comporte des / !! eh oui j'avais pas fait gaffe!

Mais ce qui est incroyable c'est que je n'arrive pas à utiliser la même syntaxe dans la 2eme partie, je suis obligé de faire :

Code :
$termefr = "@".$tabtermes[0]."@i";

Et figurez vous que c'est cette traduction (la 2eme) qui marche et pas la 1ere!! comprends rien! Je suis un tt petit peu verte

Donc voilà mon script marche "à moitié" des parties traduite sans être sensible à la casse et d'autres pas du tout!
Tikate est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2006, 14h56   #6
Invité régulier
 
Inscription : juin 2003
Messages : 39
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 39
Points : 7
Points : 7
Par défaut résolu

Un petit post pour dire que j'ai résolu mon prb.

J'ai pensé un moment que c'était une histoire de slash et anti slash parce que je me suis rendu compte que des $termefr comportaient des slash mais finalement pas du tt.
Ca marchait pas parce que certaine valeur de $termefr étaient VIDE. Du coup chercher "//i" ça lui plaisait pas des masses... donc voilà quand la valeur est vide je ne l'a met pas dans mon tableau puisqu'il n'y a rien à chercher et à remplacer

Si ça peut servir...

Tikate est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h56.


 
 
 
 
Partenaires

Hébergement Web