php - with - Explode a string on upper case characters?

split string with regex php (3)

If you wish to convert string with lover case you can @jensgram's code, where I have changed hyphen (-) to underscore (_)

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

as I was looking for.

Ho can i explode $param string into $chunks pieces based on upper-case characters?

$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

Using preg_split() on [A-Z] should do:

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

If you don't need the array itself, you can just preprend uppercase characters (except the first) with a hyphen (-):

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


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