php解碼url
1. phpurlencode()與urldecode()函數字元編碼原理詳解
PHP中的urlencode與urldecode函數字元編碼原理
一、答案概述
在PHP中,`urlencode`函數用於對URL進行編碼,以便將其中的特殊字元轉換為適合傳輸的格式。而`urldecode`函數則用於對已經經過URL編碼的數據進行解碼,恢復其原始狀態。這兩個函數主要基於ASCII碼和UTF-8編碼標准進行操作。
二、urlencode函數原理
`urlencode`函數會將字元串中的非標准ASCII字元轉換為對應的百分比編碼。這種編碼方式通過將字元的ASCII碼值轉換為十六進製表示,並在前面加上百分號來實現。例如,空格字元在URL中不能直接傳輸,因此會被轉換為"%20"。其他特殊字元如!@#$%^&*等,也會遵循相同的轉換規則。這樣做的主要目的是確保URL在傳輸過程中的穩定性和兼容性。
三、urldecode函數原理
與`urlencode`相反,`urldecode`函數的作用是將經過百分比編碼的URL字元串還原為原始狀態。它通過識別百分比編碼格式並轉換回相應的字元來實現解碼。例如,"%20"會被解碼回空格字元。這個函數能夠解析大多數標準的百分比編碼序列,恢復URL中的原始數據。
四、字元編碼的重要性
在Web開發中,字元編碼的正確性對於確保數據的正確傳輸和顯示至關重要。特別是在處理包含特殊字元或非英文字元的URL時,`urlencode`和`urldecode`函數能夠確保數據的正確編碼和解碼,避免因字元問題導致的錯誤或數據丟失。因此,了解這兩個函數的編碼原理對於Web開發者來說是非常必要的。
總結來說,`urlencode`和`urldecode`是PHP中處理URL編碼和解碼的常用函數。它們基於ASCII碼和UTF-8編碼標准,確保URL在傳輸過程中的穩定性和兼容性。了解這兩個函數的原理對於處理Web開發中遇到的字元編碼問題至關重要。
如果參數名和值全部是已知的,那麼做一個映射表就可以了。
如果參數的值涉及用戶提交的內容,對於過長的內容,最好使用POST,並開啟Gzip壓縮。
關於URL的長度:
1,普通用戶很少通過修改url來實現跳轉
2,太短的參數名稱就很難理解含義,比如content如果縮短成c,你知道這代表什麼意思么?
3,如果說為了便於保存和分享,那麼可以考慮short url的處理方式
4,url的長度對性能的影響微乎其微,除非是超長文本,那就是程序設計的問題了
5,如果說刻意追求極短的url,還要進行壓縮和解壓縮步驟,真的有點畫蛇添足了
3. 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;
}
?>
4. php怎麼解碼js編碼過的url
要看js怎麼處理的 網路下url解碼 里邊的應用。或許你有幫助
5. PHP url解碼後中文亂碼 GBK
xml文件保存的是什麼編碼?最好將xml編碼也保存和伺服器編碼一致。
6. 中文url編碼、base64編碼,PHP解碼中文部分亂碼
如果兩端伺服器頁面使用的編碼不一致,就會導致亂碼
如你所說,對方伺服器發來的是GBK編碼的內容,如果你本地PHP用的編碼不是GBK就會是亂碼
2種解決方案:
將頁面編碼更改為GBK(可以通過header('Content-Type:text/html charset=gbk');)
將GBK編碼轉為當期頁面編碼(假設當前頁面是utf-8),可以使用iconv('gbk','utf-8',$content);其中$content是你經過urldecode、base64解碼後的字元串