我对以下内容感到非常困惑:
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有关,但我找不到什么。
由于 ç
答案 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');
您可以使用此功能将网址等传递到您的网址。