自动为urlencoded网址添加尾部斜杠

时间:2010-09-30 12:03:28

标签: 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>");

第一个链接添加了一个尾部斜杠(这会导致我出现问题) 第二个链接没有。

任何人都可以帮我理解原因。 很明显它似乎与urlencode有关,但我找不到什么。

由于 ç

3 个答案:

答案 0 :(得分:2)

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

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

实施例

$query = 'hello how are you?';

echo 'http://example.com/?q=' . urlencode($query);
// Ouputs http://example.com/?q=hello+how+are+you%3F

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

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

另外,当我尝试使用您的示例代码时,我确实获得了一个traling斜线,事实上我已经

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

答案 1 :(得分:1)

  

string urlencode(string $ str)

     

此功能很方便   将字符串编码为在a中使用   查询网址的一部分,方便   将变量传递给下一个的方法   页。

您的urlencode未正确使用。

另外,echo通常不会()echo "<a href='http [...]</a>";

答案 2 :(得分:1)

您应该只使用urlencode()参数 !例如:

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

您可以使用此功能将网址等传递到您的网址。