Extraire d'une chaine en php
zoby44
Messages postés
868
Statut
Membre
-
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 :
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.
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.
A voir également:
- Extraire d'une chaine en php
- Extraire une video youtube - Guide
- Extraire le son d'une vidéo - Guide
- Chaine tnt gratuite sur mobile - Guide
- Extraire texte d'une image - Guide
- Extraire image pdf - Guide
8 réponses
Avec ça ?
je suis pas sûr de l'anti-slash devant le slash.
if (preg_replace_callback("/\<head\>([^\:]+)\<\/head\>/", $txt, $matches))
{
echo $matches;
}
je suis pas sûr de l'anti-slash devant le slash.
Désolé, ca ne fonctionne pas. < et > ne font pas partie des caractères à échapper je crois.
j'ai essayé avec ca aussi :
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...
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...
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 :
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...
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...