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écomposer une chaîne html avec preg_replace


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 577
    Points : 803
    Points
    803
    Par défaut Décomposer une chaîne html avec preg_replace
    Bonjour à tous,
    J'ai une chaîne html avec la structure suivante: "<h3>Un titre</h3><p class='home'><img src='fichier' /></p><p>du texte</p>"
    Je veux décomposer cette chaîne en extrayant séparément:
    - le titre h3
    - l'image
    - le reste du texte (un ou plusieurs paragraphes)
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	$tmp = file_get_contents(PAGE_NAME);
    	$pattern = "#<h3>(.+)</h3>#Usi";
    	$_POST['contentTitle'] = preg_replace($pattern, '$1', $tmp);
    	$pattern = "#<p class='home'>(.+)</p>Usi#";
    	$img = preg_replace($pattern, '$1', $tmp));
    	var_dump($img);
    	$pattern = "#<p>(.+)</p>#si";
    	$_POST['content'] = preg_replace($pattern, '$1', $tmp);
    Avec le code qui précède, j'obtiens:
    - pour $_POST['contentTitle']: Un titre<p class... jusqu'à la fin
    - var_dump renvoie la totalité
    - pour $_POST['content']: "<h3>Un titre</h3><p class='home'><img src='fichier' /></p>du texte

    J'ai lu et relu et re-relu un cours sur les regex et je désespère de moi-même.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pourquoi preg_replace() ?

    Pourquoi pas preg_match() ou preg_match_all() ?

    Le manuel PHP est plein de fonctions utiles... encore faut-il les connaitre.


    N.B. Et que viens donc faire $_POST dans cette histoire ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur en électrotechnique retraité
    Inscrit en
    Décembre 2008
    Messages
    1 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur en électrotechnique retraité

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 577
    Points : 803
    Points
    803
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Pourquoi pas ... ou preg_match_all() ?
    C'est effectivement la fonction qu'il me faut.

    Citation Envoyé par jreaux62 Voir le message
    Le manuel PHP est plein de fonctions utiles... encore faut-il les connaitre.
    et penser à les chercher au bon endroit...

    Citation Envoyé par jreaux62 Voir le message
    N.B. Et que viens donc faire $_POST dans cette histoire ?
    Il s'agit de pré-remplir un formulaire d'édition rudimentaire.

    Il me reste un souci: J'ai repris l'exemple #2 de la doc preg_match_all() comme ceci:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	$tmp = file_get_contents(PAGE_NAME);
    	$tmp = str_ireplace('<br />', '', $tmp);
    	var_dump($tmp);
    	preg_match_all("/(<([\w]+)[^>]*>)(.*?)(<\/\\2>)/", $tmp, $matches, PREG_SET_ORDER);
    	var_dump($matches);
    Je ne comprends pas pourquoi avec ce code, $matches n'a que deux index et ne contient pas le dernier couple de balises p avec la structure de mon post de départ.

    EDIT: Une demande pour rien. J'ai trouvé. On dit que la nuit porte conseil. Il manquait l'option s comme ceci: "/(<([\w]+)[^>]*>)(.*?)(<\/\\2>)/s"

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/05/2017, 14h31
  2. VB6: Récupération des meta d'une page HTML avec HTMLDocument
    Par Matounet dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 22/09/2011, 07h55
  3. valider une page html avec Dom
    Par harold63 dans le forum Langage
    Réponses: 3
    Dernier message: 02/06/2006, 08h34
  4. Réponses: 1
    Dernier message: 11/05/2006, 19h06
  5. Réponses: 7
    Dernier message: 14/09/2005, 10h50

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