Как создать Quora-подобные URL с поддержкой UTF-8? - PullRequest
0 голосов
/ 23 марта 2020

Я занимаюсь разработкой приложения, и мне нужно разрешить символы UTF-8 в URL. Мое приложение использует PHP (Laravel), а встроенная функция Str::slug() преобразует не-Engli sh символы в их эквивалентные буквы Engli sh.

Я смотрю на создание таких URL-адресов, как:

some-domain.com/अंतरिक्ष-यान-आकाश-में-बादल.1

Мне нужна одна функция, которую я могу использовать для создания всех URL-адресов для моего сайта. Может кто-нибудь подсказать, как этого добиться?

Моя существующая попытка такова -

protected function make_slug($string) {
        return preg_replace('/\s+/u', '-', trim($string));
    }

Это делает работу; но затем происходит сбой, когда $string - это что-то вроде You cannot скажем \\\ we\ did it# right! - по сути, неправильный ввод пользователя.

1 Ответ

0 голосов
/ 24 марта 2020

PHP regex имеет несколько интересных селекторов, таких как \p{L} (буквы на всех языках) и \p{N} числа (также на всех языках), см .: https://www.php.net/manual/en/regexp.reference.unicode.php

Почему бы не использовать группу NOT ([^]), например:

return preg_replace('/[^\p{L}\p{N}]+/u', '-', trim($string));

Поэтому вместо поиска пробела с помощью \s вы будете искать и заменять все, что не является буквой или цифрой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...