Всем здрааааааааааааааааааааааавствуйте.Возникла проблема с русскими буквами в регулярке 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, но все тщетно)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть такая проблема: На некоторых страницах сайта (но не на всех страницах), если зайти в консоль, то видим: