我从另一页的输入表单中将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']);
答案 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 & 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上调试代码,在那里尝试回显变量或在此处粘贴整个代码。
答案 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
我的结果相同
我希望这会有所帮助