Ciao scusa ancora il disturbo, ho questa classe che dovrebbe leggere alcune informazioni da una pagina.
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(.*?)>/i', $this->source, $metas))
{
foreach ($metas[1] as $meta)
{
$res = array();
preg_match_all('/(\w+)="(.*?)"/', PREG_SET_ORDER, $attrs);
foreach ($attrs as $attr)
{
$res[$attr[1]] = $attr[2];
}
}
$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)]);
}
}
$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');
Il problema è che non funziona. Puoi aiutarmi a capire il perchè o ad aiutarmi a sistemare la classe?