URL编码

林继 PHP 技术 9,641 共写了1202个字 (2006-10-16 16:08:20) 没有评论 打印 扫描二维码 百度已收录
  1. <?php 
  2.  
  3. $abc = urlencode(办公工具); 
  4.  
  5. $abc1 = rawurlencode(办公工具); 
  6.  
  7. echo "<a href="$abc" title="信息"><span class="oculto">" ."abc </a><br/>"; 
  8.  
  9. echo "<a href="$abc1" title="信息"><span class="oculto">" ."abc </a><br/>"; 
  10.  
  11. echo htmlentities('<a href="'.$abc.'">'.'</a>'); 
  12.  
  13. ?>

效果代码:<a href="%B0%EC%B9%AB%B9%A4%BE%DF"></a>
在有些服务器上会出错,错误如下:

Forbidden
You don't have permission to access /°ì¹«¹¤¾ß on this server.

在链接里不能有 onclick="window.open(this.href, '_blank'); return false"  ,也就是在新的窗口里打开链接。否则会出错,无法访问相对应的文件。

rawurlencode
(PHP 3, PHP 4, PHP 5)

rawurlencode — 按照 RFC 1738 对 URL 进行编码

描述

string rawurlencode ( string str )

返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。这是在 RFC 1738 中描述的编码,是为了保护原义字符以免其被解释为特殊的 URL 定界符,同时保护 URL 格式以免其被传输媒体(像一些邮件系统)使用字符转换时弄乱。

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() 示例

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

注意:小心与 HTML 实体相匹配的变量。像 &amp、&copy 和 &pound 都将被浏览器解析,并使用实际实体替代所期待的变量名。这是明显的混乱,W3C 已经告诫人们好几年了。参考地址:http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2 PHP 通过 arg_separator .ini 指令,支持将参数分割符变成 W3C 所建议的分号。不幸的是大多数用户代理并不发送分号分隔符格式的表单数据。较为简单的解决办法是使用 & 代替 & 作为分隔符。你不需要为此修改 PHP 的 arg_separator。让它仍为 &,而仅使用 htmlentities(urlencode($data)) 对你的 URL 进行编码。

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

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

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

< >