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 :

Détection et remplacement automatique de sous-chaînes [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 178
    Points : 93
    Points
    93
    Par défaut Détection et remplacement automatique de sous-chaînes
    Bonjour à tous,

    je bosse sur un projet de traduction, mais j'arrive à un point crucial et je manque cruellement d'idées.

    J'ai un ensemble de traductions pour plusieurs éléments, et un contenu source (éventuellement trèèès long) que je veux traduire dans une langue donnée. L'idée est de remplacer automatiquement des sous-chaînes par les traductions qui correspondent.

    Prenons un court exemple:
    ---
    Texte source
    Que j'aime à faire apprendre un nombre utile aux sages Immortel Archimède, artiste ingénieux

    Traductions disponibles
    pour l'élément 1:
    • fr: j'aime
    • en: I like

    pour l'élément 2:
    • fr: un nombre utile
    • en: a useful number

    pour l'élément 3:
    • fr: ingénieux
    • en: clever

    pour l'élément 4:
    • fr: artiste ingénieux
    • en: inventive artist


    Résultat attendu (echo translate($texte_source,"en"))

    Que I like à faire apprendre a useful number aux sages Immortel Archimède, inventive artist

    Comme vous le voyez dans l'exemple, ingénieux n'a pas été pas traduit par clever, mais par inventive, car les traductions les plus longues doivent avoir la priorité...
    ---

    Seulement, voilà, je ne sais pas trop quelle stratégie aborder. Comme je l'ai déjà dit auparavant, la chaîne à traiter peut être trèèèès longue (même si ça doit rester marginal), donc mon petit système doit être le plus performant possible.

    De plus, je me suis basé sur le cas "simple" où la langue du texte source est connu, mais l'idée est de pouvoir arriver au même résultat sans la connaître...


    Si vous avez une idée, une piste, je suis preneur !
    Merci d'avance!
    Rolf

    P.S. : j'ai d'abord pensé à poster ce problème dans Algo, mais je n'ai trouvé aucune catégorie appropriée... mon système de traduction doit être intégré dans un environnement PHP, mais il est tout à fait envisageable d'utiliser Perl (langage de traitement de chaînes par excellence), non ?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 467
    Points : 15 851
    Points
    15 851
    Par défaut
    pour ça utilise la fonction "strtr" qui fait exactement ce dont tu as besoin et sans expressions régulières
    regarde l'exemple 2 dans la documentation :
    http://php.net/strtr#function.strtr.examples

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 178
    Points : 93
    Points
    93
    Par défaut
    merci beaucoup, effectivement strtr semble approprié... j'ai souvent tendance à l'oublier...

    en revanche, j'ai trouvé un lien qui explique que dqns mon cas, str_replace semble plus efficace:

    http://www.cznp.com/blog/3/strtr-vs-...ed-and-dignity

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

Discussions similaires

  1. Remplacement d'une sous-chaîne
    Par Neuromancien2 dans le forum Débuter
    Réponses: 5
    Dernier message: 04/02/2010, 16h10
  2. Réponses: 10
    Dernier message: 14/07/2008, 21h40
  3. Remplacer sous-chaîne à partir d'une table
    Par stefposs dans le forum Access
    Réponses: 4
    Dernier message: 11/04/2008, 12h24
  4. Remplacement de sous-chaînes
    Par psych0o0 dans le forum C
    Réponses: 2
    Dernier message: 15/08/2007, 22h42
  5. Remplacer une sous chaîne par une autre
    Par Erakis dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 10/11/2006, 10h16

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