Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Silex可选缓动器在路径中_Regex_Symfony_Routes_Silex - Fatal编程技术网

Regex Silex可选缓动器在路径中

Regex Silex可选缓动器在路径中,regex,symfony,routes,silex,Regex,Symfony,Routes,Silex,我在Silex中构建了一个URL来匹配/tutorial或/tutorial/index或/tutorial/pageX,其中X是一个数字,但我也希望它匹配/tutorial/,我正在努力实现这一点。这是我到目前为止的路线: $app->get('/tutorial/{page}', 'app\\Controller\\Tutorial::index') ->assert('page', '(^(page[\d]+|index)$|^$)') ->value('

我在Silex中构建了一个URL来匹配
/tutorial
/tutorial/index
/tutorial/pageX
,其中X是一个数字,但我也希望它匹配
/tutorial/
,我正在努力实现这一点。这是我到目前为止的路线:

$app->get('/tutorial/{page}', 'app\\Controller\\Tutorial::index')
    ->assert('page', '(^(page[\d]+|index)$|^$)')
    ->value('page', 'index');
如果我试着让它工作,没有任何匹配。那么为什么它在Silex中不起作用,我可以用什么来起作用呢

如果这是重复的,但我所有的搜索结果都是相似的,但不是整个字符串必须匹配或为空的确切情况。

尝试此正则表达式:

^(第\d页+|索引|)$

它将匹配“pagen”、“index”或“”


如果您仍然无法实现所需的功能,我想问题在于
app\Controller\Tutorial::index
方法无法处理空匹配。

您能检查一下这是否是您想要的吗?否则,请澄清输入字符串可以是什么以及您希望输出是什么样子。这是我想要的输出,但是
/tutorial/
不应该在正则表达式中,因为正则表达式只用于
{page}
值。我希望
{page}
要么是
pageX
,其中
X
是一个数字,要么是
索引
,要么什么都没有。我不知道还有什么可以澄清这一点。您熟悉symfony/silex中的路由吗?我大致了解您正在尝试做什么
page
是一个变量,您可以尝试使用
assert
对其进行验证,还可以将
index
设置为其默认值。如果
^(page\d+| index |)$
在当前代码中不起作用,请尝试不要将
断言
一起使用,在查询中传递“index”值,然后查看它是否起作用。然后尝试使用
'app\Controller\Tutorial::index'
。如果URL是
/Tutorial
,则
方法几乎会将
{page}
设置为
索引。如果URL是
/tutorial/a_value
,那么它将根据正则表达式匹配该值,如果它通过调用
app\Controller\tutorial::index
方法,将
a_value
作为变量
$page
传入。如果该值与正则表达式不匹配,它将抛出一个错误,那么,您是否尝试了
->value('page','')使用更新的正则表达式?你得到预期的行为了吗?如果不是,我想问题在于Tutorial::index方法无法处理空匹配。