1

使用 Zend_Dom_Query,我想从 HTML 字符串中检索元数据。

要检索链接,您可以像这样简单地查询:

$results = $dom->query('a'); //Where $dom is your html string

不幸的是,这似乎不适用于元

$results = $dom->query('meta'); //doesn't work

如何检索元数据,然后按其“属性”属性进行过滤?

我正在寻找的一个例子:

               public function meta($dom)
{
    $results = $dom->query('meta'); //This is not a correct query (does anyone have an alternative?)
    $links = array();
    foreach ($results as $index => $result) {
        if ($result->getAttribute('property') == 'title') { //find <meta property="title"
            echo $result->getAttribute('content') . '<br />'; //echo the content attribute of the title
        }
    }
    return $results;
}

一旦查询正确,此代码将起作用。但是,我想更进一步,直接查询<meta property="title" content="This is the Title" />而不是检索所有元数据并循环获取正确的元数据。

对于使用 zend_dom_query 获取所有元数据或(更重要的是)查询以仅接收 property == title 的元数据的任何帮助,将不胜感激。

谢谢

4

2 回答 2

0

标记不是有效的 CSS 选择器,因此您必须使用该$dom->queryXpath($xPathQuery)方法而不是$dom->query().

也许是这样的:

$dom->queryXpath('/html/head');

我不确定要使用的确切查询字符串,但这就是想法。

Zend_Dom_Query 操作理论。

于 2012-09-27T14:26:52.877 回答
0

如果你有 url 试试这个:


$metatagarray = get_meta_tags($url);
if (!empty($metatagarray["keywords"]))
$metakey = $metatagarray["keywords"];
if (!empty($metatagarray["description"]))
$metadesc = $metatagarray["description"];

于 2013-06-13T03:50:10.233 回答