【发布时间】:2011-07-08 15:01:13
【问题描述】:
在我的代码中,我创建了一个这样的链接:
$link = 'http://www.mydomain.com/'.urlencode($str).'/1';
我使用 url-rewriting 并且我的 htaccess 文件中的规则如下所示:
rewriteRule ^(.+)/(.*)$ index.php?var1=$1&var2=$2 [NC,L]
这段代码几乎适用于所有字符串。但有时,要编码的字符串包含“&”。 urlencode 函数对其进行了正确编码,但是当我在 php 中读取 $_GET 数组时,它看起来像这样(使用 $str = 'substring1&substring2'):
'var1' => 'substring1' (without "&")
'substring2' => '' (without "&")
'var2' => 1
我真的需要我的 var 中的“&”。有没有办法对该字符进行编码以使其工作?
另外,我真的不知道为什么,但有时我会收到一个禁止的 http 错误,其中一些字符串作为 var1 传递。显然,它们并没有什么特别之处,例如,“Décarie Square”就犯了这个错误。其他带有空格和“é”的字符串工作正常。
【问题讨论】:
-
看看这个页面 URL:标题说“PHP $_GET var with urlencode and “&” bug” .. 但是你看到 URL 中的那些特殊字符了吗?你也应该这样做。这样做是有原因的……这是最好的方法。
标签: php .htaccess url url-rewriting urlencode