繁体   English   中英

回音符后的PHP可变字符串被切断

[英]echo php variable string cut off after ampersand

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

URL包含带有&符的完整字符串,当我尝试回显该变量时,该字符串在&符之后被截断。

形成:

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

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

</form>

变量是:

search & search

网址:

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

变量回显为:

search

我努力了:

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

您可以(至少)使用3种不同的方式来归档此文件:

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

2-使用%26 (不带“ +”号);

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

更新:

IE浏览器:

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

然后使用:urldecode()解析差异$ _GETs。

我假设您有类似的代码,

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

尝试回显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/zh/function.urlencode.php

我只是尝试了您说的内容,而问题似乎并不是url的编码。

试试看https://www.google.co.in/?q=search+%26+search ,谷歌搜索search & search ,在page.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上调试代码,尝试在其中回显变量或将整个代码粘贴到此处。

尽管我在本地测试,也可以尝试一下,这是代码

<!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

我得到相同的结果

我希望这会有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM