【问题标题】:How to preserve html character encodings in URL's如何在 URL 中保留 html 字符编码
【发布时间】:2016-05-09 04:13:07
【问题描述】:

所以我有这些通过 GET 验证输入 PHP 脚本的长 URL。

<?php
$given_url = $_GET['url'];
echo $given_url;
?>

假设我愿意 http://example.com/index.php?url=http://www.falstad.com/circuit/circuitjs.html?cct=%24+1+0.000005+10.200277308269968+33+5+43%0Ai+112+320+112+192+0+4%0Ai+416+192+416+320+0+6%0Ar+192+320+192+192+0+1%0Ar+208+192+320+192+0+2%0Ar+336+192+336+320+0+3%0Aw+112+192+192+192+0%0Aw+192+192+208+192+0%0Aw+320+192+336+192+0%0Aw+336+192+416+192+0%0Aw+416+320+336+320+0%0Aw+336+320+192+320+0%0Aw+192+320+112+320+0%0A

那我该如何让页面回显字面意思http://example.com/index.php?url=后面是什么?

正确地返回www.falstad.com/circuit/circuitjs.html?cct=$ 1 0.000005 10.200277308269968 33 5 43 i 112 320 112 192 0 4 i 416 192 416 320 0 6 r 192 320 192 192 0 1 r 208 192 320 192 0 2 r 336 192 336 320 0 3 w 112 192 192 192 0 w 192 192 208 192 0 w 320 192 336 192 0 w 336 192 416 192 0 w 416 320 336 320 0 w 336 320 192 320 0 w 192 320 112 320 0,好像它应该处理URL中的编码(?)字符..

【问题讨论】:

  • 你可以考虑使用 $_POST 而不是 $_GET
  • 请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 4.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work?

标签: php url get


【解决方案1】:

使用urlencode()

echo urlencode($given_url);

【讨论】:

  • 这将导致 www.falstad.com%2Fcircuit%2Fcircuitjs.htmlcct%3D%24+1+0.000005+10.200277308269968+33+5+43%0Ai+112+320+112+192+ 0+4%0Ai+416+192+416+320+0+6%0Ar+192+320+192+192+0+1%0Ar+208+192+320+192+0+2%0Ar+336+ 192+336+320+0+3%0Aw+112+192+192+192+0%0Aw+192+192+208+192+0%0Aw+320+192+336+192+0%0Aw+336+ 192+416+192+0%0Aw+416+320+336+320+0%0Aw+336+320+192+320+0%0Aw+192+320+112+320+0%0A 还是有区别的URL 的第一部分
【解决方案2】:

试试

<?php
  $given_url = $_GET["url"];
  $pieces = explode("?", $given_url);
  $part1 = $pieces[0];
  $part2 = urlencode($pieces[1]);
  $new_url = $part1.$part2;
  echo $new_url
?>

这里需要注意的是,我们假设没有另一个“?”字符串中的其他位置。

【讨论】:

  • 这仍然会导致 www.falstad.com/circuit/circuitjs.htmlcct=$ 1 0.000005 10.200277308269968 33 5 43 i 112 320 112 192 0 4 i 416 192 416 320 0 6 r 1922032 0 1个R 208 192 320 192 0 2 R 336 192 336 320 03瓦特112 192 192 1920瓦特192 192 208 1920瓦特320 192 336 1920瓦特336 192 416 1920瓦特416 320 336 3200瓦特336 320 192 320 0 w 192 320 112 320 0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 2012-04-07
  • 2013-11-08
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
相关资源
最近更新 更多