urlencode

(PHP 4, PHP 5, PHP 7, PHP 8)

urlencode編碼 URL 字符串

說明

urlencode(string $str): string

此函數(shù)便于將字符串編碼并將其用于 URL 的請求部分,同時它還便于將變量傳遞給下一頁。

參數(shù)

str

要編碼的字符串。

返回值

返回字符串,此字符串中除了 -_. 之外的所有非字母數(shù)字字符都將被替換成百分號(%)后跟兩位十六進制數(shù),空格則編碼為加號(+)。此編碼與 WWW 表單 POST 數(shù)據(jù)的編碼方式是一樣的,同時與 application/x-www-form-urlencoded 的媒體類型編碼方式一樣。由于歷史原因,此編碼在將空格編碼為加號(+)方面與 ? RFC3986 編碼(參見 rawurlencode())不同。

范例

示例 #1 urlencode() 例子

<?php
echo '<a href="mycgi?foo='urlencode($userinput), '">';
?>

示例 #2 urlencode()htmlentities() 例子

<?php
$query_string 
'foo=' urlencode($foo) . '&bar=' urlencode($bar);
echo 
'<a href="mycgi?' htmlentities($query_string) . '">';
?>

注釋

注意:

注意:小心與 HTML 實體相匹配的變量。像 &amp、&copy 和 &pound 都將被瀏覽器解析,并使用實際實體替代所期待的變量名。這是明顯的混亂,W3C 已經(jīng)告誡人們好幾年了。參考地址:? http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2。

PHP 通過 arg_separator.ini 指令,支持將參數(shù)分割符變成 W3C 所建議的分號。不幸的是大多數(shù)用戶代理并不發(fā)送分號分隔符格式的表單數(shù)據(jù)。較為簡單的解決辦法是使用 &amp; 代替 & 作為分隔符。你不需要為此修改 PHP 的 arg_separator。讓它仍為 &,而僅使用 htmlentities()htmlspecialchars() 對你的 URL 進行編碼。

參見