Extraire texte entre balises HTML en PHP

[Fermé]
Signaler
Messages postés
437
Date d'inscription
mardi 24 février 2009
Statut
Membre
Dernière intervention
28 février 2017
-
Messages postés
2559
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
16 septembre 2021
-
Bonjour,

Après de nombreux essais, je viens vers vous pour me venir en aide ^^
En effet, je voudrais récupérer le contenu présent entre trois balises HTML et l'envoyer dans une base de donnée.
Pour ce qui est de l'envoie tout va bien mais c'est avec ces histoire de Regex que j'ai du mal...
Voilà le probleme:
Je voudrais récupérer différentes choses dans le bout de code ci-dessous présent sur une page distante et les stocker dans des variables distinctes

<h1>John Doe</h1>
<p>Promotion: A.Sc. 2</p>
<p>Campus de Paris</p>

Et que le résultat soit le suivant:

$prenom='John'
$nom='Doe'
$promotion='A.Sc. 2'
$campus='Paris'

Si l'un de vous pourrait m'aider pour trouver le moyen d'obtenir ce résultat ...

Merci d'avance !

3 réponses

Messages postés
2559
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
16 septembre 2021
461
Salut,

Un exemple de solution alternative pour parser du html avec la classe DOMDocument :
$doc = new DOMDocument();
$doc->loadHTML('<h1>John Doe</h1>
<p>Promotion: A.Sc. 2</p>
<p>Campus de Paris</p> ');

$titleNode = $doc->getElementsByTagName('h1')->item(0);
var_dump($titleNode->nodeValue);

foreach ($doc->getElementsByTagName('p') as $paragraphNode) {
    var_dump($paragraphNode->nodeValue);
}


Bonne journée,
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
36
Date d'inscription
vendredi 16 décembre 2016
Statut
Membre
Dernière intervention
28 février 2017
4
Bonjour,

Tu peux essayer de voir ce que ça donne avec cette expression régulière:
$re = '/<h1>(.*)<\/h1>.*\n*<p>Promotion:(.*)<\/p>.*\n*<p>Campus(.*)<\/p>/m';


Par contre pour le Campus, l'expression va retourner 'de Paris', il y aura un petit traitement à faire pour retirer "de ".

Sinon voila un site pour tester les expressions:
https://regex101.com/
Messages postés
437
Date d'inscription
mardi 24 février 2009
Statut
Membre
Dernière intervention
28 février 2017
226
Elle ne semble pas fonctionner selon le site dont tu me parles ...
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
999
Bonjour,

Et si vraiment les expressions rationnelles, c'est pas ton truc, tu peux aussi jouer avec la fonction explode() pour saucissonner ton texte.
Mais ce n'est valable que si tu es à peu près sûr de la forme que prend ton texte (les lignes toujours dans le même ordre, etc.)

Xavier