IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Prb avec preg_replace [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 39
    Points : 20
    Points
    20
    Par défaut Prb avec preg_replace
    Bonjour à tous,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab_termefr[$i] = "/".$termefr."/i" ;
    Mais ça ne marche pas! est ce que quelqu'un a une idée?

    merci.

  2. #2
    Membre éclairé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    948
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 948
    Points : 719
    Points
    719
    Par défaut
    essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab_termefr[$i] = "/".$termefr."/Ll"
    ca te met tut en minuscule...

    bon, c'est ptet pas le top...

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 39
    Points : 20
    Points
    20
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab_termefr[$i] = "/".$termefr."/Ll"
    ca te met tut en minuscule...

    bon, c'est ptet pas le top...

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 39
    Points : 20
    Points
    20
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 39
    Points : 20
    Points
    20
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $chaine_traduite = preg_replace($tab_termefr, $tab_termelg,  $contenu_du_fichier);
    puis la seconde qui utilise le resultat de la 1ere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $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!

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 39
    Points : 20
    Points
    20
    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...


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. prb avec une requete
    Par gregal dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/03/2005, 11h59
  2. prb avec un treeview et data
    Par mikyfpc dans le forum C++Builder
    Réponses: 7
    Dernier message: 14/12/2004, 22h59
  3. [Débutant] Jframe/JInternalFrame: prb avec JScrollPane
    Par flzox dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 12/12/2004, 00h08
  4. prb avec dbimage
    Par hrezzaz dans le forum Bases de données
    Réponses: 1
    Dernier message: 27/10/2004, 14h41
  5. [TOMCAT] prb avec le cache de certains users
    Par osmoze dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 07/06/2004, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo