如何使用http API获取外部页面的标题标签?

时间:2011-06-07 作者:m-torin

使用http api检索外部页面标题标签的最佳方法是什么?

下面的代码片段将获取正文,但我找不到有关如何获取标记的正确文档:/

$url = \'http://wordpres.org\';
$response = wp_remote_get( $url );
if( is_wp_error( $response ) ) {
   echo \'Something went wrong!\';
} else {
print wp_remote_retrieve_body( $response );
}
Edit: 这段代码片段获得了外部页面的截图和标题(再次感谢@Bainternet)。只需稍加编辑,就可以轻松显示链接帖子格式。

<?php 
$content = get_the_content();
$url = strip_tags($content); //assumes only a url is in the_content
$width = \'150\';
$cleanurl = urlencode(clean_url($url));
$fullurl = \'http://s.wordpress.com/mshots/v1/\' . $cleanurl . \'?w=\' . $width;

// return title tag of an external page
// http://wordpress.stackexchange.com/questions/19424/how-to-get-title-tag-of-an-external-page-with-http-api
function get_page_title($url){
    if( !class_exists( \'WP_Http\' ) )
        include_once( ABSPATH . WPINC. \'/class-http.php\' );
    $request = new WP_Http;
    $result = $request->request( $url );
    if( is_wp_error( $result ) )
        return false;

    if( preg_match("#<title>(.+)<\\/title>#iU", $result[\'body\'], $t))  {
        return trim($t[1]);
    } else { 
return false; }
    }
$title = get_page_title($url);      

echo \'<div class="grid_4 alpha"><a href="\' . $url . \'"><img src="\' . $fullurl . \'" width="\' . $width .\'px" /></a></div>\'; 
echo \'<div class="grid_10 omega"><h3>\'; if ($title !== false){ echo $title;} echo \'</h3><p>\' . $content . \'</p></div>\';
echo \'<div class="clear"></div>\';
?>

2 个回复
最合适的回答,由SO网友:Bainternet 整理而成

下面是我的一个函数:

function get_page_title($url){
        if( !class_exists( \'WP_Http\' ) )
            include_once( ABSPATH . WPINC. \'/class-http.php\' );
        $request = new WP_Http;
        $result = $request->request( $url );
        if( is_wp_error( $result ) )
            return false;

        if( preg_match("#<title>(.+)<\\/title>#iU", $result[\'body\'], $t))  {
            return trim($t[1]);
        } else {
            return false;
        }
    }

Usage:

$title = get_page_title(\'http://www.google.com\');
if ($title !== false){ echo $title;}

SO网友:EAMann

嗯,你不想print 对于响应,您需要将其存储在变量中。然后可以使用正则表达式来查找其中的文本<title></title>.

preg_match( $pattern, wp_remote_retrieve_body( $response ), $matches );
您的$matches 然后,变量将是一个数组。仅使用$matches[0] 你会得到标题标签。

此模式将提取<title>Your Title</title> 页面外:

$pattern = \'/<title>([^>]*)<\\/title>/\';
我让你来移除<title></title>.

结束

相关推荐

将任何php文件挂钩到WordPress API

说我只是有个哑巴。php文件位于我的WP服务器上,我想让它通过API访问WP信息,我该怎么做?例如,如果我想打电话 bloginfo(\'url\'); 由于我给自己投了一票反对票(没有解释),我将解释为什么我对此感兴趣。当然,我可以从所有内置页面访问WP API。但假设我有一个与WP几乎没有关系的页面。创建一个自定义模板页面,然后将其挂接到一篇实际的文章中,这似乎需要很大的开销,这样我就可以访问几个WP API调用。最后我用了这样的东西:require $_SERVER[\'DOCUMENT_