[英]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.