Codeigniter — Регулярное выражение в операторе if?

#php #regex #codeigniter #uri

#php #регулярное выражение #codeigniter #uri

Вопрос:

Я хотел бы знать, как реализовать регулярное выражение в следующем операторе:

 if($this->uri->segment(3) !== 'a,b,c...') {
         redirect 'tools/glossary';
        }
  

Мне нужно проверить, что сегмент uri имеет длину всего один символ и только в алфавитном порядке.

Если нет, то перенаправьте на страницу глоссария.

Как это возможно??

Ответ №1:

 if (!preg_match('/^[a-z]$/i', $this->uri->segment(3))) {
    redirect('tools/glossary');
}
  

Комментарии:

1. Просто чтобы указать, что говорит регулярное выражение: ^ означает начало строки, $ означает конец строки, и i означает, что совпадение не чувствительно к регистру.

2. Кроме того, э-э … разве это не должно быть «if (!preg_match»? OP хочет перенаправить, если сегмент не совпадает.

Ответ №2:

Как уже отвечали другие, preg_match будет работать для вас. Однако, просто чтобы добавить альтернативу, codeigniter принимает regex в правилах маршрутизации, так что у вас может быть что- config/routes.php то вроде

 $route['somecontroller/someaction/([a-zA-Z])'] = "somecontroller/someaction/$1";
$route['somecontroller/someaction/(:any)'] = "tools/glossary";
  

Чтобы избежать перенаправления