gpt4 book ai didi

php - 如何在 URL 中传递值内的 '&' 符号?

转载 作者:可可西里 更新时间:2023-11-01 13:36:30 25 4
gpt4 key购买 nike

我使用变量将查询传递到我的搜索结果页面:?s=

我正在测试该网站,我发现当查询中包含 & 符号时,当我尝试检索 $_GET['s'] 时,它会得到切入 & 符号。

我尝试使用 & 并将其转换为 %26 但我仍然遇到同样的问题。

如何对它们进行编码以在 URL 中传递它们?

编辑:

我指出,我尝试将其编码为 %26,但它仍然无效。

我尝试使用 urlencode()?s=pizza%26pasta 当我 print_r($_GET) 我得到:

Array ( [s] => pizza [pasta] => )

编辑 2:

我刚刚发现问题实际上与 .htaccess 有关,它似乎转换了 '&something=' 中的 '&something'。不知道如何在 htaccess 中修复它。

这是我的 .htaccess 文件:

RewriteEngine On
RewriteBase /

# remove www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]

# rewrite to action
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([^/]+)/?$ /a/?s=$1 [L,QSA]

最佳答案

将 amersand (&) 编码为 %26 的 Url 是执行此操作的正确方法。

使用 http://yoursite.com?var1=this%26that&var2=other 将导致您的 $_GET 超全局数组有两个变量

$_GET['var1'] = 'this&that';
$_GET['var2'] = 'other';

您可以使用函数 urlencode自动编码所有需要编码的字符。这些通常是用于构成 url 组成部分的字符。即 At 符号 (@)、冒号 (:)、问号 (?) 等。

var_dump(urlencode('one&two'));

string(9) "one%26two"

关于php - 如何在 URL 中传递值内的 '&' 符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11771995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com