快速获取网站标题的PHP代码 - 使用Curl和File_get_contents

本文提供一个高效的PHP代码示例,使用Curl和File_get_contents两种方法来获取网站标题,并通过判断哪个方法先获取成功来优化效率,最终返回最快的结果。

<?php
function getTitle($url) {
    // 使用Curl获取网站内容
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, false);
    $contents = curl_exec($ch);
    
    // 使用多线程进行异步获取
    $contents_file = file_get_contents($url, false, stream_context_create(array('http' => array('timeout' => 1))));
    
    // 判断哪个方法先获取成功
    if ($contents === false || $contents_file === false) {
        return '获取标题失败';
    } elseif (strlen($contents) > strlen($contents_file)) {
        // 使用Curl获取的标题更早
        preg_match('/<title>(.*)</title>/i', $contents, $title);
        $title = str_replace(array('\\r\\n', '\\r', '\\n', ',', ' '), '', $title[1]);
        return $title;
    } else {
        // 使用file_get_contents获取的标题更早
        preg_match('/<title>(.*)</title>/i', $contents_file, $title);
        $title = str_replace(array('\\r\\n', '\\r', '\\n', ',', ' '), '', $title[1]);
        return $title;
    }
}

$t_url = 'http://example.com';
$title = getTitle($t_url);

echo 'Website title: ' . $title;
?>

代码说明:

  1. 定义getTitle函数:

    • 函数接受一个URL作为参数。
    • 使用curl_init初始化Curl句柄。
    • 设置Curl选项:CURLOPT_URL为目标URL,CURLOPT_RETURNTRANSFER设置为true,CURLOPT_HEADER设置为false。
    • 使用curl_exec执行Curl请求,并将结果存储在$contents中。
    • 使用file_get_contents获取网站内容,并使用stream_context_create设置超时时间为1秒,使用多线程进行异步获取。
    • 判断哪个方法先获取成功,并使用对应方法获取的标题。
    • 使用正则表达式从获取的内容中提取标题,并对其进行处理。
    • 返回获取到的标题。
  2. 调用getTitle函数:

    • 定义目标URL:$t_url = 'http://example.com';
    • 调用getTitle函数获取标题,并将结果存储在$title中。
    • 输出获取到的标题。

代码优化:

  • 使用多线程进行异步获取,提高获取速度。
  • 判断哪个方法先获取成功,并使用对应方法获取的标题,进一步提高效率。

注意:

  • 该代码示例仅供参考,实际应用中可能需要根据具体情况进行调整。
  • 对于某些网站,可能需要进一步处理获取到的标题以满足您的需求。

原文地址: https://www.cveoy.top/t/topic/o7Rw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录