开发者社区> 问答> 正文

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

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

展开
收起
落地花开啦 2016-06-17 17:00:01 1910 0
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;
    2019-07-17 19:43:09
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载