I żeby to było zgodne z nowszymi wersjami PHP w przyszłości, muszę to zamienić na preg_replace_callback, czyli
$match[1] = preg_replace_callback('/(?<=^|[a-z])./', create_function ('$match[1]', 'return strtolower(trim($match[1]));'))
jednak coś chyba pomieszałem z tą funkcją zwrotną...