php解析url
1. php中使用parse_url()對網址進行解析的實現代碼(parse_url詳解)
PHP
解析
URL函數:
parse_url詳解
parse_url
—
解析
URL,返回其組成部分
說明
array
parse_url
(
string
$url
)
本函數解析一個
URL
並返回一個關聯數組,包含在
URL
中出現的各種組成部分。
本函數不是用來驗證給定
URL
的合法性的,只是將其分解為下面列出的部分。不完整的
URL
也被接受,parse_url()
會嘗試盡量正確地將其解析。
參數
url
要解析的
URL
返回值
對嚴重不合格的
URL,parse_url()
可能會返回
FALSE
並發出
E_WARNING。否則會返回一個關聯數組,其組成部分為(至少有一個):
scheme
–
如
http
host
port
user
pass
path
query
–
在問號
?
之後
fragment
–
在散列符號
#
之後
範例
parse_url()
例子
復制代碼
代碼如下:
<?php
$url
=
'http://username:password@hostname/path?arg=value#anchor';
print_r(parse_url($url));
?>
以上常式會輸出:
Array
(
[scheme]
=>
http
[host]
=>
hostname
[user]
=>
username
[pass]
=>
password
[path]
=>
/path
[query]
=>
arg=value
[fragment]
=>
anchor
)
常常我們會傳送一大串網址,然後要解析的話,只能不斷地去切token來解析。但是在php中,一定要學會使用前人所寫過的函式,這樣開發速度才會快別人一截。當然,要解析網址的話,就得去找相關的指令,而今天要介紹的,就是php中的parse_url這個函式。
這個函式主要是用來解析網址,而首先先看一下這個函式原型,其官方描述如下:
mixed
parse_url
(
string
$url
[,
int
$component=
-1
]
)
而php官方舉了一個例子,而我將他擴充如下,以方便講解。
復制代碼
代碼如下:
<?php
$url
=
'http://username:password@hostname/path?arg1=value1&arg2=value2#anchor';
print_r(parse_url($url));
?>
首先,先看一下這個程式的輸出結果
Array
(
[scheme]
=>
http
[host]
=>
hostname
[user]
=>
username
[pass]
=>
password
[path]
=>
/path
[query]
=>
arg1=value1&arg2=value2
[fragment]
=>
anchor
)
其中,scheme是指他走的路線,而host則是站台網址,user則是使用者名稱,pass則是密碼,path則是路徑,query則是參數,fragment則是錨點。
而在「$component」的部份,則是有以下的參數可供傳遞。
PHP_URL_SCHEME
PHP_URL_HOST
PHP_URL_USER
PHP_URL_PASS
PHP_URL_PATH
PHP_URL_QUERY
PHP_URL_FRAGMENT
而這幾個參數則分別代表了Array中的scheme、host、user、pass、path、query和fragment。
同樣,舉例來說,如果使用PHP_URL_PATH和PHP_URL_QUERY來說,以下為他的示範。
復制代碼
代碼如下:
<?php
$url
=
'http://username:password@hostname/path?arg1=value1&arg2=value2#anchor';
echo
nl2br(parse_url($url,
PHP_URL_PATH)."\n");
echo
nl2br(parse_url($url,
PHP_URL_QUERY)."\n");
?>
而輸出結果將如下:
/path
arg1=value1&arg2=value2
2. 如何通過php獲取提交頁面的URL
在PHP的開發中我們經常會通過網址URL向另一個網頁傳遞參數的問題。在這個過程中我們首先需要獲取到當前頁面的URL,然後將URL中各個參數的值保存到變數中。整個過程較為簡單,主要涉及到$_SERVER的用法。
1、$_server['http_host'],作用:獲取網址域名,如(www.5ibobo.com,這是波波的一個博客,暫且做例子吧)。
2、$_SERVER["PHP_SELF"],作用:獲取網頁地址,如(/code/445.html)。
3、$_SERVER["QUERY_STRING"],作用:獲取網址URL參數,待會我們會在實例中用到。
4、$_SERVER["HTTP_REFERER"],作用:獲取用戶的代理。
3. 如何通過php獲取提交頁面的URL
在PHP的開發中我們經常會通過網址URL向另一個網頁傳遞參數的問題。在這個過程中我們首先需要獲取到當前頁面的URL,然後將URL中各個參數的值保存到變數中。整個過程較為簡單,主要涉及到$_SERVER的用法。
1、$_server['http_host'],作用:獲取網址域名,如(www.5ibobo.com,這是波波的一個博客,暫且做例子吧)。
2、$_SERVER["PHP_SELF"],作用:獲取網頁地址,如(/code/445.html)。
3、$_SERVER["QUERY_STRING"],作用:獲取網址URL參數,待會我們會在實例中用到。
4、$_SERVER["HTTP_REFERER"],作用:獲取用戶的代理。
4. 100分求PHP獲取圖中鏈接URL中的ID數字值。
對於 url ,可以使用 parse_url 函數來解析獲取相應的部分,比如 host、path、query 等。按照你題目的要求,需要獲取的是 query 部分,這部分又可以使用 parse_str 函數來解析,然後獲取需要的參數,比如你這里的 id。
這里有一個函數,用於獲取一個鏈接的URL的query部分,並解析成數組,可以很方便的通過鍵名來獲取參數值。
//解析url,數組的形式返回url的query部分
functiongetQuery($url='')
{
$url=trim($url);
if($url=='')
returnfalse;
//解析url,獲取query部分,它是一個字元串
$query=parse_url($url,信則PHP_URL_QUERY);
if($query===null)
returnnull;
//解析query部分,將會保存到一個數組
parse_str($query,$params);
return$params;
}
//使橡瞎用舉例
$url='...?id=24498704247';//你要解析的那個url
$paras=getQuery($url);//array('id'=>24498704247)
echo梁坦空$paras['id'];//24498704247
5. php打開URL的幾種方法
PHP中打開URL地址的幾種方法總結,這里的函數主要用於小偷採集等函數。
1:用file_get_contents
以get方式獲取內容
復制代碼代碼如下:
<?php
$url='http://www..com/';
$html=file_get_contents($url);
//print_r($http_response_header);
ec($html);
printhr();
printarr($http_response_header);
printhr();
?>
示例代碼2:用fopen打開url,
以get方式獲取內容
復制代碼代碼如下:
<?
$fp=fopen($url,'r');
printarr(stream_get_meta_data($fp));
printhr();
while(!feof($fp)){
$result.=fgets($fp,1024);
}
echo"urlbody:$result";
printhr();
fclose($fp);
?>
示例代碼3:用file_get_contents函數,以post方式獲取url
復制代碼代碼如下:
<?php
$data=array('foo'=>
'bar');
$data=http_build_query($data);
$opts=array(
'http'
=>array(
'method'=>'POST',
'header'=>"Content-type:
application/x-www-form-urlencoded".
"Content-Length:".strlen($data).
"",
'content'=>$data
),
);
$context=
stream_context_create($opts);
$html=
file_get_contents('http://localhost/e/admin/test.html',false,$context);
echo$html;
?>
示例代碼4:用fsockopen函數打開url,以get方式獲取完整的數據,包括header和body
復制代碼代碼如下:
<?
functionget_url
($url,$cookie=false){
$url=parse_url($url);
$query=
$url[path]."?".$url[query];
ec("Query:".$query);
$fp=fsockopen(
$url[host],$url[port]?$url[port]:80,$errno,$errstr,30);
if(!$fp){
returnfalse;
}else{
$request="GET$queryHTTP/1.1";
$request.="Host:$url[host]";
$request.="Connection:Close";
if($cookie)$request.="Cookie:$cookie ";
$request.="";
fwrite($fp,$request);
while(!@feof($fp)){
$result.=@fgets($fp,
1024);
}
fclose($fp);
return$result;
}
}
//獲取url的html部分,去掉header
functionGetUrlHTML($url,$cookie=false){
$rowdata=get_url($url,$cookie);
if($rowdata)
{
$body=
stristr($rowdata,"");
$body=substr($body,4,strlen($body));
return$body;
}
returnfalse;
}
?>
6. php獲取url參數
1、在當前網頁echo出變數$_SERVER['HTTP_HOST']即可獲取域名或主機地址。
7. php,如何把url字元串裡面的參數解析出來
//url中傳遞的參數,get形式$userid = @$_GET['userid'];//你也可以列印出所有的Get參數, 可以更明白其中的奧妙print_r($_GET); //如果是表單/post提交,則用$_POST , 用法和$_GET類似
8. thinkphp 取得url參數
一般情況下URL中的參數就是通過GET方法獲取,但是由於PATHINFO的特殊性,URL地址最終需要被解析才能轉換成GET參數,ThinkPHP對URL是按照一定的規則進行解析的,除非你使用了URL路由規則,如果你對URL做了特別的定製,但是又不想使用URL路由,那麼可以使用框架提供的URL參數獲取方法直接獲取,
例如,我們訪問一個如下的網址:
http://serverName/News/archive/2012/01/15
正常情況下,只有通過路由才能解析後面的2012/01/15,現在我們可以直接在News控制器的archive操作方法裡面直接使用:
Class NewsAction extends Action {
Public function archive(){
$year = $_GET["_URL_"][2];
$month = $_GET["_URL_"][3];
$day = $_GET["_URL_"][4];
}
}
3.0版開始支持URL地址中的PATH_INFO方式的URL的參數獲取方式,需要配置
VAR_URL_PARAMS參數,默認值是:
'VAR_URL_PARAMS' => '_URL_', // PATHINFO URL參數變數
9. PHP 怎麼解析遠程URL 傳過來json ,在前端顯示出來
比如:
$jsonData = '{"謹輪念ErrorCode":0,"Success":true,"ErrMessage":"","HasData":true,"Records":[{"Time":"2014-08-19 07:47:10","Location":"廣東省河源市G25黃田至義合高祥困速路段","Reason":"駕駛中型以上載客載貨汽車、危險物品運輸車輛以外的其他機動車行駛超過規定時速10%未達20%的","count"桐銷:"150","status":"0","department":"河源市公安局交通警察支隊高速公路二大隊","Degree":"3","Code":"1352A","Archive":"4416307900262638","Telephone":null,"Excutelocation":null,"Excutedepartment":null,"Category":"","Latefine":"0","Punishmentaccording":null,"Illegalentry":null,"Locationid":4416,"LocationName":"廣東河源","DataSourceID":9992,"RecordType":"實時數據","Poundage":"25","CanProcess":"1","UniqueCode":"","SecondaryUniqueCode":"1993287","DegreePoundage":"0","Other":"","CanprocessMsg":"","CooperPoundge":"25","ActivePoundge":"-1","CanUsePackage":"0"}],"ResultType":"實時數據","LastSearchTime":"","PackageName":"","RemainCount":0,"Other":""}
';
$data = json_decode($jsonData,TRUE);
var_mp($data);
這個$data 是一個數組,輸出數組就簡單了(foreach)
10. php獲取url參數程序代碼總結
parse_url函數
我們先來了解一下parse_url函數,官方解決
說明
mixed
parse_url
(
string
$url
[,
int
$component
=
-1
]
)
本函數解析一個
URL
並返回一個關聯數組,包含在
URL
中出現的各種組成部分。
本函數不是用來驗證給定
URL
的合法性的,只是將其分解為下面列出的部分。不完整的
URL
也被接受,
parse_url()
會嘗試盡量正確地將其解析。
要解析的
URL。無效字元將使用
_
來替換。
實例
代碼如下
$url
=
"http://www.45it.net/welcome/";
$parts
=
parse_url($url);
print_r($parts);
array
(
[scheme]
=>
http
[host]
=>
www.45it.net
[path]
=>
/welcome/
)
也可以自己去寫一個演算法!如下
代碼如下
function
getParams()
{
$url
=
'/index.php?_p=index&_a=show&x=12&y=23';
$refer_url
=
parse_url($url);
$params
=
$refer_url['query'];
$arr
=
array();
if(!empty($params))
{
$paramsArr
=
explode('&',$params);
foreach($paramsArr
as
$k=>$v)
{
$a
=
explode('=',$v);
$arr[$a[0]]
=
$a[1];
}
}
return
$arr;
}
調用方法
代碼如下
$arr
=
getParams();
print_r($arr);
結果
結果:
Array
(
[_p]
=>
index
[_a]
=>
show
[x]
=>
12
[y]
=>
23
)