Extraire d'une chaine en php

zoby44 Messages postés 868 Statut Membre -  
zoby44 Messages postés 868 Statut Membre -
Bonjour a tous, j'ai un petit problème de regex en php (j'aime po les regex).
Je suis sur que c'est tout con mais je bloque dessus depuis quelques heures. Je cherche juste a extraire ce qu'il y a dans les balises <head> et <body> d'une page web. Je récupère la source avec un fopen.
J'ai essayé avec un truc comme ça :
if (preg_replace_callback("#<head>(.*)</head>#Ui",$txt,$matches)) {
	echo $matches;
}


J'ai remplacé le "preg_replace_callback" par un peu tout ce que j'ai put trouvé, mais rien a faire. Au final, ce serais pour faire un navigateur dans un navigateur (un peu comme ça: http://www.naviguer.ca/ mais en mieux ^^,)
Merci d'avance.
--
Il est souvent plus rapide de chercher que d'attendre une réponse... Google est notre ami.
Configuration: Windows XP
Firefox 3.0.6

8 réponses

  1. Torkass Messages postés 189 Statut Membre 95
     
    Avec ça ?

    if (preg_replace_callback("/\<head\>([^\:]+)\<\/head\>/", $txt, $matches))
         {
         echo $matches;
         }

    je suis pas sûr de l'anti-slash devant le slash.
    0
  2. zoby44 Messages postés 868 Statut Membre 199
     
    Désolé, ca ne fonctionne pas. < et > ne font pas partie des caractères à échapper je crois.
    j'ai essayé avec ca aussi :

    $pattern = '#<head>(.*)</head>#i';
     
    preg_match_all($pattern,$txt,$h); 
    $n = count($h);
    for ($q=0;$q<$n;$q++) {
    	$z = count($h[$q]);
    	for ($i=0; $i<$z; $i++) {
    		echo $h[$q][$i];
    	}
    }
    

    Mais ça ne fonctionne pas non plus... Si ca peut mettre quelqu'un sur une piste...
    En tout cas, merci d'avoir essayer.
    C'est vraiment l'horreur les regex...
    0
  3. Torkass Messages postés 189 Statut Membre 95
     
    if (preg_match_all("#<head>([^"]+)</head>#Ui", $txt, $matches))
    ?
    0
  4. zoby44 Messages postés 868 Statut Membre 199
     
    Non plus. J'ai le droit a une page blanche avec rien dans la source. Peut-être qu'en javascript...

    Sinon, j'ai cherché à récupérer l'url d'une balise <object> ou <iframe> contenant un site web mais a chaque fois, j'ai le droit à un permission.denied.
    Si quelqu'un à trouvé la solution pour contourné cette sécurité, je suis preneur.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Torkass Messages postés 189 Statut Membre 95
     
    Je viens d'éditer mon message, essaye celui-ci.
    0
  7. zoby44 Messages postés 868 Statut Membre 199
     
    Toujours pas. Et je pense que tu as oublié un \ devant le 2ème "
    C'est bizzard, quand je fait un "count" sur un preg_match_all il me trouve 2 truc, mais quand je fait un count sur, par exemble $h[0] il m'en trouve aucun.
    Exemple :

    $pattern = '#<head>(.*)</head>#Ui';
     
    	preg_match_all($pattern,$txt,$h); 
    	$n = count($h);
    	for ($q=0;$q<$n;$q++) {
    		$z = count($h[$q]);
    		for ($i=0; $i<$z; $i++) {
    			echo $h[$q][$i];
    		}
    	}

    Et la, il me trouve :
    $n = 2
    et
    $z = 0

    J'y comprend plus rien... Et si je change le $pattern, c'est la même chose...
    0
  8. Torkass Messages postés 189 Statut Membre 95
     
    Alors là je ne vois pas, désolé... :/
    0
  9. zoby44 Messages postés 868 Statut Membre 199
     
    Je vais continuer a chercher. En tout cas, merci. Si je trouve la solution (et je vais a trouver!!!) je te tiens au courant.
    0