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 :

utiliser une expression régulière pour modifier un texte


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut utiliser une expression régulière pour modifier un texte
    Bonjour,

    Pour faire suite au post http://www.developpez.net/forums/d99...longue-chaine/, je reviens pour la suite de mon application.

    J'ai un texte, plutôt long, avec à l'intérieur, des tags bien précis de la forme : [nomduchamp:typeduchamp:valeurduchamp]

    Dans l'autre poste un membre aguairit m'avait donné l'astuce pour transformer ces tags en vrai champ de formulaire. Par la suite, j'ai cherché un peu, car une fois que mon formulaire est validé, il faut que j'enregistre le même texte avec les mêmes tags. Du coup, j'ai fait l'opération inverse en ajoutant les nouvelles valeurs saisies.

    Par contre, j'ai un problème avec les champs de type select :
    [genre:select:Mr/Mme/Melle]

    En effet, lors de la première saisie ce champ devient [genre:select:Mr/Mme*/Melle] si c'est une Madame. Par contre lors de la modification du texte, mon code permettant de mettre '*' à côté de la valeur saisie ne fonctionne pas comme il se doit. Si je ne touche pas à ce champ là durant la saisie, une deuxième étoile apparait. Si je choisi Mr, une étoile se met à côté de Mr et l'autre étoile reste sur Mme.

    Voilà mon code permettant d'ajouter l'étoile :
    $matches[2] est égal à 'Mr/Mme*/Melle'
    $z est égal à la valeur qui a été saisi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ($matches[2] == "select") {
    		$z = preg_replace('/('.$z.')/i','$1*',$matches[3]);
    		$s = "[$matches[1]:$matches[2]:$z]";
    }
    Comment faire pour virer l'étoile et la mettre devant la bonne valeur (même si aucune modification n'a été apporté, il faudrait virer l'* et la remettre au bon endroit).

    Pour info, je ne connais pas à l'avance les noms des champs, ni leur nombre.

    J'espère que vous pourrez m'aider.

  2. #2
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Après relecture du code de la function get_HTML(), je me suis rendu compte qu'il faudrait remplacer la ligne :
    par celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $s='<select name="'.$attr.'" id="'.$attr.">\n";
    Ainsi, pour...
    [genre:select:Mr/Mme*/Melle]
    Nous aurions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="genre" id="genre">
    au lieu de
    Sans ça, comment as-tu reussi a obtenir l'élément <option> choisi de la liste <select> ?

  3. #3
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    Bonsoir

    En fait je n ai posté que le bout de code qui m intéressait.
    Je vais poster demain les fonctions complètes.

    J ai trouvé une soluce alternative à coups de explode,
    mais ce n est pas top top en terme d optimisation.

    À demain donc.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/07/2013, 12h52
  2. Réponses: 7
    Dernier message: 30/05/2012, 14h36
  3. Trouver une expression régulière pour les valeurs des noeuds XML
    Par Motin dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 05/10/2011, 17h51
  4. Réponses: 6
    Dernier message: 04/07/2011, 10h40
  5. [RegEx] Utiliser une expression régulière dans une requête
    Par Tobleron dans le forum Langage
    Réponses: 2
    Dernier message: 18/02/2007, 19h00

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