我想提取微数据值。
我使用从命令行运行的 Yii 应用程序,使用 Putty。
以下代码不会产生任何输出;
在 $this->input->html 我存储了整个 html 文档源;
我认为某处有$content = new DOMXPath($dom);
裂缝;不知道为什么
如果有人知道,请帮忙;
$dom = new DOMDocument();
$html = $this->input->html;
$html = <<<HTML
echo $html;
HTML;
@$dom->loadHTML($html);
echo $html;
$content = new DOMXPath($dom);
print_r($content);
// find price
try {
echo '1'.$this->getMicrodataAttribute($content, 'http://data-vocabulary.org/Offer', 'price');
$this->output->productPrice = $this->getMicrodataAttribute($content, 'http://data-vocabulary.org/Offer', 'price');
//echo 'result output product price: '.$this->output->productPrice.PHP_EOL;
} catch (Exception $e) {
}
// find title
try {
$this->output->productTitle = $this->getMicrodataAttribute($content, 'http://data-vocabulary.org/Product', 'name');
if (!$this->output->productTitle)
if (preg_match("#<title>(.+)<\/title>#iU", $this->input->html, $t)) {
$this->output->productTitle = trim($t[1]);
}
} catch (Exception $e) {
}
这是应该提取微数据值的函数:
public function getMicrodataAttribute($content, $itemtype, $itemprop) {
$tags = $content->query("//*[@itemtype=\"$itemtype\"]//*[@itemprop=\"$itemprop\"]");
//print_r($tags);
if ($tags) {
foreach ($tags as $tag) {
//die('dd');
if (!$tag->getAttribute('content')) {
return $tag->nodeValue;
}
return $tag->getAttribute('content');
}
}
return null;
}