Я использую Сегментный маршрутизатор как ребенок одного из моих главных Буквальные маршруты в приложении ZF2 (в настоящее время используется 2.3.5). Маршрутизатор должен иметь возможность обрабатывать турецкие символы ввода, поступающие с URL. Моя первая попытка выглядела примерно так (как детский маршрут):
'book' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => 'kitap/:book[/]',
'constraints' => array(
'book' => '[a-zA-ZçÇşŞğĞıİöÖüÜ1-3.+ ]+',
),
),
),
В основном это работало для всего, что мне было нужно: заглавных и строчных букв, цифр до 3 и т. Д. Затем я заметил, что турецкая столица не принимает пунктирная я (İ), поэтому я начал проверять. На самом деле он вообще не принимает турецкие символы, хотя остальные биты, кажется, обрабатываются правильно.
Даже используя \w+
не соответствует (локаль не установлена на турецкий язык?), но используется \S+
делает так, чтобы у маршрутизатора не было проблем с турецкими URL-адресами, это просто совпадение.
Я просмотрела исходный код для маршрутизатора сегмента и это появляется использовать preg_match()
, который должен справиться с этим просто отлично. Что мне здесь не хватает?
редактировать: Этот вопрос примерно такая же проблема, но в роутере Regex. Это еще более тесно связано имеет дело с той же проблемой в маршрутизаторе сегмента и является почти дубликатом, но это не решает мою проблему, поскольку продемонстрированный код относится к старой версии ZF2 и не является ни каплей совпадения, и я не смог перенести ее на работу с обновленным вышестоящим модулем, который, кажется, обрабатывает вещи немного по-другому. Я также подал вышестоящий отчет об ошибках надеюсь, что это будет исправлено, но я все еще остаюсь без работающего модуля. Я рад создать заменяющий модуль для своего проекта с этой исправленной функцией, но не могу выяснить изменения, чтобы заставить его работать.
Задача ещё не решена.
Других решений пока нет …