PHP从多个URL获取网站标题

时间:2018-03-08 08:20:30

标签: php html regex dom

我有一堆链接。我需要从中提取标题。所以,我想让textarea粘贴链接和按钮,如“获取标题”来提取标题。我做了一个从一个URL中提取标题的函数。它工作正常。我是PHP的新手,我不知道如何检测换行符以获取网址。有谁可以帮助我?

这是我的代码

<?php
 function getTitle($url) {
 $data = file_get_contents($url);
$title = preg_match('/<title[^>]*>(.*?)<\/title>/ims', $data, $matches) ? $matches[1] : null;
return $title;
 }

 echo getTitle('http://example.com');
 ?>

2 个答案:

答案 0 :(得分:1)

您可以使用 preg_split()

$urls = $_REQUEST['urlArea'];

function getTitle($url) {
    $data = file_get_contents($url);
    $title = preg_match('/<title[^>]*>(.*?)<\/title>/ims', $data, $matches) ? $matches[1] : null;
    return $title;
}

// split by new-line character(\r\n or \r or \n)
$arr_url = preg_split('/\r\n|[\r\n]/', $urls);

foreach($arr_url as $url) {
    echo getTitle($url);
}

编辑:为完整代码添加了您的功能

答案 1 :(得分:0)

请尝试此代码。当我们使用函数file_get_contents获取数据时,我们应该检查该数据的长度。

 function get_title($url){
      $str = file_get_contents($url);
      if(strlen($str)>0){
        $str = trim(preg_replace('/\s+/', ' ', $str)); // supports line breaks inside <title>
        preg_match("/\<title\>(.*)\<\/title\>/i",$str,$title); // ignore case
        return $title[1];
      }
    }
    //For Example:
 echo get_title("stackoverflow.com/"); 

输出结果为:

Stack Overflow - Where Developers Learn, Share, & Build Careers