Взорвать строку для символов верхнего регистра?
Хо, я могу взорвать строку $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
Ответы
Ответ 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);