2015-06-26 1 views
0

Я пытаюсь добавить регулярное выражение к URL-адресу klein, что позволит впоследствии получить капитал или косую черту.chriso/klein regex в URL-адрес

$klein->respond('GET', '@([Hh]ome[\\/]?)', function() { 
    return 'Home'; 
}); 

Однако это регулярное выражение не работает для меня - оно не распознает его вообще.

Я также попробовал без сечи в конце, так что это будет просто признать капитал, например, так:

'@([Hh]ome)' 

В основном я хотел, чтобы это было в состоянии сделать следующее:

site.com/home

site.com/home/

site.com/Home

site.com/Home/

+0

Если вы пишете '@' в регулярном выражении, он должен быть там в самом тексте. https://regex101.com/r/dA8rU8/1 работает нормально, или я пропущу что-то, что вам нужно. –

+0

@andrisleduskrasts в соответствии с документами, вам нужно выполнить любое пользовательское регулярное выражение с символом «@»: https://github.com/chriso/klein.php#routing – CynePhoba12

ответ

0

([Hh]ome[\\/]?)

не является регулярным выражением. Проблема заключается в классе символов в конце, то есть [\\/]. Слэш (/) должен быть экранирован, но вы этого не делаете, избегая символа обратной косой черты (\). Регулярное выражение, которое вы написали, недействительно, и я удивлен, что оно не вызывает ошибку. (Вы уверены, что это не так?)

В любом случае, вы пытаетесь сказать «необязательный трейлинг-косая черта», который можно просто написать как \/?. Обратите внимание, как мы избегаем косой черты. Если вы хотите использовать класс символов вместо этого, вы должны вставить именно это в квадратные скобки, например: [\/].

Это регулярное выражение должно это сделать.

[Hh]ome\/?

Смотрите здесь: https://regex101.com/r/kT2fQ1/1

+0

Это не проблема, к сожалению (я согласен с вашими рассуждениями , однако даже при полном удалении последней части регулярного выражения и оставлении там [Hh] там он не работает даже с этим. Двойная обратная косая черта произошла от использования AltoRouter, где вам нужно избежать escape-символа – CynePhoba12

Смежные вопросы