Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides. FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans. Proposez vos news : si vous avez un evenement à annoncer le chat : venez discuter de php. |
||
Bonjour à tous,
j'ai un ptit problème avec ces grogneugneux d'expressions régulières.
Je m'explique :
je souhaiterais récupérer des chaines contenues dans des titres de pages web, par exemple :
<title>Asus A8N-E : Cartes mères : Comparer les prix - Matbe.com</title> <title>AMD Athlon 64 3000+ (1800 Mhz - s939) 0.09µ BOX : Processeurs : Comparer les prix - Matbe.com</title> <title>MSI GeForce NX6600GT-TD128E : Cartes graphiques : Comparer les prix - Matbe.com</title>
Avec les fonctions ereg(), eregi() ou preg_match() je n'ai aucune difficulté à récupérer tout ce qui est contenu entre <title> et </title>.
if(!($fp = fopen($url, 'r')))
echo 'Impossible d\'accéder à la page';
else
{
$content = fread($fp, 10000);
fclose($fp);
$nom =eregi("<title>(.*)</title>",$content,$regs);
echo $regs[1];
}Ca c'est no problemo ca marche.
Seulement je souhaiterais récupérer seulement ce qui est contenu entre la balise <title> et les premiers ":" rencontrés. Le problème étant qu'il y a 2 ":" entre les balises <title> et </title>.
Avec le code suivant,
if(!($fp = fopen($url, 'r')))
echo 'Impossible d\'accéder à la page';
else
{
$content = fread($fp, 10000);
fclose($fp);
$nom =eregi("<title>(.*):",$content,$regs);
echo $regs[1];
}la chaine que je récupère est tronquée au niveau du deuxième ":"...
Par exmple sur ce titre : <title>Asus A8N-E : Cartes mères : Comparer les prix - Matbe.com</title>
j'obtiens Asus A8N-E : Cartes mères.
Si maintenant je remplace le titre précédent par <title>Asus A8N-E : Cartes mères Comparer les prix - Matbe.com</title> (suppression du deuxième ":")
j'obtiens Asus A8N-E ce qui est exactement ce qu'il me faut...
Comment faire pour obtenir la chaine contenue entre <title> et les premiers ":"....
Merci d'avance.
Dernière modification par Overflow (30-06-2005 07:42:28)
Hors ligne
bizoo toi ![]()
si tu a toujours deux : tu dois pouvoir faire ca :
$nom =eregi("<title>(.*):(.*):(.*)",$content,$regs);ou la premiere entrée de $regs devrait etre la partie avant le premier :
(je suis désolé de pas y avoir pensé sur msn
)
Hors ligne
za marcheeeee merci mon ptit kazarounet lol !! j'suis tro bete, j'avais pensé a ca :
$nom =eregi("<title>(.*):(.*)</title>",$content,$regs);mais pas a ce que viens de me dire !!
merki !!
(tu mfra pensé quand on svera, a paris j'ai pris une foto d'une enseigne qui te fera rire lol !)
Dernière modification par Overflow (30-06-2005 07:42:42)
Hors ligne
dsl c'était une erreur en recopiant le code.
Hors ligne