Я вижу validate_user()
вызовы sanitize_user()
со строгим аргументом как истинные, что означает, что заглавные буквы также не разрешены.
В исходном коде я нашел этот комментарий
// If strict, reduce to ASCII for max portability.
if ( $strict )
$username = preg_replace( '|[^a-z0-9 _.\-@]|i', '', $username );
Я хотел бы знать, как это влияет на переносимость?
Модификатор
i
в шаблоне регулярного выражения делает его нечувствительным к регистру, просто обратите внимание.так что же на самом деле делает это регулярное выражение?
Заменяет все, кроме az (верхний или нижний), 0-9 (т.е. любое число), подчеркивание, точку, дефис или символ @.
так как тогда он блокирует заглавные буквы? :С
@Ashfame: на самом деле функция не блокирует заглавные буквы. В комментарии над функциями WP пишет: «Если $strict имеет значение true, возвращаются только буквенно-цифровые символы (а также _, пробел,., -, *@).». Это означает, что заглавные буквы принимаются. На самом деле у меня есть WP, где у меня имя пользователя с большой буквы, и никаких проблем.
да, мне интересно узнать, как это влияет на переносимость. что-нибудь еще, например переменную из URL, можно настроить для преобразования в нижний регистр, а затем заставить ее работать. Немного дополнительной работы, но будет работать.
Заглавные буквы не блокируются в именах пользователей при настройке одного сайта.
Символы верхнего регистра заблокированы в именах пользователей при настройке нескольких сайтов. Функция wpmu_validate_user_signup задает только строчные буквы az и цифры 0–9.
Если вы не разрешаете пользователям регистрироваться на сайте, вы можете отключить ограничение «верхнего регистра» при установке MS, просто добавьте в файл functions.php вашей темы:
Навскидку, я полагаю, это было бы так, чтобы вы могли использовать результаты validate_user в URL-адресе или строке $_GET. Я уверен, что есть много других причин, я думаю, я не знаю, что они подразумевают под максимальной переносимостью…