urlencode

(PHP 3, PHP 4, PHP 5)

urlencode -- 編碼 URL 字串

描述

string urlencode ( string str )

返回字串,此字串中除了 -_. 之外的所有非字母數字字元都將被置換成百分號(%)後跟兩位十六進位數,空格則編碼為加號(+)。此編碼與 WWW 表單 POST 資料的編碼模式是一樣的,同時與 application/x-www-form-urlencoded 的媒體類型編碼模式一樣。由於歷史原因,此編碼在將空格編碼為加號(+)方面與 RFC1738 編碼(參見 rawurlencode())不同。此函數便於將字串編碼並將其用於 URL 的請求部分,同時它還便於將變量傳遞給下一頁:

例子 1. urlencode() 示例

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

注意:小心與 HTML 實體相符合的變量。像 &amp、&copy 和 &pound 都將被瀏覽器解析,並使用實際實體替代所期待的變量名。這是明顯的混亂,W3C 已經告誡人們好幾年了。參考位址:http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2 PHP 通過 arg_separator .ini 指令,支援將參數分割符變成 W3C 所建議的分號。不幸的是大多數會員代理並不傳送分號分隔設定格式的表單資料。較為簡單的解決辦法是使用 &amp; 代替 & 作為分隔設定。你不需要為此修改 PHP 的 arg_separator。讓它仍為 &,而僅使用 htmlentities(urlencode($data)) 對你的 URL 進行編碼。

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

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

參見 urldecode()htmlentities()rawurldecode()rawurlencode()