Подтвердить что ты не робот

Взорвать строку для символов верхнего регистра?

Хо, я могу взорвать строку $param в $chunks штук на основе символов верхнего регистра?

$string = 'setIfUnmodifiedSince';
$method = substr($string, 0, 3);
$param  = substr($string, 3);

// Split $param and implode with '-' separator
$chunks = splitAtUpperCase($param); // Chunks are: 'If', 'Unmodified' and 'Since'
$field  = implode('-', $chunks); // Get If-Unmodified-Since HTTP field name
4b9b3361

Ответ 1

Используя preg_split() в [A-Z], выполните следующие действия:

function splitAtUpperCase($s) {
        return preg_split('/(?=[A-Z])/', $s, -1, PREG_SPLIT_NO_EMPTY);
}

ИЗМЕНИТЬ
Если вам не нужен сам массив, вы можете просто предварять символы верхнего регистра (кроме первого) дефисом (-):

preg_replace('/(?<!^)([A-Z])/', '-\\1', $param);

(демонстрация)

Ответ 2

$chunks = preg_split('/(?=[A-Z])/', $string);

Ответ 3

function splitAtUpperCase($string){
    return preg_replace('/([a-z0-9])?([A-Z])/','$1-$2',$string);
}

$string = 'setIfUnmodifiedSince';
echo splitAtUpperCase($string);