Ciao a tutti,
ho cercato con le parole chiave "visualizzazione di description, title e href di una pagina", ma non ho trovato niente.
La mia intenzione è di scrivere un url iniziale che farà visualizzare tutti i link contenenti in esso, il titolo della pagina dei link e, se c'è il tag meta description mi visualizza anche questo, altrimenti, al suo posto, un po' di testo della pagina.
Io ho preso un po' di codici dalla documentazione ufficiale di php e dal sito php.html.it
Allora ho unito un po' di codice facendo la pagina php così:
Codice PHP:
<?php
function get_links($content,$url) {
$found=array();
$l=0;
for ($i=0; $i<count($content); $i++) { // >
$line=split(" ",$content[$i]);
for ($j=0; $j<count($line); $j++) { // >
if (strstr($line[$j],"<a") && strstr($line[$j+1],"href=")) { // ">
$link=split('"',$line[$j+1]);
if (!strstr($link[1],"http://")) {
$fields=split("/",$url);
$root="http:/";
for ($k=2; $k<count($fields)-1; $k++) // >
$root=$root."/".$fields[$k];
$link[1]=$root."/".$link[1];
}
$found[$l++]=$link[1];
}
}
}
return $found;
}
// Definizione dell'url iniziale
$url = $_POST['sito'];
$st = 8;
for ($k=0; $k<$st; $k++) {
echo "<h1 align=\"center\">".$l['lv']." ".($k+1)."</h1>\n";
if ($k>0) {
for ($i=0; $i<count($found[$k-1]); $i++) { // >
$url = $found[$k-1][$i];
$fp = fopen($url,"r");
if ($fp==null) {
echo "<b>".$l['elif']." ".$url."</b>\n";
fclose($fp);
} else {
fclose($fp);
$found[$k] = get_links(file($url),$url);
echo "<h2>Links trovati in ".$url.":</h2>\n<table width=\"100%\" class=\"botlink\" border=\"0\">\n";
for ($j=0; $j<count($found[$k]); $j++) { // >
echo "<tr>\n<td class=\"bottitle\" width=\"33%\">";
if(eregi("<title>(.*)</title>",$found[$k][$j],$title))
{
echo $title[1];
}
else
{
$title = "N/D";
echo $title;
}
echo "</td>\n<td class=\"botdesc\" width=\"33%\">";
if(preg_match("/<meta +name *=[\"']?description[\"']? *content=[\"']?([^<>\"]+)[\"']?/i",$found[$k][$j],$meta))
{
echo $meta[1];
}
else
{
$meta = "N/D";
echo $meta;
}
echo "</td>\n<td class=\"botlink\">".$found[$k][$j]."</td>\n</tr>";
}
echo "</table>\n";
}
}
} else {
$fp=fopen($url,"r");
if ($fp==null) die("Errore leggendo ".$url."\n");
fclose($fp);
$found[$k] = get_links(file($url),$url);
echo "<h2>Links trovati in ".$url.":</h2>\n<table width=\"100%\" class=\"botlink\" border=\"0\">\n";
for ($i=0; $i<count($found[$k]); $i++) { // >
echo "<tr>\n<td class=\"bottitle\" width=\"33%\">";
if(eregi("<title>(.*)</title>",$found[$k][$i],$title))
{
echo $title[1];
}
else
{
$title = "N/D";
echo $title;
}
echo "</td>\n<td class=\"botdesc\" width=\"33%\">";
if(preg_match("/<meta +name *=[\"']?description[\"']? *content=[\"']?([^<>\"]+)[\"']?/i",$found[$k][$i],$meta))
{
echo $title[1];
}
else
{
$meta = "N/D";
echo $meta;
}
echo "</td>\n<td class=\"botlink\">".$found[$k][$i]."</td>\n</tr>";
}
echo "</table>";
}
}
?>
Però quando vado a visitarla assegnando un sito a $_POST['sito'], al title e meta description mi visualizza "N/D", ma all'url me lo visualizza.
Come risolvo il problema?
Lo scopo di questa pagina è di vedere i link di una pagina iniziale, meta description o un po' di testo, e title. Tutto questo a catena, cioè se nella pagina 1.php sta il link per 2.php e in 2.php sta il link per 3.php, ma se nella pagina 3.php sta il link per 2.php non me lo deve visualizzare di nuovo, tutto deve procedere bene a catena.
Come faccio?
Grazie,
Ciao...