在使用url_title()并传递给url后,我将返回uri段。我尝试使用rawurldecode()但不完美。例如,我有
$a = 'Handhone -Charger -Handsfree -Kabel data -Buku panduan -Kartu Garansi ';
我用url_title($a);
传递给url,结果没问题
Handhone0D0A-Charger0D0A-Handsfree0D0A-KABEL-data0D0A-布裤-panduan0D0A-Kartu-Garansi白金
我尝试使用rawurldecode($this->uri->segment(10))
结果:
Handhone0D0A Charger0D0A Handsfree0D0A Kabel data0D0A Buku panduan0D0A Kartu Garansi Platinum
我想:
Handhone Charger Handsfree Kabel dat Buku panduan Kartu Garansi Platinum
我是怎么做到的? CodeIgniter中是否有可用的功能?
答案 0 :(得分:2)
如果你想要一个在编码/解码后略有不同的字符串,即没有连字符和换行符,你应该在进行任何编码之前首先从那些字符串中删除字符串。所以有三个步骤:
使用preg_replace,您可以删除换行符和连字符,如下所示:
$a = preg_replace('/\s+\-/s', ' ', trim($a));
$ a 的值现在是干净的:
手机充电器免提Kabel数据Buku panduan Kartu Garansi
不使用url_title($a)
,而是使用PHP原生函数 urlencode 在网址上传递 $ a :
urlencode($a)
网址上的值为:
Handhone +充电器+免提+ KABEL +数据+布裤+ panduan + Kartu + Garansi
+
符号代表空格,它们可以很好地转换回第三步:
使用此程序,您需要使用 urldecode ,而不是 rawurldecode :
urldecode($this->uri->segment(10))
这给出了:
手机充电器免提Kabel数据Buku panduan Kartu Garansi