Php Kohana 3 routes-空正则表达式

Php Kohana 3 routes-空正则表达式,php,routes,preg-match,kohana-3,Php,Routes,Preg Match,Kohana 3,直到最近,我还拥有一个routehandler控制器,所有请求都通过它传递。这样我就可以根据目录中的条目将某些项目定向到某些页面。但是由于某种原因,它最近停止工作,并给我以下错误: ErrorException [ Warning ]: preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Empty regular expression ErrorException[警告]:preg

直到最近,我还拥有一个routehandler控制器,所有请求都通过它传递。这样我就可以根据目录中的条目将某些项目定向到某些页面。但是由于某种原因,它最近停止工作,并给我以下错误:

ErrorException [ Warning ]: preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Empty regular expression
ErrorException[警告]:preg_match()[]:空正则表达式
这来自route.php文件中的matches()函数

在调用该类之前,我注意到$uri变量确实包含一个字符串,但是一旦在该函数中,它就会变为NULL,从而导致错误

            // Routes for product items
            foreach($items as $item)
            {
                Route::set($item->seoUrl, $item->seoUrl)
                ->defaults(array(
                    'controller' => 'item',
                    'action' => 'index',
                    'id' => $item->id,
                ));
            }

            // Error
            Route::set('error', 'error(/<action>(/<id>))', array('id' => '.+'))
            ->defaults(array(
                    'controller'    => 'error',
                    'action'    => '404',
                    'id'            => FALSE,
            ));

            // Standard - normal Kohana behaviour
            Route::set('standard', '(<controller>(/<action>(/<id>)))')
                ->defaults(array(
                    'controller' => 'catalogue',
                    'action'     => 'index',
            ));

            // RouteHandler Reset - otherwise continuous loop
            Route::set('routeHandler', '£€%')
                ->defaults(array(
                    'controller' => 'routeHandler',
                    'action'     => 'index',
            ));

            $uri = $this->request->param('uri');

            $request = new Request($uri);

            echo $request->execute()
                    ->send_headers()
                    ->response;
//产品项的路由
foreach($items作为$item)
{
路线::设置($item->seoUrl,$item->seoUrl)
->默认值(数组)(
“控制器”=>“项目”,
“操作”=>“索引”,
'id'=>$item->id,
));
}
//错误
路由::集合('error','error(/(/)'),数组('id'=>'。+'))
->默认值(数组)(
“控制器”=>“错误”,
“操作”=>“404”,
'id'=>FALSE,
));
//标准-正常科哈纳行为
路由::集合('标准','(/(/))))
->默认值(数组)(
“控制器”=>“目录”,
“操作”=>“索引”,
));
//RouteHandler重置-否则为连续循环
Route::set('routeHandler','£€%'))
->默认值(数组)(
“控制器”=>“路由处理器”,
“操作”=>“索引”,
));
$uri=$this->request->param('uri');
$request=新请求($uri);
echo$request->execute()
->发送头()
->反应;
产品项的路由仍然有效。这让我相信,这是标准的路线,是造成不安。重置路径必须在那里,否则我会通过routeHandler得到一个恒定的循环

奇怪的是,这一切都完成了,据我所知,这部剧本没有任何变化

任何想法都将不胜感激。

解决了它

其中一个项目的seoUrl基本上为“”NULL,因此将其作为路由会混淆此控制器中设置的所有以下路由

现在已经添加了一个检查,以确保$item->seoURL不是空的