如何在URL中传递'&'符号内部值?

lis*_*aro 5 php url encoding

我将查询传递给我的搜索结果页面,其中包含变量:?s=.

我正在测试网站,我发现比查询中有&符号的时候,当我尝试检索时,$_GET['s']它会在&符号中被剪切.

我尝试过&并将其转换为%26并且我仍然遇到同样的问题.

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

编辑:

我指出我尝试将其编码为%26它仍然无法正常工作.

当我得到时,我一直urlencode()在试着?s=pizza%26pastaprint_r($_GET)

Array ( [s] => pizza [pasta] => )
Run Code Online (Sandbox Code Playgroud)

编辑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]
Run Code Online (Sandbox Code Playgroud)

Lei*_*igh 15

编码amersand(&)的url %26是执行此操作的正确方法.

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

$_GET['var1'] = 'this&that';
$_GET['var2'] = 'other';
Run Code Online (Sandbox Code Playgroud)

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

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

string(9) "one%26two"
Run Code Online (Sandbox Code Playgroud)