PHP获取网页meta信息(包括title、keywords、description)的两种方法

技术笔记 - PHP - PHP类库

发布时间:2020-03-06 10:26:06

admin 于  2020-03-27 02:44:09 编辑

在网页采集过程中,我们需要获取一个网站的meta信息,如title、keywords、description等,有两种方法获取网站的meta信息,第一种方法是使用get_meta_tags函数,第二种方法是使用正则表达式匹配的方法获取。12

1.使用get_meta_tags函数获取meta信息

比如我们要获取http://www.taobao.com这个网页的meta信息,可以直接使用php内置函数get_meta_tags()获取。

$meta_tags = get_meta_tags("https://www.csdn.net/");
print_r($meta_tags);

2.使用正则表达式获取meta信息

$site    = "http://www.zcool.com.cn";
$content = get_sitemeta($site);
print_r($content);

/* 获取META信息 */
function get_sitemeta ($url) {
	$data = file_get_contents($url);
	$meta = [];
	if ( !empty($data) ) {
		//Title
		preg_match('/<*TITLE>([\w\W]*?)<\/TITLE>/si' , $data , $matches);
		if ( !empty($matches[1]) ) {
			$meta['title'] = $matches[1];
		}
		//Keywords
		preg_match('/<*META\s+name="keywords"\s+content="([\w\W]*?)"/si' , $data , $matches);
		if ( empty($matches[1]) ) {
			preg_match("/<*META\s+name='keywords'\s+content='([\w\W]*?)'/si" , $data , $matches);
		}
		if ( empty($matches[1]) ) {
			preg_match('/<*META\s+content="([\w\W]*?)"\s+name="keywords"/si' , $data , $matches);
		}
		if ( empty($matches[1]) ) {
			preg_match('/<*META\s+http-equiv="keywords"\s+content="([\w\W]*?)"/si' , $data , $matches);
		}
		if ( !empty($matches[1]) ) {
			$meta['keywords'] = $matches[1];
		}
		//Description
		preg_match('/<*META\s+name="description"\s+content="([\w\W]*?)"/si' , $data , $matches);
		if ( empty($matches[1]) ) {
			preg_match("/<*META\s+name='description'\s+content='([\w\W]*?)'/si" , $data , $matches);
		}
		if ( empty($matches[1]) ) {
			preg_match('/<*META\s+content="([\w\W]*?)"\s+name="description"/si' , $data , $matches);
		}
		if ( empty($matches[1]) ) {
			preg_match('/<*META\s+http-equiv="description"\s+content="([\w\W]*?)"/si' , $data , $matches);
		}
		if ( !empty($matches[1]) ) {
			$meta['description'] = $matches[1];
		}
	}
	return $meta;
}

转载声明:本站文章无特别说明,皆为原创,版权所有,转载请注明:Dy大叔的日常

转载自 PHP获取网页meta信息(包括title、keywords、description)的两种方法 | XDY.ME@Dy大叔的日常

XDY.ME@Dy大叔的日常