php获取301跳转URL简单实例_php实例

复制代码 代码如下:

/**
 * get_redirect_url()
 * Gets the address that the provided URL redirects to,
 * or FALSE if there's no redirect.
 *
 * @param string $url
 * @return string
 */
function get_redirect_url($url){
    $redirect_url = null;

    $url_parts = @parse_url($url);
    if (!$url_parts) return false;
    if (!isset($url_parts['host'])) return false; //can't process relative URLs
    if (!isset($url_parts['path'])) $url_parts['path'] = '/';

    $sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $errno, $errstr, 30);
    if (!$sock) return false;

    $request = "HEAD " . $url_parts['path'] . (isset($url_parts['query']) ? '?'.$url_parts['query'] : '') . " HTTP/1.1\r\n";
    $request .= 'Host: ' . $url_parts['host'] . "\r\n";
    $request .= "Connection: Close\r\n\r\n";
    fwrite($sock, $request);
    $response = '';
    while(!feof($sock)) $response .= fread($sock, 8192);
    fclose($sock);
    if (preg_match('/^Location: (.+?)$/m', $response, $matches)){
        if ( substr($matches[1], 0, 1) == "/" )
            return $url_parts['scheme'] . "://" . $url_parts['host'] . trim($matches[1]);
        else
            return trim($matches[1]);

    } else {
        return false;
    }

}
/**
 * get_all_redirects()
 * Follows and collects all redirects, in order, for the given URL.
 *
 * @param string $url
 * @return array
 */
function get_all_redirects($url){
    $redirects = array();
    while ($newurl = get_redirect_url($url)){
        if (in_array($newurl, $redirects)){
            break;
        }
        $redirects[] = $newurl;
        $url = $newurl;
    }
    return $redirects;
}

php实现用socket获取301跳转地址,可以提取跳转过程中的url

时间: 2024-09-11 05:32:19

php获取301跳转URL简单实例_php实例的相关文章

php获取301跳转URL简单实例

 这篇文章主要介绍了php获取301跳转URL简单实例,有需要的朋友可以参考一下  代码如下: /**  * get_redirect_url()  * Gets the address that the provided URL redirects to,  * or FALSE if there's no redirect.   *  * @param string $url  * @return string  */ function get_redirect_url($url){    

php获取301跳转URL

代码如下: /**  * get_redirect_url()  * Gets the address that the provided URL redirects to,  * or FALSE if there's no redirect.   *  * @param string $url  * @return string  */ function get_redirect_url($url){     $redirect_url = null;      $url_parts = @

用HTML/JS/PHP方式实现页面延时跳转的简单实例_php实例

WEB开发中经常会遇到页面跳转或延时跳转的需求,掌握各种页面跳转方式非常必要. 以下是我总结有用HTML/JS/PHP三类方式实现跳转的方法,例子皆为三秒后跳转到index.php页面. 1,HTML方法: 在HEAD中添加<meta>标签 <meta http-equiv="refresh" content="3;url='index.php'" > 2,JS控制跳转方法 A.Location直接加链接方式 <script type=

php用header函数实现301跳转代码实例_php实例

PHP 301跳转的小代码 复制代码 代码如下: <?php    $the_host = $_SERVER['HTTP_HOST']; $request_uri = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : ''; if($the_host !== 'www.jb51.net') {     //echo $_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];    header('HT

php解析xml 的四种简单方法(附实例)_php实例

XML处理是开发过程中经常遇到的,PHP对其也有很丰富的支持,本文只是对其中某几种解析技术做简要说明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument. 1. XML Expat Parser: XML Parser使用Expat XML解析器.Expat是一种基于事件的解析器,它把XML文档视为一系列事件.当某个事件发生时,它调用一个指定的函数处理它.Expat是无验证的解析器,忽略任何链接到文档的DTD.但是,如果文档的形式不好,则会以一个错误

PHP与服务器文件系统的简单交互_php实例

1.php.ini中关于文件上传的设置指令 2.文件上传过程 (1)上传文件提交表单html代码: <!--向服务器上传文件的HTML表单(限制为文本文件)--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Adminstration - upoload new files</title>

PHP中把数据库查询结果输出为json格式简单实例_php实例

include/conn.php为数据库链接文件,不会的网上搜索 <?php include './include/conn.php'; //数据库链接文件 $sql_notice = mysql_query('SELECT * FROM gg_notice where enable = "1" limit 0,10'); $notice = mysql_fetch_array($sql_notice, MYSQL_ASSOC); print_r ($notice); ?>

PHP中使用CURL模拟登录并获取数据实例_php实例

cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信息.本文以模拟登录开源中国(oschina)为例,和大家分享cURL的使用. PHP的curl()在抓取网页的效率方面是比较高的,而且支持多线程,而file_get_contents()效率就要稍低些,当然,使用curl时需要开启下curl扩展. 代码实战 先来看登录部分的代码: 复制代码 代码如下

php 流程控制switch的简单实例_php实例

switch允许对一个标量(表达式)的多个可能结果做选择. 语法: switch (expr) { case result1: statement1 break; case result2: statement2 break; -- default: statement } 系统计算expr的值,根据计算结果(result1.result2等)来选择下面对应执行语句,如果所有的case结果都不符合,则会执行default里的语句. 例子: <?php switch ($x) { case 0: