Warning: file_put_contents(/datas/wwwroot/jiajiahui/core/caches/caches_template/2/default/show.php): failed to open stream: Permission denied in /datas/wwwroot/jiajiahui/core/libraries/classes/template_cache.class.php on line 55

Warning: chmod(): Operation not permitted in /datas/wwwroot/jiajiahui/core/libraries/classes/template_cache.class.php on line 56
url解码破折号和下划线 - 源码之家

url解码破折号和下划线

问题描述:

我正在尝试为Ajax站点推荐一个人类可读的URL结构。我喜欢用短划线或下划线来表示多个单词。url解码破折号和下划线

因此,例如:http://www.mysite/Kent-Smith/

面临的挑战是,我们已经在我们被认为可能有两种划线或下划线URL过滤系统一束多字的关键字。 (我想我们系统中的一些金融代码使用下划线)。

我卡在解码方面的东西?我必须使用%20吗?

谢谢!

+0

继续使用 - 和_你的网址(你是真正问,%20是用于编码的空间) – Lyke 2011-05-19 20:14:07

+0

我想我的问题提炼出来,如果我们使用破折号作为我们的分隔符,然后我们想要制作一个url的项目之一是连字符名称'smith-jones'什么会发生? – dan 2011-05-19 20:24:56

我想你会做的是:

  1. 有指定的“逃离”字符 - \(反斜杠)是常见的这种
  2. 编码时,先用\\,然后所有替换所有\-\-,然后用破折号填充所有空格。 (顺序很重要,在这里!)
  3. 在解码时,先更换未前面有\用空间中的所有短划线,那么所有\--那么所有\\\

例如:说你的名字是Jo\hn Smith-Jones(我知道这是不可能有人在他们的名字中间的反斜杠,但...)

然后你编码:与\\取代\Jo\\hn Smith-Jones

现在用\-替换-Jo\\hn Smith\-Jones

现在用破折号代替空格:Joh\\n-Smith\-Jones(最终结果)

这确实会导致在编码结果中出现奇怪的反斜杠,但只有在第一位存在标点符号时才会出现奇怪的反斜杠。

等等,还有一件事我只是想到了。反斜杠可能不适用于URL,因此可能使用不同的字符 - 过程仍然完全相同,只需用其他任何替换反斜杠即可。

快乐黑客!

我建议你使用空格,编码它们为+的URL,并留下连字符不变:

http://example.com/John+Smith-Jones/