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

Хо, я могу взорвать $param string в $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 

Использование preg_split() в [AZ] должно:

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

РЕДАКТИРОВАТЬ
Если вам не нужен сам массив, вы можете просто предварять символы верхнего регистра (кроме первого) дефисом ( - ):

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

( демо )

 $chunks = preg_split('/(?=[AZ])/', $string); 
 function splitAtUpperCase($string){ return preg_replace('/([a-z0-9])?([AZ])/','$1-$2',$string); } $string = 'setIfUnmodifiedSince'; echo splitAtUpperCase($string);