我正在将旧网站转换为CodeIgniter,其中涉及保留一些旧的URL。我需要能够传递单个字符,无论是#,A-Z还是a-z。这是我的模式:在CodeIgniter路由中使用RegEx
/^[a-zA-Z#]$/
它通过传递给preg_match()似乎在我所有的测试中工作得很好。我只是把它添加到这样的CI路线:
$route['(:any)/(/^[a-zA-Z#]$/)'] = "collection/view/$1/alpha/$2";
,它是给我这个错误:
Message: preg_match(): Unknown modifier '/'
我不能为我的生命按摩这种模式,让CI接受它。我认为它被奇怪地逃脱了。任何帮助,将不胜感激。
UPDATE:
我一头到/core/Router.php只是为了看看CI与模式做。以下是CI正在使用的内容:
#^(.+)/(/^[a-zA-Z\#]$/)$#
它将整个传递的字符串转换为一个大型模式。
解决:
搞清楚的是CI试图创建一个大的格局后,我改写了从无到有的模式和删除(:任何)。我也用#代替了#。这是我的最终解决方案:
$route['(^(.+)/([a-zA-Z\+]$))'] = "collection/view/$2/alpha/$3";
如果任何人有一个更优雅的模式,请随时张贴它。谢谢!
'#'是一个URL特殊字符,我不认为你可以用它的路线,因为服务器不能读它,或任何后面的东西。 – 2013-02-28 05:41:50
我认为我也是这样删除了#并试图用a-zA-Z进行测试,但仍未找到匹配结果。 – madzilla 2013-02-28 14:30:59