Guten morgen,
ich möchte gerne die robots.txt anhand des User-agent: parsen und anschließend jeweils die Disallow's bzw. Allow's an ein array zum entsprechenden User-agent übergeben.
Mein Problem:
Zur Zeit komme ich selbst nach vielen googlen, Forensuche einfach nicht weiter. Ich möchte das ein Array erstellt wird NUR mit den Disallow's und Allow's welche auch unterhalb dem entrsprechenden User-agent: stehen. Meine Frage wie kann ich solch ein Array erstellen?
Mein Versuch:
Die robots.txt:
Die Ausgabe nach dem einlesen mit var_dump():
Die fehlerhafte Ausgabe nach dem parsen mit var_dump():
Bin wirklich über jede Hilfe und jeden Tipp dankbar, denn ich darfs kaum erwähnen aber sitze schon fast zwei Tage an diesem Vorhaben. Also vielen Dank schon im Vorraus.
Beste Grüße!
ich möchte gerne die robots.txt anhand des User-agent: parsen und anschließend jeweils die Disallow's bzw. Allow's an ein array zum entsprechenden User-agent übergeben.
Mein Problem:
Zur Zeit komme ich selbst nach vielen googlen, Forensuche einfach nicht weiter. Ich möchte das ein Array erstellt wird NUR mit den Disallow's und Allow's welche auch unterhalb dem entrsprechenden User-agent: stehen. Meine Frage wie kann ich solch ein Array erstellen?
Mein Versuch:
Die robots.txt:
Code:
User-agent: * Disallow: /admin.php Disallow: /admin/ Disallow: /cache/ Disallow: /config/ Disallow: /design/ Disallow: /images/ Disallow: /includes/ Disallow: /language/ Disallow: /db/ Disallow: /templates/ Disallow: /common.php Disallow: /config.php Disallow: /groupcp.php Disallow: /memberlist.php Disallow: /modcp.php Disallow: /posting.php Disallow: /privmsg.php Disallow: /profile.php Disallow: /search.php Disallow: /viewtopic.php Disallow: /login.php User-agent: Mediapartners-Google* Disallow:
PHP-Code:
$url = 'http://example.com/'; //beispiel URL
$robotstxt = @file_get_contents($url . '/robots.txt'); //datei einlesen
var_dump($robotstxt);
if ($robotstxt !== false) //wenn robots.txt geöffnet werden konnte
{
$lines = preg_split("/[\r\n]+/", $robotstxt, -1, PREG_SPLIT_NO_EMPTY); //array mit einzelnen zeilen zurückgeben
$data = array(); //array erstellen
foreach ($lines as $line) //alle zeilen auslesen
{
if (substr($line, 0, 1) != "#") //wenn zeile nicht mit # beginnt
{
preg_match('/([^:]+):([^#]+)/', $line, $mat); //wert extrahieren
//print_r($mat);
if (!empty($mat))
{
if (strtolower(trim($mat['1'])) == 'user-agent')
{
$arrayuseragent[] = trim($mat['2']);
}
elseif (strtolower(trim($mat['1'])) == 'disallow')
{
$arraydisallow[] = trim($mat['2']);
}
elseif (strtolower(trim($mat['1'])) == 'sitemap')
{
$arraysitemap[] = trim($mat['2']);
}
}
}
}
//muss noch ne Bedingung mit isset machen
var_dump($arrayuseragent);
var_dump($arraydisallow);
var_dump($arraysitemap);
}
else
{
echo 'Glück gehabt, keine robots.txt gefunden!';
}
Code:
string(514) "User-agent: * Disallow: /admin.php Disallow: /admin/ Disallow: /cache/ Disallow: /config/ Disallow: /design/ Disallow: /images/ Disallow: /includes/ Disallow: /language/ Disallow: /db/ Disallow: /templates/ Disallow: /common.php Disallow: /config.php Disallow: /groupcp.php Disallow: /memberlist.php Disallow: /modcp.php Disallow: /posting.php Disallow: /privmsg.php Disallow: /profile.php Disallow: /search.php Disallow: /viewtopic.php Disallow: /login.php User-agent: Mediapartners-Google* Disallow:" 45
Code:
array(2) { [0]=> string(1) "*" [1]=> string(21) "Mediapartners-Google*" } array(21) { [0]=> string(10) "/admin.php" [1]=> string(7) "/admin/" [2]=> string(7) "/cache/" [3]=> string(8) "/config/" [4]=> string(8) "/design/" [5]=> string(8) "/images/" [6]=> string(10) "/includes/" [7]=> string(10) "/language/" [8]=> string(4) "/db/" [9]=> string(11) "/templates/" [10]=> string(11) "/common.php" [11]=> string(11) "/config.php" [12]=> string(12) "/groupcp.php" [13]=> string(15) "/memberlist.php" [14]=> string(10) "/modcp.php" [15]=> string(12) "/posting.php" [16]=> string(12) "/privmsg.php" [17]=> string(12) "/profile.php" [18]=> string(11) "/search.php" [19]=> string(14) "/viewtopic.php" [20]=> string(10) "/login.php" }
Beste Grüße!

Kommentar