具有重复名称的Codeigniter路由中的正则表达式

时间:2012-10-11 03:48:04

标签: php codeigniter

我想要做的是,如果我有重复的名称路由,我只使用一条路线而不是使用3条路线,但我不确定我需要使用哪个正则表达式,任何建议?

现在我有了这个

product_test_1.html
product_test_2.html
product_test_3.html

我的codeigniter路线

$route['product_test_1.html'] = "website/product";
$route['product_test_2.html'] = "website/product";
$route['product_test_3.html'] = "website/product";

我想要的东西(但它不起作用)

$route['/product_test/i'] = "website/product";

任何想法都能解决我的问题? 感谢

1 个答案:

答案 0 :(得分:3)

试试这个:

$route['product_test_[0-9]+\.html'] = 'website/product';

这是具体的,你可以得到。 [0-9]表示任何数字(也可以是\d),+表示前面一个或多个数字(数字)。

如果您想捕获任何内容,.令牌是“任意字符”,因此您可以将[0-9]+替换为.+,这意味着它将匹配一串(漂亮)很多)任何1或更长的角色。

这会为同一页面创建重复的网址,这通常是不可取的,但也许您特别希望这样。如果没有,您可以通过.htaccess考虑301重定向。

如果您正在使用此功能,也可以使用此功能将ID传递给该功能。

$route['product_test_([0-9]+)\.html'] = 'website/product/$1';

括号会捕获数字,然后我们将其传递给$1的网址,因为这是第一次捕获的捕获匹配。

然后,在您website控制器中,您可以声明您的product方法:

function product($id)

$id将自动成为我们从product_test_#.html

中获取的网址中传递的ID