Yii支持URL命名参数这样的模式匹配方式,具体参见
http://www.yiiframework.com/doc/guide/1.1/en/topics.url
我们可以把这些规则放在配置文件里,但不够弹性,不能在后台方便的进行管理变更。
那么可以把它们放到数据库里面,建立一个url_rules表,但由于Yii的URL命名参数格式比较特别:
array( 'post/<id:\d+>'=>'post/read', 'post/<year:\d{4}>/<title>'=>'post/read', )
PHP由于本来就是用来解析HTML标记而发明的,所以PHP的字符串把这些符号当作HTML元素来处理,这样无法像正常字符那样被打印和显示。
有3种方法来处理这样的情况:
1. 使用标记所对应的HTML Entity(http://en.wikipedia.org/wiki/HTML_entities)来描述,比如常见的
> : > (greater-than) < : < (less-than) & : & (ampersand)
<?php $rule = 'post<id>';
echo $rule; ?>
这样可以被打印为post<id>
$rule = 'post<id>';
echo htmlspecialchars($rule)
3.把<>替换为[]来存储,这样打印输出比较方便,在路由规则处理或者createUrl的时候使用strtr($pattern, '[]','<>')即可。
by iefreer