php 自动将url生成链接,然后提取title

输入的如果是url能够自动生成链接,让后会抓取这个链接的title显示。有什么好的方法吗?
用php或js都行。

阅读 6.8k
1 个回答

1 用户输入的URL在前端用jQuery进行简单的URL合法性检查后,异步提交给PHP
2 PHP检测URL是否合法,用Curl进行获取URL的内容
3 PHP把的获取Title或出错信息,返回给前端jQuery.

<?php
//文件编码为UTF-8(无BOM)

error_reporting(E_ALL || E_STRICT);

$url = 'http://q我q.com';

//首先判断用户输入的URL是否合法
if (!filter_var($url, FILTER_VALIDATE_URL)) {
    die('你输入的不是一个正常的URL.');
}

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_HEADER => false,
    CURLOPT_URL => $url,

    //考虑到有些网站是301跳转的.
    CURLOPT_FOLLOWLOCATION => true,
    //连接的超时时间设置为5秒
    CURLOPT_CONNECTTIMEOUT => 5,
    //响应超时时间为5秒
    CURLOPT_TIMEOUT => 5,
    CURLOPT_VERBOSE => false,

    CURLOPT_AUTOREFERER => true,
    //接收所有的编码
    CURLOPT_ENCODING => '',
    //返回页面内容
    CURLOPT_RETURNTRANSFER => true,
));

$response = curl_exec($ch);

//检测网页的编码,把非UTF-8编码的页面,统一转换为UTF-8处理.
if ('UTF-8' !== ($encoding = mb_detect_encoding($response, array('UTF-8', 'CP936', 'ASCII')))) {
    $response = mb_convert_encoding($response, 'UTF-8', $encoding);
}

//匹配一下title
$title = '没有成功获取到标题';
if (preg_match('#<title>(.*)</title>#isU', $response, $match)) {
    $title = $match[1];
}

echo $title;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
101 新手上路
子站问答
访问
宣传栏