<?php
$string1 = "FARMER John";
$string2 = "OVERMARS DE Rafa";
$string3 = "VAN DER BELT Dick";
?>
要在mysql数据库中保存first和lastname,我需要拆分字符串。 上面你可以看到一些例子。
分割此字符串的最佳方法是什么,请注意,姓氏是大写字母。
结果应该是:
ResultString1:John FARMER
ResultString2:Rafa OVERMARS DE
ResultString3:Dick VAN DER BELT
答案 0 :(得分:1)
这是一个非常糟糕的主意。
如果您纯粹依赖信件来表示某些事情,那么吨可能会出错。并将其全部保存在另一个字符串中只会使问题永久化。
也就是说,您可以通过单独存储新值来缓解(少量)坏处,以免将非结构化信息传递给必须维护数据库的下一个不幸的人。这段代码可以做到这一点,同时也允许使用多字首字母(例如&#34; John Paul&#34;等等)。
我也让它以数组的形式处理它们,因为我认为你可能想要处理三个以上的名字。
<?php
$string1 = "FARMER John";
$string2 = "OVERMARS DE Rafa Dafa";
$string3 = "VAN DER BELT Dick";
$strings = array(array('orig'=>$string1), array('orig'=>$string2), array('orig'=>$string3));
foreach($strings as $key=>$val){
$oldwords = explode(' ',$val['orig']);
foreach($oldwords as $word){
if(preg_match('/[a-z]/',$word)){
$firstname .= " ".$word;
}else{
$lastname .= " ".$word;
}
}
$firstname = trim($firstname);
$lastname = trim($lastname);
$strings[$key]['newfirst'] = $firstname;
$strings[$key]['newlast'] = $lastname;
$firstname = "";
$lastname = "";
}
print_r($strings);
?>
答案 1 :(得分:0)
请按照以下步骤操作:
将数组转换回字符串。
$string3 = "VAN DER BELT Dick";
$arr = explode(" ", $string3);
array_unshift($arr, array_pop($arr));
echo implode(" ", $arr); // Dick VAN DER BELT
答案 2 :(得分:0)
android:windowSoftInputMode="stateHidden|adjustResize"
答案 3 :(得分:0)
正如其他人所说,你的问题描述相当含糊。但是使用这样的固定模式,你可以通过正则表达式很好地分割名称(假设姓氏总是大写):
<?php
$strings = array("FARMER John", "OVERMARS DE Rafa", "VAN DER BELT Dick");
$regex = '~^([A-Z ]+\b)(\w+)$~';
foreach ($strings as $string) {
if(preg_match($regex, $string, $match)) {
$surname = trim($match[1]);
$forename = trim($match[2]);
echo "Surname: $surname, Forename: $forename\n";
}
}
?>
查看有效的demo on ideone.com(以及one on regex101.com)。