my code is
function getTitle($Url){
$str = file_get_contents($Url);
if(strlen($str)>0){
preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
return $title[1];
}
else
{
return false;
}
}
function getMetas($Url){
$str = file_get_contents($Url);
if(strlen($str)>0){
// preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
preg_match("/<meta name=\"description\" content=\"(.*?)\"/",$str,$title);
// preg_match( '<meta name="description".*content="([^"]+)">siU', $str, $title);
return $title[1];
}
else
{
return false;
}
}
//Example:
$url=$_POST['url'];
echo getTitle($url);
echo "<br><br>";
echo getMetas($url);
这并未显示所有网址的结果,例如http://google.com
答案 0 :(得分:13)
为什么使用正则表达式来解析<meta>
标签?
PHP有一个用于解析 meta 信息的内置函数,它被称为get_meta_tags()
<?php
$tags = get_meta_tags('http://www.stackoverflow.com/');
echo "<pre>";
print_r($tags);
<强> OUTPUT:
强>
Array
(
[twitter:card] => summary
[twitter:domain] => stackoverflow.com
[og:type] => website
[og:image] => http://cdn.sstatic.net/stackoverflow/img/apple-touch-icon@2.png?v=fde65a5a78c6
[og:title] => Stack Overflow
[og:description] => Q&A for professional and enthusiast programmers
[og:url] => http://stackoverflow.com/
)
正如您所看到的那样标题,图像和描述正在被解析。
答案 1 :(得分:7)
我知道问题是1.5岁。但如果您仍在寻找它,可以使用https://urlmeta.org。它是一个提取URL元的免费API。
答案 2 :(得分:1)
您可以通过
检查http或https的网址$url='stackoverflow.com';
$http_check='http://';
$https_check='http://';
if(substr($url,0,7)!=$http_check){
$url=$http_check.$url;
}else if(substr($url,0,8)!=$https_check){
$url=$https_check.$url;
}else{
$url=$url
}
然后你可以使用上面的回答
<?php
$tags = get_meta_tags($url);
echo "<pre>";
print_r($tags);