【问题标题】:Sending date( in d/m/Y format) in url in codeigniter在codeigniter的url中发送日期(d/m/Y格式)
【发布时间】:2013-09-13 02:10:54
【问题描述】:
我目前正在开发一个内置于 codeigniter 的项目。我正在尝试在 url 中以d/m/Y 发送日期,例如www.mydomain.com/guwahati-project-starting-12/12/2013。但是如果我想提取控制器名称
$news_title = $this->uri->segment(1);
上面的$news_title 只会提取到guwahati-project-starting-12。除了用- 替换/ 之外,有什么方法可以提取完整的字符串?
【问题讨论】:
标签:
php
codeigniter
url
controller
get
【解决方案1】:
如果您的控制器名称必须包含日期(我假设您的完整控制器名称是 guwahati-project-starting-12/12/2013),那么我的建议是切换到使用 dd-mm-yyyy ,因为您的日期格式会导致 codeigniters uri helper 出现问题。
如果您必须使用dd/mm/yyyy,那么您可以使用$this->uri->uri_string() 来获取完整的uri,然后自己处理分段。
【解决方案2】:
使用 PHP 的 urlencode 或 rawurlencode 函数可能会起作用。此外,在位于 application/config 文件夹中的 config.php 文件中,您可能需要按如下方式对其进行编辑。
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_,()&\/-';
确保在其中添加“/”。
【解决方案4】:
url_title() 函数在 URL Helper 中可用...只需加载它并通过此函数运行它。
此函数将过滤字符串中的字符并允许配置文件中定义的字符列表中的字符(您很可能不应该编辑)
---对不起,我的回答不完整---
很少有选项,1 是,为什么不使用多个细分...日期之间的“/”使其成为不同的细分。
www.mydomain.com/guwahati-project-starting-12/12/2013
作为 guwahati-project-starting-12 = 第 1 段,
12 段 2 和 2013 段 3。
这会失败,因为段 1 是类,而 2 是控制器...
尝试制作
www.mydomain.com/class/function/guwahati-project/12/12/2013
现在你有第 3 段你的标题,4 段你的日子,5 段你的月和 6 段你的年
【解决方案5】:
另一种选择,我认为这是一种矫枉过正但安全且网址友好的选项
正在使用加密和解密它。 HASHIDS。像 youtube 和 bitly 一样。
这样的链接
www.mydomain.com/guwahati-project-starting-12/12/2013
可以做到
www.mydomain.com/guwahati-project-starting/hjDm
您可以轻松处理参数。只是不要忘记将日期转换为int