【发布时间】:2012-08-02 18:38:09
【问题描述】:
CodeIgniter 的 URI 段系统有一个奇怪的问题。
当我有这个网址时:
http://www.mywebsite.com/forums/category_name/forum_name/topic_name..(是的,名字有两个点)
现在我在 PHP 中执行此操作:
$topic = $this->uri->segment(4);
>>> echo $topic: 'topic_name..'
这非常有效。但奇怪的是……当我像这样对 URL 附加回复时:
http://www.mywebsite.com/forums/category_name/forum_name/topic_name../reply
现在我再次编写 PHP 代码:
$topic = $this->uri->segment(4);
>>> echo $topic: 'topic_name '
如您所见,它突然将我的“..”替换为“”(一个空格,为什么连两个都不行?)。
有没有人知道当我在一个带点(“.”)之后添加一个段时,URI 段方法是否可能会清理某些内容。奇怪的是,当我手动修复带有空格的 URL 时,它又可以工作了,因为在 trim() 之后它仍然有“..”的左边,这次 CodeIgniter 似乎没有碰到它们:
http://www.mywebsite.com/forums/category_name/forum_name/topic_name..%20/reply
$topic = $this->uri->segment(4);
> echo $topic: 'topic_name.. '
>>> echo trim($topic): 'topic_name..'
【问题讨论】:
-
为什么决定在 url 中使用点?一个可能的选择是短网址
-
好吧,我正在使用漂亮的 URL。到目前为止效果很好。我似乎用替代字符覆盖了大多数非法字符。 URL 应该允许点,所以我只是想弄清楚 CodeIgniter 在这里做错了什么。
标签: php codeigniter uri segment