Использование preg_split()
на [A-Z]
должно сделать:
function splitAtUpperCase($s) {
return preg_split('/(?=[A-Z])/', $s, -1, PREG_SPLIT_NO_EMPTY);
}
EDIT
Если вам не нужен сам массив, вы можете просто предварительно прописать заглавные буквы (кроме первого) с дефисом (-
):
preg_replace('/(?<!^)([A-Z])/', '-\\1', $param);
( демо )