无效的正则表达式标志n

时间:2011-08-12 06:40:03

标签: php kohana-3

我正在尝试使用以下代码从kohana 3中的url获取参数但是fire bug给了我一条错误消息“invalid regular expression flag n” 代码是:

CONTROLLER

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Test extends Controller_Template
{
public function action_index()
{
    $this->template = View::factory('par');
    $this->template->content = View::factory('par');
}
public function get()
{
    $param1 = $this->request->param('param1');
    $param2 = $this->request->param('param2');
    $param3 = $this->request->param('param3');

    echo "This is param1: ".$param1; 
    echo "This is param2: ".$param2; 
    echo "This is param3: ".$param3;
}
}

VIEW

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org   /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>


<?php $x=1;
  $y=2;
  $z=3;
?>

<input type="button" value = "button" onClick=<?php echo url::site('test/get'.$x);?> />
</body>
</html>

BOOT STRAP

Route::set('default', '(<controller>(/<action>(/<param1>)(/<param2>)(/<param3>)))',
array(
    'param1' => '\d+',
    'param2' => '\d+',
    'param3' => '\d+',
))
->defaults(array(
    'controller' => 'test',
    'action'     => 'index',
));

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

看起来浏览器看起来像这样:

onClick=/param/index.php

onClick属性被解释为JavaScript,JavaScript中的/param/index.php试图成为正则表达式文字,后跟属性访问。正则表达式为/param/,其中包含修饰符indexi表示不区分大小写的匹配,以便通过;那么你就是一个错误,因为JavaScript正则表达式没有n修饰符。

我认为您正在尝试将按钮设置为链接,因此您需要为window.location添加一些引号和作业:

<input type="button" value = "button" onClick="window.location = '<?php echo url::site('test/get'.$x);?>'" />

这应该让你更接近你想去的地方,或者至少让你超越神秘的“无效的正则表达式标志n”错误。