我有很多标签是驼色的。一些例子是
whatData
whoData
deliveryDate
importantQuestions
我想要做的就是这个。任何带有数据一词的标签都需要删除这个词。在大写字母的位置,我需要提供一个空间。最后,一切都应该是大写的。我已经完成了删除数据和大写($ data->键是标签)
strtoupper(str_replace('Data', '', $data->key))
我正在努力的部分是在单词之间添加空格。所以基本上上面的话应该像这样结束
WHAT
WHO
DELIVERY DATE
IMPORTANT QUESTIONS
我如何考虑最后一部分呢?
由于
答案 0 :(得分:4)
它会在每个大写字母前添加空格。试试这个:
$String = 'whatData';
$Words = preg_replace('/(?<!\ )[A-Z]/', ' $0', $String);
答案 1 :(得分:3)
<强>问题强>
'~^[A-Z]~'
将仅匹配第一个大写字母。查看模式语法中的元字符以获取更多信息。'\n'
,而不是空格。<强>解决方案强>
使用preg_replace()
。请尝试以下代码。
$string = "whatData";
echo preg_replace('/(?<!\ )[A-Z]/', ' $0', $string);
<强>输出强>
what Data
答案 2 :(得分:0)
请尝试以下操作:
$string = 'importantQuestions';
$string = strtoupper(ltrim(preg_replace('/[A-Z]/', ' $0', $string)));
echo $string;
这将输出为:
重要问题
答案 3 :(得分:0)
试试这个:
preg_split: split on camel case
array_map: UPPER case all the element
implode: Implode the array
str_replace: Replace the `DATE` with empty
trim: trim the white spaces.
做这些简单的事情:
echo trim(str_replace("DATE", "", implode(" ", array_map("strtoupper", preg_split('/(?=[A-Z])/', 'deliveryDate', -1, PREG_SPLIT_NO_EMPTY))))); // DELIVERY
这正是你想要的结果。