茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    php使用parse_url和parse_str解析URL
    來源:易賢網 閱讀:1911 次 日期:2015-03-13 10:01:52
    溫馨提示:易賢網小編為您整理了“php使用parse_url和parse_str解析URL”,方便廣大網友查閱!

    本文主要向大家介紹了php中2個解析URL的方法(parse_url和parse_str),以及這2種方法的簡介和用法,十分全面,推薦給有需要的小伙伴們。

    PHP中有兩個方法可以用來解析URL,分別是parse_url和parse_str。

    parse_url

    解析 URL,返回其組成部分

    mixed parse_url ( string $url [, int $component = -1 ] )

    本函數解析一個 URL 并返回一個關聯數組,包含在 URL 中出現的各種組成部分。

    本函數不是用來驗證給定 URL 的合法性的,只是將其分解為下面列出的部分。不完整的 URL 也被接受,parse_url() 會嘗試盡量正確地將其解析。

    參數

    url 要解析的 URL。無效字符將使用 _ 來替換。

    component 指定 PHP_URL_SCHEME、 PHP_URL_HOST、 PHP_URL_PORT、 PHP_URL_USER、 PHP_URL_PASS、 PHP_URL_PATH、 PHP_URL_QUERY 或 PHP_URL_FRAGMENT 的其中一個來獲取 URL 中指定的部分的 string。 (除了指定為 PHP_URL_PORT 后,將返回一個 integer 的值)。

    返回值

    對嚴重不合格的 URL,parse_url() 可能會返回 FALSE。

    如果省略了 component 參數,將返回一個關聯數組 array,在目前至少會有一個元素在該數組中。數組中可能的鍵有以下幾種:

    scheme - 如 http

    host

    port

    user

    pass

    path

    query - 在問號 ? 之后

    fragment - 在散列符號 # 之后

    如果指定了 component 參數, parse_url() 返回一個 string (或在指定為 PHP_URL_PORT 時返回一個 integer)而不是 array。如果 URL 中指定的組成部分不存在,將會返回 NULL。

    實例

    代碼如下:

    <?php

    $url = 'http://username:password@hostname/path?arg=value#anchor';

    print_r(parse_url($url));

    echo parse_url($url, PHP_URL_PATH);

    ?>

    以上例程會輸出:

    代碼如下:

    Array

    (

    [scheme] => http

    [host] => hostname

    [user] => username

    [pass] => password

    [path] => /path

    [query] => arg=value

    [fragment] => anchor

    )

    /path

    parse_str

    將字符串解析成多個變量

    void parse_str ( string $str [, array &$arr ] )

    如果 str 是 URL 傳遞入的查詢字符串(query string),則將它解析為變量并設置到當前作用域。

    獲取當前的 QUERY_STRING,你可以使用 $_SERVER['QUERY_STRING'] 變量。

    參數

    str 輸入的字符串。

    arr 如果設置了第二個變量 arr,變量將會以數組元素的形式存入到這個數組,作為替代。、

    實例

    代碼如下:

    <?php

    $str = "first=value&arr[]=foo+bar&arr[]=baz";

    parse_str($str);

    echo $first; // value

    echo $arr[0]; // foo bar

    echo $arr[1]; // baz

    parse_str($str, $output);

    echo $output['first']; // value

    echo $output['arr'][0]; // foo bar

    echo $output['arr'][1]; // baz

    ?>

    前一段時間在讀php-resque的源碼,看到了在其中對這兩個的方法的應用,感覺用的很好,用來解析redis鏈接的設置。

    redis鏈接的格式是:redis://user:pass@host:port/db?option1=val1&option2=val2,是不是和URL一樣,所以用以上兩個方法很容易解析。

    地址:

    代碼如下:

    代碼如下:

    /**

    * Parse a DSN string, which can have one of the following formats:

    *

    * - host:port

    * - redis://user:pass@host:port/db?option1=val1&option2=val2

    * - tcp://user:pass@host:port/db?option1=val1&option2=val2

    *

    * Note: the 'user' part of the DSN is not used.

    *

    * @param string $dsn A DSN string

    * @return array An array of DSN compotnents, with 'false' values for any unknown components. e.g.

    * [host, port, db, user, pass, options]

    */

    public static function parseDsn($dsn)

    {

    if ($dsn == '') {

    // Use a sensible default for an empty DNS string

    $dsn = 'redis://' . self::DEFAULT_HOST;

    }

    $parts = parse_url($dsn);

    // Check the URI scheme

    $validSchemes = array('redis', 'tcp');

    if (isset($parts['scheme']) && ! in_array($parts['scheme'], $validSchemes)) {

    throw new \InvalidArgumentException("Invalid DSN. Supported schemes are " . implode(', ', $validSchemes));

    }

    // Allow simple 'hostname' format, which `parse_url` treats as a path, not host.

    if ( ! isset($parts['host']) && isset($parts['path'])) {

    $parts['host'] = $parts['path'];

    unset($parts['path']);

    }

    // Extract the port number as an integer

    $port = isset($parts['port']) ? intval($parts['port']) : self::DEFAULT_PORT;

    // Get the database from the 'path' part of the URI

    $database = false;

    if (isset($parts['path'])) {

    // Strip non-digit chars from path

    $database = intval(preg_replace('/[^0-9]/', '', $parts['path']));

    }

    // Extract any 'user' and 'pass' values

    $user = isset($parts['user']) ? $parts['user'] : false;

    $pass = isset($parts['pass']) ? $parts['pass'] : false;

    // Convert the query string into an associative array

    $options = array();

    if (isset($parts['query'])) {

    // Parse the query string into an array

    parse_str($parts['query'], $options);

    }

    return array(

    $parts['host'],

    $port,

    $database,

    $user,

    $pass,

    $options,

    );

    }

    上面所述就是PHP解析URL的2種方法了,希望小伙伴們能夠喜歡。

    更多信息請查看IT技術專欄

    更多信息請查看網絡編程
    易賢網手機網站地址:php使用parse_url和parse_str解析URL

    2026上岸·考公考編培訓報班

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
    聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網