Вы можете использовать модификатор u (UTF-8) в своем регулярном выражении, чтобы поддерживать кириллицу. Вот исправленный код: $name = preg_replace('/(^[0-9]+|[^\p{L}\-\_\:]+)/u', '', $name); В этом регулярном выражении \p{L} соответствует любой букве в любом языке, включая кириллицу. Запись u в конце шаблона указывает на использование модификатора UTF-8. Теперь ваше регулярное выражение будет удалять все символы, кроме цифр, букв (включая кириллицу), дефиса, подчеркивания и двоеточия.
$name = mb_ereg_replace('(^[0-9]+|[^a-zA-Z0-9\-\_\:]+)', '', $name);
Мультибайтовые символы могут вызывать проблемы при использовании функции preg_replace, поскольку она работает с байтами, а не символами. Это может привести к непредсказуемым результатам, особенно если символ случайно совпадает с концом одного байта и началом другого. Рекомендую использовать функцию mb_ereg_replace, которая предназначена для работы с мультибайтовыми символами и учитывает правильную обработку кодировок. В данном случае, можно заменить preg_replace на mb_ereg_replace, чтобы избежать ошибок при работе с мультибайтовыми символами. Примечание: документацию на использование расширения Multibyte String вы можете найти для получения более подробной информации о его возможностях и применении.