Этот код не возвращает совпадений, когда я набираю «szukaj/zwierzęta» в URL-адресе, но когда я печатаю «szukaj/zwierzeta», он работает.PHP Regex не соответствует польский символов
<?php
$url = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
$rules = array(
'film' => "/film/(?'film_slug'[^/]+)-(?'film_id'\d+)",
'szukaj' => "/szukaj/(?'query'[\w\-]+)",
);
foreach ($rules as $action => $rule) {
if (preg_match('~^'.$rule.'$~i', $uri, $params)) {
switch($action)
{
case 'szukaj': (doesn't work with ęąćźż, works with others)
}
}
}
Я также попытался с 'Szukaj' => "/ Szukaj/('запрос' [\ рь | \ пН -] +?)",
, но это не сработало.
Попробуйте добавить юникода флаг '' в начале вашего регулярного выражения. Если он не работает, добавьте флаг 'u' –