Variable PHP

Benjamin46 - 11 févr. 2010 à 21:12
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 - 17 févr. 2010 à 18:19
Bonsoir,

J'aimerais récupérer un texte précis sur une autre page. Je définis la page dans une variable, exemple :

$data = file_get_contents("http://www.siteexterieur.com/page.php);

Puis, dans cette page, j'aimerais rechercher du texte qui est définit par exemple entre <div class="profile"> et le prochain </div>. Tout le texte qui s'y trouve serait alors dans une variable $texte par exemple.

Je sais que cela passe par explode (du moins je crois) mais je ne sais pas comment faire.

Merci d'avance.

4 réponses

Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
12 févr. 2010 à 09:45
Bonjour,

En effet tu peux le faire avec des combinaisons d'explode et/ou d'expressions régulières, cependant cela dépend vraiment de la structure de la page, par exemple si le div que tu veux récupérer contient lui même des divs c'est plus compliqué...

Tu saurais développer le contenu (en terme de balises) du div que tu veux récupérer ?
0
Le div que je veux récupérer contient seulement une ligne et c'est du texte (pas d'autre insertion comme des div).
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
17 févr. 2010 à 17:27
Re, avec quelques jours de décalage voilà une solution pour un div, tu peux la modifier pour l'adapter :

Fonction :
function interieur_div($chaine, $capture="")
{
	$new_chaine = preg_replace("/^.*(<div".$capture.">.*)<\/div>.*$/", "$1", $chaine);
	if($new_chaine==$chaine)
		return "Chaine non trouvee";
	if(!preg_match("<\/div>", $new_chaine))
		return preg_replace("/<div".$capture.">/", "", $new_chaine);
	else
		return interieur_div($new_chaine, $capture);
}



Test :
$str='iauhdoaudh<div id="mon_div_cible" class="cool">good</div>aidjajd<div>azodjaodja</div>adjaida';
$capture=' id="mon_div_cible" class="cool"';

echo htmlentities(interieur_div($str, $capture));



Voilà en espérant que ça serve :)

A noter : ça ne marche que pour les divs ne contenant pas de div.
0
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
17 févr. 2010 à 18:19
En gros, si tu as juste ca <div class="profile">texte</div>

Bah tu dis :

$texte = strstr($data, '<div class="profile">');
$masque = strstr($texte, '</div>');
$texte = str_replace($masque, '', $texte);
$texte = str_replace('<div class="profile">', '', $texte);
0