Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在CodeIgniter中修改URL_Php_Codeigniter_Hook - Fatal编程技术网

Php 在CodeIgniter中修改URL

Php 在CodeIgniter中修改URL,php,codeigniter,hook,Php,Codeigniter,Hook,我的应用程序根据产品的类别和名称生成各种URL。例如,要按类别浏览产品,url将是 localhost/category/Memory Cards 问题是空格被转换为%20s。如果Iurlencode或rawurlencode则空格将转换为+符号,但/也将转换为%xx等效项,从而导致url到控制器的映射无效 我需要用+符号而不是空格对我的所有URL进行编码。我需要一个助手。然而,我需要到处调用helper方法 我可以使用hooks修改HTML、扫描所有URL并将空格替换为+符号吗 我还需要将+

我的应用程序根据产品的类别和名称生成各种URL。例如,要按类别浏览产品,url将是

localhost/category/Memory Cards
问题是空格被转换为
%20
s。如果I
urlencode
rawurlencode
则空格将转换为
+
符号,但
/
也将转换为
%xx
等效项,从而导致url到控制器的映射无效

我需要用
+
符号而不是
空格对我的所有URL进行编码。我需要一个助手。然而,我需要到处调用helper方法

我可以使用
hooks
修改HTML、扫描所有URL并将
空格
替换为
+
符号吗

我还需要将
+
符号中的URL解码回
空格
。我怎么能这么做


如果你认为我的方法完全错了,那么什么才是合适的方法呢?

更可取的方法是在表中增加一个字段(我通常使用“slug”作为字段名),这是一个url友好的名称版本(小写,并用破折号/下划线/任何字符替换空格和奇怪的字符),只需确保它是唯一的,然后使用它来生成产品的URL,并确定请求是关于什么产品的

因此,您的url看起来像
localhost/category/memory cards


您可以使用生成slug

这样做的首选方法是在表中有一个额外的字段(我通常使用“slug”作为字段名),这是一个url友好的名称版本(小写,用破折号/下划线/任何字符替换空格和奇怪的字符),只要确保它是唯一的,然后使用它生成产品的URL,并确定请求涉及的产品

因此,您的url看起来像
localhost/category/memory cards


您可以使用生成slug

urldecode()有什么问题
?我必须在每个方法中调用它。我想要一种更通用的方法,比如在钩子或其他什么东西中使用它
urldecode()
?我必须在每个方法中调用它。我想要一种更通用的方法,比如在钩子或其他东西中使用它