preg_match и кириллица

421
21 июля 2017, 04:32

Всем здрааааааааааааааааааааааавствуйте.Возникла проблема с русскими буквами в регулярке preg_match. В общем есть Роутер:

<?php 
class Router
{
private $rotues;
public function __construct() //Подключаем маршруты
{
    $this->routes = include(ROOT.'/config/routes.php');
}
private function getURI()// Получаем URI из адресной строки
{
    if(!empty($_SERVER['REQUEST_URI'])){
        return trim($_SERVER['REQUEST_URI'],"/"); 
    }
}
public function run()//Сравниваем маршруты из routes и формируем имя контроллера и action
{
    $uri = $this->getURI();
    foreach($this->routes as $uriPattern => $path){
        if(preg_match("~$uriPattern~", $uri)){
            $internalRoute = preg_replace("~$uriPattern~", $path, $uri);
            $segments = explode("/", $internalRoute);
            $controllerName =  array_shift($segments).'Controller';
            $controllerName = ucfirst($controllerName);
            $actionName = 'action'.ucfirst(array_shift($segments));
            $parametrs = $segments;
            $controllerFile = ROOT.'/controllers/'.$controllerName.'.php';
            if(file_exists($controllerFile)){
                include_once($controllerFile);
            }
            $controllerObject = new $controllerName;
            $result = call_user_func_array(array($controllerObject,$actionName),$parametrs);
            if ($result != null) {
                break;
            }
        }
    }
} 

}
 ?>

И собственно есть маршруты, посылаемые этому роутеру:

<?php 
return array(
"search/([a-zA-Z])" => "index/search/$1",
"delbasket" => "user/delbasket",
"tobasket" => "user/tobasket",
"basket/([0-9]+)" => "user/basket/$1",
"basket" => "user/basket",
"livepassmsg" => "user/livepasmsg",
"livepass" => "user/livepas",
"change" => "user/change",
"user/([0-9]+)" => "user/page/$1",
"registr" => "index/registr",
"registration" => "index/registration",
"logout" =>"index/logout",
"login" =>"index/login" ,
"page/([0-9]+)" => "index/page/$1", 
"adress" => "index/adress",
"" => "index/page" 
);
   ?>

И в общем вот в чем загвостка: когда посылаю англ. буквы все норм он выводит результат, но с русскими выдает ошибку: call_user_func_array() expects parameter 1 to be a valid callback, class 'IndexController' does not have a method 'actionPagesindex(Ошибка дефолтная,т.к роутер тупо не находит маршрут).И в общем в чем же вопрос.Как мне построить 1 маршрут(search...),что бы моя машина смерти нормально принимала русские буквы?(PS: Я пытался поставить [а-яА-Я],[а-яА-ЯЁёa-zA-Z0-9_]+,a-zA-Zа-яА-Я]+/ui, но все тщетно)

READ ALSO
Как убрать meta property и meta name twitter из хедера

Как убрать meta property и meta name twitter из хедера

Есть такая проблема: На некоторых страницах сайта (но не на всех страницах), если зайти в консоль, то видим:

298
Добавление записи с проверкой на id

Добавление записи с проверкой на id

Доброго времени суток

170