#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";
Чтобы избежать перенаправления