Hi,
ich bin zur Zeit dabei ein kleines PHP-Programm zu schreiben, welches die Links innerhalb einer Seite auflistet. Konkreter möchte ich das auf wikipedia anwenden, um so verwandte Artikel aufzulisten. Dabei gibt es die Möglichkeit ein Anfangs- sowie Endkriterium zu setzen, sowie Ausnahmen.
Jetzt ist allerdings das Problem, dass die Daten nach dem Entfernen der Ausnahmen a) nicht mehr komplett ausgegeben werden oder vorhanden sind, außerdem werden Leerräume im Array erzeugt, trotz der Nutzung von array_values().
Ich vermute mal, ich habe einen kleinen Fehler in den Schleifen gemacht, bin ziemlich neu in dem Gebiet.. :/
ich bin zur Zeit dabei ein kleines PHP-Programm zu schreiben, welches die Links innerhalb einer Seite auflistet. Konkreter möchte ich das auf wikipedia anwenden, um so verwandte Artikel aufzulisten. Dabei gibt es die Möglichkeit ein Anfangs- sowie Endkriterium zu setzen, sowie Ausnahmen.
Jetzt ist allerdings das Problem, dass die Daten nach dem Entfernen der Ausnahmen a) nicht mehr komplett ausgegeben werden oder vorhanden sind, außerdem werden Leerräume im Array erzeugt, trotz der Nutzung von array_values().
Ich vermute mal, ich habe einen kleinen Fehler in den Schleifen gemacht, bin ziemlich neu in dem Gebiet.. :/
PHP:
<?php
// Config
$offlink = "http://de.wikipedia.org"; // Link, der den Links vorangestellt wird
$str_start = "<!-- start content -->"; // Ab diesem String fängt die Suche an
$str_end = "Spezial:Kategorien"; // Ab diesem String hört die Suche auf
$url_exceptions = array("#");
$title_exceptions = array("Bearbeiten", "Verbergen", "img");
// HTML Datei einlesen
$url = $_GET['url'];
$contents = file_get_contents($url);
// Anfang und Ende abschneiden
$contents = substr($contents, strpos($contents, $str_start));
$contents = substr($contents, 0, strpos($contents, $str_end));
// Links aus der Variable holen
preg_match_all("!<a.*?href=\"([^\"]*)\"[^>]*>(.*?)</a>!", $contents, $result);
// Ausnahmen entfernen
foreach ($url_exceptions as $url_exc)
{
for ($j = 0; $j < count($result[1]); $j++)
{
if (strpos($result[1][$j], $url_exc) > -1)
{
echo "<br>GELÖSCHT: ".$result[0][$j];
foreach ($result as $k => $v)
{
if (isset($result[$k][$j]))
{
unset($result[$k][$j]);
}
}
}
}
}
foreach ($title_exceptions as $title_exc)
{
for ($j = 0; $j < count($result[2]); $j++)
{
if (strpos($result[2][$j], $title_exc) > -1)
{
echo "<br>GELÖSCHT: ".$result[0][$j];
foreach ($result as $k => $v)
{
if (isset($result[$k][$j]))
{
unset($result[$k][$j]);
}
}
}
}
}
$result = array_values($result);
// Ausgabe
echo "Anzahl gefundener Links: ".count($result[0])."<br><br>";
for ($i = 0; $i < count($result[0]); $i++)
{
echo "<a href='".$offlink.$result[1][$i]."'>".$result[2][$i]."</a><br>";
}
?>
Zuletzt bearbeitet: