多谢qiang哥的帮助 有人用做过和处理过friendly-url的吗?,使我明白了friendly url在yii是怎么弄的。
不过qiang哥提到的把url地址的正规化(空格用-替代,去除非法字符等),我在yii貌似找不到有这样的类和方法?
ok, anyway, 我从drupal里面借鉴,建了一个,请看附件。
如果yii本来就有这个功能的话,麻烦大家回复告诉我一声。如果没有的话,我就把这个放到yii的extension里面了。
谢谢大家,欢迎大家交流
多谢qiang哥的帮助 有人用做过和处理过friendly-url的吗?,使我明白了friendly url在yii是怎么弄的。
不过qiang哥提到的把url地址的正规化(空格用-替代,去除非法字符等),我在yii貌似找不到有这样的类和方法?
ok, anyway, 我从drupal里面借鉴,建了一个,请看附件。
如果yii本来就有这个功能的话,麻烦大家回复告诉我一声。如果没有的话,我就把这个放到yii的extension里面了。
谢谢大家,欢迎大家交流
我说的正规化指的就是这个东东。yii里没有,我们是自己写的一个。
你这个能处理中文字符么?
yii里不是把空格变成+号了吗?我前两天还在问怎么把加号换成-
处理中文字是指什么?不会是把中文字弄成拼音吧。
我这个是从drupal里面拿出来的,
这个的主要功能就是把空格变成-,然后那些拉丁字母,比如 Œ 就会变成 OE,
qiang哥你描述好了,我再找找,应该是有。
那是浏览器在地址栏那里自己加上去的。。。
不是的,地址栏不会吧空格变成加号的。我是用creatUrl生成的,自动把空格变成加号。qiang哥出来证实一下这个问题。
因为createUrl里针对参数调用了urlencode(),所以空格变+号,而+号则会变成 %2B
其实后来实际操作时,发现在用 path 方式创建URL的话,当参数值中包含 / 符号时,虽然提交的URL有作encode,但到了服务端又被解码了,结果就是这个 / 又被当作参数分割符。
从而无法在参数中包含/,这个问题后来查阅资料时发现在YII的教程评论里有讨论到,MS无解~~只能尽量避开。
现在的 createUrl 如果是 path 则所有参数都依默认规则转换成 /key/value/key2/value2 … 其实我更希望有的时候只有 route 部分是路径形式,而有些参数仍保留 get 的形式。
原来如此
怎么办怎么办,qiang哥还没有回答我,他提到的处理中文字是指什么?
@Davidhhuan: 我们所说的url正规化(slugify)是指把一个字串转化成ascii串并去除一些标点符号,例如把À转化为A,去除%, "等等。转化后的字串一般情况下放到URL里可以不用再进行url编码。这也是你共享的php代码做的事。对于中文字符,目前一般的做法是不做任何转化。
@hightman: 你只要添加一条url规则就可以达到你的目的了:’<controller:\w+>/<action:\w>’ => ‘<controller>/</action>’
我那个代码也没有编码的,作个对比:
echo urlencode("我爱中文!")."<br />";
echo UrlTransliterate::cleanString("我爱中文!");
这是結果:
%E6%88%91%E7%88%B1%E4%B8%AD%E6%96%87%EF%BC%81
我爱中文!