在&符号后,回显php变量字符串

时间:2016-04-02 13:05:13

标签: php variables ampersand

我从另一页的输入表单中将s变量提交给page.php。

URL包含带符号的完整字符串,当我尝试回显变量时,字符串在符号后被切断。

形式:

<form action="page.php" method="get">

<input type="text" name="s" id ="s" />

</form>

变量是:

search & search

URL:

page.php?s=search+%26+search&var2=variable

变量回声为:

search

我试过了:

   echo htmlspecialchars($_GET['s']);
   echo htmlentities($_GET['s']);
   echo urldecode($_GET['s']);

4 个答案:

答案 0 :(得分:0)

您可以使用(至少)3种不同的方式来实现这一目标:

1 - urlencode():在你应该生成url的地方使用此函数来编码URL格式的字符串。

2 - 使用%26(不使用&#34; +&#34;);

3 - 使用$_SERVER['QUERY_STRING']:如果您只有一个参数,则可以通过这种方式获取所有query_string。

更新:

即:

$url = "page.php?s=".urlencode('search & search')."&var2=".urlencode('variable'); //or urlencode($variable)

然后使用:urldecode()来解析不同的$ _GETs。

答案 1 :(得分:0)

我假设你有类似的代码,

<a href="http://localhost/example/page.php?s=search+%26+search">

这种类型只会在您尝试回复它之后产生search

试试这种方式,

<a href="http://localhost/example/page.php?s=<?php echo urlencode("search+%26+search") ?>">

它是对网址的查询部分进行编码的便捷方式。

并尝试这个,官方php文档中的一个例子

<?php $query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
      echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>

有关详细信息,请参阅此内容。 http://php.net/manual/en/function.urlencode.php

答案 2 :(得分:0)

我刚试过你说的话,问题似乎不是网址的编码。

尝试使用此https://www.google.co.in/?q=search+%26+search,Google搜索search & searchpage.php上可能存在问题,您尝试回显该变量。

此外,为了证明google没有做任何特别的事情,我只创建了两个名为index.php和page.php的文件,结果与预期一致。

的index.php

<html>
    <body>
        <form action="1.php" method="get">
            <input type="text" name="s" id="s">
        </form>
    </body>
</html>

page.php文件

<?php
    echo $_GET['s'];
?>

输出:
   search & search

尝试在page.php上调试代码,在那里尝试回显变量或在此处粘贴整个代码。

答案 3 :(得分:0)

试试这个,虽然我在本地测试,这里是代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Problem</title>
  </head>
  <body>
    <form action="page.php" method="get">
      <input type="text" name="s" id ="s" />
      <input type="text" name="var2" id ="d" />
      <input type="submit" name="name" value="submit">
    </form>
  </body>
</html>

和page.php

<?php
if (isset($_GET['s'])) {
  echo $_GET['s'] .' '. $_GET['var2'];
}
?>

当您将其运行到浏览器时,它将显示两个输入表单和一个提交按钮。

输出

search & search variable

我也尝试粘贴网址

page.php?s=search+%26+search&var2=variable&name=submit

我的结果相同

我希望这会有所帮助