如果有人能帮助我,那就太棒了!
我有这个:
TYLLON kevin
- 转换 - >姓氏:TYLLON
; prename:kevin
VAN AZERTY bert
- 转换 - >姓氏:VAN AZERTY
; prename:bert
YAHOO BE AWESOME rabbit
- 转换 - >姓氏:YAHOO BE AWESOME
; prename:rabbit
也许正则表达式,任何人?
答案 0 :(得分:2)
我认为最短的答案是使用preg_split
这里使用环视:
使用此正则表达式进行拆分:
/(?<=\p{Lu})\h+(?=\p{Ll})/u
匹配1个或更多水平空格,前面是大写的unicode字母,后跟小写的unicode字母。
PS:此解决方案兼容unicode。
<强>示例:强>
print_r(preg_split('/(?<=\p{Lu})\h+(?=\p{Ll})/u', 'YAHOO BE AWESOME rabbit'));
Array
(
[0] => YAHOO BE AWESOME
[1] => rabbit
)
print_r(preg_split('/(?<=\p{Lu})\h+(?=\p{Ll})/u', 'VAN AZERTY bert'));
Array
(
[0] => VAN AZERTY
[1] => bert
)
print_r(preg_split('/(?<=\p{Lu})\h+(?=\p{Ll})/u', 'TYLLON kevin'));
Array
(
[0] => TYLLON
[1] => kevin
)
答案 1 :(得分:1)
您可以使用php函数ctype_upper循环遍历您的名称字符串:
检查提供的字符串text中的所有字符是否都是大写字符。
首先必须explode()
你的名字并将它们放在一个数组中。一旦你有一个数组,你可以检查大写/小写...
<?php
$name_array = array('VAN', 'AZERTY', 'bert');
foreach ($name_array as $testcase) {
if (ctype_upper($testcase)) {
echo "The string $testcase is upper case.";
} else {
echo "The string $testcase is lower case / mixed case.";
}
}
?>
答案 2 :(得分:1)
尝试此解决方案。
<?php
preg_match_all('/\b([A-Z]+)\b/', $fullname, $upper);
preg_match_all('/\b([a-z]+)\b/', $fullname, $lower);
$familyname = implode(' ', $upper[0]);
$prename = implode(' ', $lower[0]);
echo $prename.' '.$familyname;
?>
答案 3 :(得分:0)
我找到了答案,结合了多个答案:
ObjectMapper
结果:BLA BOEM BABA
preg_match_all('/\b([A-Z]+)\b/', 'BLA BOEM BABA Kevin', $matches);
结果:凯文