Php 自动向URL编码URL添加尾部斜杠

Php 自动向URL编码URL添加尾部斜杠,php,hyperlink,urlencode,Php,Hyperlink,Urlencode,我对以下几点感到非常困惑: echo("<a href='http://".urlencode("www.test.com/test.php?x=1&y=2")."'>test</a><br>"); echo("<a href='http://"."www.test.com/test.php?x=1&y=2"."'>test</a>"); echo(”); 回声(“”); 第一个链接添加了一个尾随斜杠(这给我带来了

我对以下几点感到非常困惑:

echo("<a href='http://".urlencode("www.test.com/test.php?x=1&y=2")."'>test</a><br>");

echo("<a href='http://"."www.test.com/test.php?x=1&y=2"."'>test</a>");
echo(
”); 回声(“”);
第一个链接添加了一个尾随斜杠(这给我带来了问题) 第二个链接没有

谁能帮我理解为什么。 很明显,这似乎与urlencode有关,但我不知道是什么

谢谢
c

您不应该使用
urlencode()
来回显URL,除非它们包含一些非标准字符

提供的示例不包含任何异常

例子 请参阅,我之所以使用它,是因为
$query
变量可能包含空格、问号等。我不能使用问号,因为它表示查询字符串的开头,例如
index.php?page=1

事实上,这个例子最好只是输出,而不是echo

另外,当我尝试你的示例代码时,我没有得到一个traling斜杠,事实上我得到了一个traling斜杠

<a href='http://www.test.com%2Ftest.php%3Fx%3D1%26y%3D2'>test</a>

字符串urlencode(字符串$str)

此功能在以下情况下非常方便: 将字符串编码为用于 查询URL的一部分,方便 将变量传递给下一个 页面

您的
urlencode
未在您的案例中正确使用


另外,
echo
通常不附带
()
它应该是
echo”您应该仅对参数使用
urlencode()

echo 'http://example.com/index.php?some_link='.urlencode('some value containing special chars like whitespace');

您可以使用它将URL等传递到您的URL。

正确,因为
echo
是一种语言构造,而不是函数。不要感谢C的PHP!:p(尽管从技术上讲您可以).谢谢大家,我现在从大家所说的和一些测试中看到,当服务器看到域级url时,它显然是在添加一个尾随斜杠。当我对整个url进行编码时(我应该更好地阅读iInstruments),我隐藏了一个事实,即url是一个文件级请求,通常不会添加尾随斜杠。谢谢。
echo 'http://example.com/index.php?some_link='.urlencode('some value containing special chars like whitespace');