Extraire texte entre balises HTML en PHP

Fermé
cocobello27 Messages postés 437 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 28 février 2017 - 28 févr. 2017 à 04:28
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 1 mars 2017 à 17:16
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 !
A voir également:

3 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
1 mars 2017 à 17:16
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
Nessdarth Messages postés 36 Date d'inscription vendredi 16 décembre 2016 Statut Membre Dernière intervention 28 février 2017 3
28 févr. 2017 à 10:25
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/
0
cocobello27 Messages postés 437 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 28 février 2017 233
28 févr. 2017 à 11:38
Elle ne semble pas fonctionner selon le site dont tu me parles ...
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié par Reivax962 le 28/02/2017 à 11:21
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
0