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 :

Preg_replace avec une requête entre les remplacements [RegEx]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Preg_replace avec une requête entre les remplacements
    Tout d'abord, bonjour à tous, je suis nouveau

    J'ai un problème (vous vous en doutez). Depuis plusieurs jours j'essaye de réaliser quelque chose en php, sans succès.

    Tout d'abord j'ai créé mon propre bbcode, ça donnait pour les images:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $code_original= array 
    ( 
    	"/\<image=\"(.+?)\" lien=\"(.+?)\" align=\"(.+?)\"\>/si"
    ); 
    $code_sortie= array 
    ( 
    	"<a href=$1><img src=../images/$2 border=\"0\" align=$3></a>"							        	
    ); 
    $code_resultat=preg_replace($code_original,$code_sortie,$solution_sous_titre);
    Là tout marche à la perfection, $1 est l'ID de l'image, $2 le lien et $3 l'alignement.

    Maintenant j'ai voulu améliorer mon code en plaçant une requête mysql entre les remplacements pour aller chercher une valeur grâce à l'ID et ainsi supprimer la nécessité de mettre le Lien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $code_original= array 
    ( 
    	"/\<image=\"(.+?)\" align=\"(.+?)\"\>/si"
    ); 
    $code_sortie= array 
    ( 
    ------------------>ici, une requete qui va chercher la valeur "lien" dans la BDD grâce à l'ID contenu en $1.
     
    	"<a href=$1><img src=../images/"ici la valeur de la requête précédente" border=\"0\" align=$3></a>"							        	
    ); 
    $code_resultat=preg_replace($code_original,$code_sortie,$solution_sous_titre);
    Je sais que l'on va me dire que c'est stupide de placer une requête à chaque fois (utilisation de ressources), mais ce n'est pas du tout dans le but de créer un forum ou des commentaires publics.

    Le problème est donc, comment arriver à aller chercher une valeur avec une requete grâce à une valeur contenu dans $1, et ensuite de réinjecter la valeur retournée par la requête dans le résultat finale.

    Tout d'abord est-ce possible ou je me casse la tête pour rien ?

    Merci d'avance pour votyre aide.

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je le ferais en trois étapes :
    1. preg_match ou preg_match_all
    2. parcours des résultats pour faire la requete sql
    3. preg_replace ou str_replace

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse mais j'ai une question. J'ai du mal à comprendre comment appréhender un script qui boucle pour gérer plusieurs occurences dans un texte, exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    blablablablabblablablabla <image="28" align="center"> blablablablablabla <image="36" align="left"> blablablablablabla

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par sox83
    J'ai du mal à comprendre comment appréhender un script qui boucle pour gérer plusieurs occurences dans un texte,
    Pour ma part, j'ai du mal à comprendre ta question

  5. #5
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Rofl, c'est ma faute je m'exprime mal, pas d eproblème.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    blablablablabblablablabla <image="28" align="center"> blablablablablabla <image="36" align="left"> blablablablablabla
    Je vais tenter d'être plus clair.

    1. Preg_match repère <image="28" align="center">.

    2. Ensuite je récupère le 28 dans la variable $matches

    3. je fais ma requête

    4. je fais un preg_replace

    Arrivé ici ça va, mais comment faire un script qui fasse ceci automatiquement pour tous les <image="" align=""> contenu dans le texte. Je suis nul je n'arrive pas à m'imaginer la démarche à suivre >_>

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    http://php.net/preg_match_all

  7. #7
    Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Ouki je vais essayer, merci bien.

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

Discussions similaires

  1. [XL-2013] Automatiser "tirer formule" avec une somme() entre les cellules
    Par Jabbabi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/04/2015, 12h01
  2. Problème avec une requête sur les dates
    Par diblasio dans le forum Requêtes
    Réponses: 11
    Dernier message: 09/08/2011, 16h00
  3. Réponses: 1
    Dernier message: 11/06/2009, 23h39
  4. Une espace entre les enregistrements avec Access
    Par crazyvirus dans le forum Coldfusion
    Réponses: 9
    Dernier message: 16/01/2009, 13h06
  5. [AJAX] Modifier les header (PHP) avec une requête XMLHttpRequest?
    Par Prosis dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 09/09/2008, 00h34

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