Процесс довольно сложный и не совсем красивый. Вам нужно взглянуть на класс Title
, найденный в includes/Title.php
. Вы должны начать с метода newFromText
, но основная часть логики находится в методе secureAndSplit
.
Обратите внимание, что (как всегда с MediaWiki) код не развязан ни в малейшей степени. Если вы хотите воспроизвести его, вам нужно извлечь логику, а не просто повторно использовать класс.
Логика выглядит примерно так:
- Декодировать ссылки на символы (например, & eacute;)
- Преобразование пробелов в подчеркивания
- Проверьте, является ли заголовок ссылкой на пространство имен или вики
- Удалить фрагменты хеша (например,
Apple#Name
- Удалить запрещенные символы
- Запретить ссылки на подкаталоги (например,
../directory/page
)
- Запретить тройную последовательность тильды (
~~~
) (по некоторым причинам)
- Ограничить размер до 255 байт
- Прописать первую букву
Кроме того, я считаю, что я прав, говоря, что кавычки не должны кодироваться исходным пользователем - браузеры могут обрабатывать их прозрачно.
Надеюсь, это поможет!