何我可以根据大写字符将$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
答案 0 :(得分:35)
在[A-Z]
上使用preg_split()
应该:
function splitAtUpperCase($s) {
return preg_split('/(?=[A-Z])/', $s, -1, PREG_SPLIT_NO_EMPTY);
}
修改强>
如果您不需要数组本身,您可以使用连字符(-
)预先校正大写字符(第一个除外):
preg_replace('/(?<!^)([A-Z])/', '-\\1', $param);
(demo)
答案 1 :(得分:5)
$chunks = preg_split('/(?=[A-Z])/', $string);
答案 2 :(得分:1)
function splitAtUpperCase($string){
return preg_replace('/([a-z0-9])?([A-Z])/','$1-$2',$string);
}
$string = 'setIfUnmodifiedSince';
echo splitAtUpperCase($string);
答案 3 :(得分:0)
如果您希望使用情人大小写转换字符串,可以@jensgram的代码,其中我将连字符(-)
更改为下划线(_)
strtolower(preg_replace('/(?<!^)([A-Z])/', '_\\1', $param));
我一直在寻找。