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 :

fonction comme argument dans un str_replace


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Par défaut fonction comme argument dans un str_replace
    Hello, je cherche à réaliser un ptit script permettant, à partir d'une chaîne comme
    [a|5][bbc|10]azertyuiop[12|12]
    de retourner
    aaaaabbc....bbcazertuyiop12121212...12

    (vous l'avez compris, de remplacer tous les [chaîne|valeur] par valeur fois chaîne ).

    mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = preg_replace('#\[([^|]*)\|([0-9]*)\]#', str_repeat("$1", "$2"), $contenu);
    mais je récupère un "unexpected T_LNUMBER, expecting T_VARIABLE or '$'", alors que si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = preg_replace('#\[([^|]*)\|([0-9]*)\]#', "$1", $contenu);
    aucun bug. cependant, ça me retourne "abbcazertyuiop12" (et évidemment c'est pas ça que je veux :/ )

    Alors je ne comprend pas , on peut retourner "$1" et "$2" mais pas les utiliser comme arguments? (même résultat si j'écris la fonction str_replace moi même...)

    Si vous voyez ce qui cloche, merci d'avance....

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Par défaut
    Salut,

    Je crois voir ce qui cloche... En faite tu utilise $2 alors qu'elle n'existe pas ! Car tu mets que deux fois des parenthéses il faut commencer par $0 (qui sera tes premières paranthéses) et $1 tes deuxièmes paranthéses

    essaye donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = preg_replace('#\[([^|]*)\|([0-9]*)\]#', str_repeat("$0", "$1"), $contenu);
    Sache mon ami qu'en informatique on compte à partir de 0

    Edit Ajite : Non je me suis trompé $0 contient toute la regex donc c'est bien $1 et $2 je vais regarder après manger si je vois l'erreur

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Par défaut
    J'avais déjà testé cela, et pas d'erreur certes, mais juste "azertyuiop" comme résultat... je ne pense pas que le probleme vienne de là, car si à la place de str_repeat("$1", "$2") je mets simplement "$1" ou "$2", j'obtiens soit la chaine, soit le nombre d'occurrences...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Par défaut
    Sinon j'ai une idée. Comme $1 doit être des chiffres dans str_repeat retire les ""

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = preg_replace('#\[([^|]*)\|([0-9]*)\]#', str_repeat("$0", $1), $contenu);
    J'espère que c'est cela

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Par défaut
    J'ai bien essayé celà, en long en large et en travers (avec même des $$1, $"$1" et autres...) mais le problème est qu'une varialbe en php ne peut commencer par un chiffre. donc
    est déjà une erreur en soi! alors comme je dois manipuler ces variables issues de la regex, je vois pas comment les écrire autrement qu'avec des "quotes" ...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Par défaut
    Alors là déso je ne peux plus t'aider :/ je ne vois pas ^^' ! Si tu trouves une solution tiens moi au courrant !

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

Discussions similaires

  1. Mettre une variable comme argument dans une fonction
    Par djun1 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 04/09/2012, 10h44
  2. Réponses: 2
    Dernier message: 04/06/2009, 19h42
  3. [scipy] Séries mathématiques - fonction comme argument d'une autre
    Par sebsainte dans le forum Calcul scientifique
    Réponses: 6
    Dernier message: 20/09/2007, 00h59
  4. [PHP-JS] Variable PHP comme argument dans l'appel d'une fonction Javascript
    Par The Molo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/04/2007, 09h00
  5. Passer une fonction comme argument à une fonction
    Par Cocotier974 dans le forum Général Python
    Réponses: 4
    Dernier message: 29/06/2004, 13h41

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