Extraire texte entre balises HTML en PHP

cocobello27 Messages postés 556 Statut Membre -  
Pitet Messages postés 2845 Statut Membre -
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 2845 Statut Membre 527
 
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 40 Statut Membre 3
 
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 556 Statut Membre 233
 
Elle ne semble pas fonctionner selon le site dont tu me parles ...
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
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