file_get_contents Problem

webguru2009

Mitglied
Hallo,

ich möchte gerne bei einer eingegebenen Seite den Header auslesen.
Dies funktioniert leider bei mir nicht. (Siehe Bsp.: 1)

Wenn ich allerdings zb. auslesen möchte, was zwischen einen <b> und </b> ist, funktioniert es. (Siehe Bsp.: 2) Weiß jemand woran das liegen könnte? Wo ist bei mir der fehler?

Bsp.: 1

PHP:
<?php
$host = "http://www.tutorials.de/";
$datei = file_get_contents($host);
$qt=substr($datei,strpos($datei,'<meta name="generator" content="')+3);
$qt=substr($qt,0,strpos($qt,'" />'));

if($qt == "vBulletin 4.1.1")
   {
   echo "hat geklappt";
   }
   else
   {
   echo "hat nicht geklappt";
   }
?>

Bsp.: 2

PHP:
<?php
$host = "http://www.tutorials.de/";
$datei = file_get_contents($host);
$qt=substr($datei,strpos($datei,'<b>')+3);
$qt=substr($qt,0,strpos($qt,'</b>'));

if($qt == "Social Bookmark Bar")
   {
   echo "hat geklappt";
   }
   else
   {
   echo "hat nicht geklappt";
   }
?>

Beste Grüße
Webguru
 
Wenn du dir $qt ausgeben lässt, wirst du sehen, dass da
Code:
ta name="generator" content="vBulletin 4.1.1"
drin steht.

Änder einfach die Zeile
PHP:
$qt=substr($datei,strpos($datei,'<meta name="generator" content="')+3);
in
PHP:
$qt=substr($datei,strpos($datei,'<meta name="generator" content="')+32);


und es klappt :)
 
Mit
PHP:
$qt=substr($datei,strpos($datei,'<meta name="generator" content="')+3);
zählst du vom Anfang von
<meta name="generator" content=" drei Zeichen nach vorne.
Also landest du bei t von meta.
Mit 32 zählst du nur weiter bis zum Ende des Strings.
 
Achso...super, Tausend dank. Ein Problem habe ich allerdings noch.

Was ist, wenn es mehrere Inhalte sind und ich nicht nur eines ausgegeben haben möchte.
z.b.: alle die zwischen <tr> und </tr> sind?
 
Ich bekomme das irgendwie nicht hin. Bringt mir error aber ich glaube ich habe es sowieso falsch.

PHP:
<?php
$host = "http://www.tutorials.de/";
$datei = file_get_contents($host);
$codeanfang = array("<b>");
$codeende = array("</b>")>
$qt=substr($datei,strpos($datei, $codeanfang)+32);
$qt=substr($qt,0,strpos($qt, $codeende));
echo $qt,"<br />";

?>
 
Zurück