А разве «любые буквы и цифры» запрещает пробел? Капс без правки исходных кодов запретить нельзя. А вообще в качестве разделителей там немного символов разрешается использовать: точки, -, и _. Точки нужны, например, в никах типа: Лукашенко А. Г., дефис нужен в никах типа Парам-пам-пам (хорошего примера не придумал, но есть имена, пишущиеся через дефис), ну а знак подчёркивания в программерских никах :) Ещё по-хорошему нужно апостроф разрешить, для ников типа Д’Артаньян. Кстати да, надо будет исправить эту недоработку, обидели д’Артаньяна :)
Добавлено спустя 19 минут 22 секунды:В файле functions_user.php ищите код:
- Код: Выделить всё
switch ($config['allow_name_chars'])
{
case 'USERNAME_CHARS_ANY':
$pcre = true;
$regex = '.+';
break;
case 'USERNAME_ALPHA_ONLY':
$pcre = true;
$regex = '[A-Za-z0-9]+';
break;
case 'USERNAME_ALPHA_SPACERS':
$pcre = true;
$regex = '[A-Za-z0-9-_. ]+';
break;
Тут в регулярках вы можете задать любые наборы символов.
Добавлено спустя 5 минут 39 секунд:Только выберите правильную ветку в switch, тут прописаны регулярки для всех поддерживаемых способов валидации в phpBBex. Для вашей задачи нужно редактировать этот код:
- Код: Выделить всё
case 'USERNAME_LETTER_NUM_SPACERS':
if ($pcre)
{
$regex = '[-_. \p{Lu}\p{Ll}\p{N}]+';
}
else if ($mbstring)
{
$regex = '[-_. [:upper:][:lower:][:digit:]]+';
}
else
{
$pcre = true;
$regex = '[-_. a-zA-Z0-9]+';
}
Получится такое:
- Код: Выделить всё
case 'USERNAME_LETTER_NUM_SPACERS':
if ($pcre)
{
$regex = '[ \p{Lu}\p{Ll}\p{N}]+';
}
else if ($mbstring)
{
$regex = '[ [:upper:][:lower:][:digit:]]+';
}
else
{
$pcre = true;
$regex = '[ a-zA-Z0-9]+';
}