如何编写具有等号的PHP字符串?

时间:2012-09-04 15:58:18

标签: php html string url

<?
$xm="1?x=1";
if($_GET["x"]=="1" || $_GET["x"]=='$xm'){ ?>
String Works
<? } ?>

网址基本上是:

http://site.com/shop/category/product?x=1?x=1

提交表单时会发生这种情况。我无权将其更改为:

http://site.com/shop/category/product?x=1&x2=1

5 个答案:

答案 0 :(得分:1)

将其更改为:

<?
$xm="1?x=1";
if($_GET["x"]=="1" || $_GET["x"]=="{$xm}"){ ?>
String Works
<? } ?>

答案 1 :(得分:1)

如果网址看起来像...product?x=1?x=1,则$_GET数组将如下所示:

array(1) {
    ["x"] => string(5) "1?x=1"
}

所以你的情况需要看起来像:

if ($_GET["x"] == '1?x=1')

你的问题只是你用单引号引用变量$xm,字面意思是字符串“$ xm”。

现在显然,这是一个相当破碎的网址。如果你不知道?x=1会发生多少次,那就很难与任何常数进行比较。

答案 2 :(得分:0)

您应该使用的内容,'$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 ...如果这不是理想的行为,请告诉我。

答案 3 :(得分:-2)

每当您想要构建链接时使用http_build_query

答案 4 :(得分:-2)

等号在url上下文中具有特殊含义。他们需要编码,以使用urnencode()或rawurlencode()或base64编码

将它们视为文字值