<?
$xm="1?x=1";
if($_GET["x"]=="1" || $_GET["x"]=='$xm'){ ?>
String Works
<? } ?>
基本上读取网址:我该如何编写这个PHP字符串,它内部有一个等号?
http://site.com/shop/category/product?x=1?x=1
当表单提交会发生这种情况。我没有访问它更改为:
http://site.com/shop/category/product?x=1&x2=1
<?
$xm="1?x=1";
if($_GET["x"]=="1" || $_GET["x"]=='$xm'){ ?>
String Works
<? } ?>
基本上读取网址:我该如何编写这个PHP字符串,它内部有一个等号?
http://site.com/shop/category/product?x=1?x=1
当表单提交会发生这种情况。我没有访问它更改为:
http://site.com/shop/category/product?x=1&x2=1
将其更改为:
<?
$xm="1?x=1";
if($_GET["x"]=="1" || $_GET["x"]=="{$xm}"){ ?>
String Works
<? } ?>
使用http_build_query,每当你想建立联系
我今天有同样的问题! – amitchhajer
OP想要拆分该网址,以便重建。你在谈论如何画一面墙,而OP正在问如何建造墙壁。 –
你有什么应该工作,以改变该'$xm'
将不计算"1?x=1"
:
if (isset($_GET['x']) && ($_GET['x'] == 1 || $_GET['x'] == $xm)) {
echo 'string works';
}
如果参数始终为数字,那么也可以在比较之前写入以将$_GET['x']
转换为整数:
if (isset($_GET['x']) && $_GET['x'] == 1) {
echo 'string works';
}
这是可行的,因为'1?x=1' == 1
,但'1?x=2' == 1
......如果这不是所需的行为,请告诉我。
等号在URL上下文的特殊含义。他们需要被编码为像对待文本值或者与urnencode()或rawurlencode()或Base64编码
这不是问题所在。 –
如果URL看起来像...product?x=1?x=1
,该$_GET
阵列将是这样的:
array(1) {
["x"] => string(5) "1?x=1"
}
所以你的条件只需要看起来像:
if ($_GET["x"] == '1?x=1')
你的问题很简单,就是你引用变量$xm
在单引号,字面导致字符串“$ XM”。
现在显然,这是一个相当破碎的URL。如果您不知道?x=1
会在其中出现多少次,那么很难与任何常数进行比较。
使用Preg_Replace - 一个字符串中不能有等号。文字或数字。 BONKERS。 – M1th
改为使用'http_build_query()'。 http://php.net/manual/en/function.http-build-query.php – Brad
要更改URI,您必须启动重定向命令。看一下http://es.php.net/manual/en/function.header.php – Lobo