使用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>\';
?>
最合适的回答,由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>
.