本文主要向大家介紹了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一樣,所以用以上兩個方法很容易解析。
網址:https://github.com/chrisboulton/php-resque/blob/master/lib/Resque/Redis.php
##程式碼如下:/** * 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種方法了,希望朋友們能夠喜歡。 以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網! 相關推薦:
以上是php使用parse_url和parse_str解析URL的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

ToretrievedatafromaPHPsession,startthesessionwithsession_start()andaccessvariablesinthe$_SESSIONarray.Forexample:1)Startthesession:session_start().2)Retrievedata:$username=$_SESSION['username'];echo"Welcome,".$username;.Sessionsareserver-si

利用會話構建高效購物車系統的步驟包括:1)理解會話的定義與作用,會話是服務器端的存儲機制,用於跨請求維護用戶狀態;2)實現基本的會話管理,如添加商品到購物車;3)擴展到高級用法,支持商品數量管理和刪除;4)優化性能和安全性,通過持久化會話數據和使用安全的會話標識符。

本文討論了PHP中的crypt()和password_hash()的差異,以進行密碼哈希,重點介紹其實施,安全性和對現代Web應用程序的適用性。

文章討論了通過輸入驗證,輸出編碼以及使用OWASP ESAPI和HTML淨化器之類的工具來防止PHP中的跨站點腳本(XSS)。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Dreamweaver CS6
視覺化網頁開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境