我目前正在开发一个内置于 codeigniter 的项目。我正在尝试d/m/Y
在 url 中发送日期,例如www.mydomain.com/guwahati-project-starting-12/12/2013
。但是如果我想提取控制器名称
$news_title = $this->uri->segment(1);
以上$news_title
只会提取到guwahati-project-starting-12
. /
除了替换之外,有什么方法可以提取完整的字符串-
?
我目前正在开发一个内置于 codeigniter 的项目。我正在尝试d/m/Y
在 url 中发送日期,例如www.mydomain.com/guwahati-project-starting-12/12/2013
。但是如果我想提取控制器名称
$news_title = $this->uri->segment(1);
以上$news_title
只会提取到guwahati-project-starting-12
. /
除了替换之外,有什么方法可以提取完整的字符串-
?
如果您的控制器名称必须包含日期(我假设您的完整控制器名称是guwahati-project-starting-12/12/2013
),那么我的建议是切换到 using dd-mm-yyyy
,因为您的日期格式会导致 codeigniters uri helper 出现问题。
如果您必须使用,dd/mm/yyyy
那么您可以使用$this->uri->uri_string()
来获取完整的 uri,然后自己处理分段。
使用 PHP 的 urlencode 或 rawurlencode 函数可能会起作用。此外,在位于 application/config 文件夹中的 config.php 文件中,您可能需要按如下方式对其进行编辑。
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_,()&\/-';
确保在其中添加“/”。
为什么不使用 urlencode ? http://php.net/manual/en/function.urlencode.php
然后当你想加载日期只是 urldecode http://php.net/manual/ru/function.urldecode.php
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 段你的年
另一种选择,我认为这是一种矫枉过正但安全且对 url 友好的选项,它正在使用加密和解密它。哈希值。像 youtube 和 bitly 一样。
像这样的链接
www.mydomain.com/guwahati-project-starting-12/12/2013
可以做成
www.mydomain.com/guwahati-project-starting/hjDm
您可以轻松处理参数。只是不要忘记将日期投射为int