Ciao a tutti, avrei bisogno del vostro aiuto.
Ho trovato su internet questa funzione:
Codice PHP:
class htmlParser
{
protected $title;
protected $metas;
protected $source;
public function __construct($source)
{
if (!is_string($source))
{
throw new Exception('Il sorgente della pagina deve essere una stringa');
}
$this->source = $source;
}
public function getSource()
{
return $this->source;
}
public function getTitle($default = null)
{
if (!$this->title)
{
if (preg_match("/<title>([^>]*)<\/title>/i", $this->source, $title))
{
$this->title = strip_tags($title[1]);
}
else
{
$this->title = $default;
}
}
return $this->title;
}
public function getMetas()
{
if (!$this->metas)
{
if (preg_match_all("/<meta[^>]+name=\"([^\"]*)\"[^>]" . "+content=\"([^\"]*)\"[^>]+>/i", $this->source, $metas))
{
$count = count($metas[0]);
$res = array();
for ($i = 0; $i < $count; $i++)
{
$res[strtolower(trim($metas[1][$i]))] = trim($metas[2][$i]);
}
$this->metas = $res;
}
else
{
$this->metas = array();
}
}
return $this->metas;
}
public function getMeta($meta, $default = null)
{
if ($this->hasMeta($meta))
{
return $this->metas[strtolower($meta)];
}
return $default;
}
public function hasMeta($meta)
{
if (!$this->metas)
{
$this->getMetas();
}
return (bool) isset($this->metas[strtolower($meta)]);
}
}
Questa classe dovrebbe dato un indirizzo restituire alcuni parametri.
Codice PHP:
$hp = new htmlParser(file_get_contents($link));
$link_title1 = $hp->getTitle('Nessun titolo');
$link_title2 = $hp->getMeta('title', 'Nessun titolo');
$link_description = $hp->getMeta('description', 'Nessuna descrizione');
Ho notato che la classe funziona solo se il tag è in questo formato
<meta name="title" content="testo"/>
ma non funziona in questo
<meta content="testo" name="title"/>
Non conosco molto bene le classi... mi aiutate a risolvere?