第一个问题回答得很快,谢谢大家。
这是给定字符串的问题。
$str= "name1 surname2, name2 midname2 surname2";
为了更清楚,有两个人,一个有两个值(名字,姓氏(,而另一个也有中间名。 所以,我想把它们分开,同时知道哪个名字属于哪个人,比如;
foreach ($persons as person){
if( person has midname){
$value1 ="name"; $value2= "midname"; $value3="surname"}
else
$value1="name"; $value2="surname"
}
$str = str_replace(',', '', $str);
$arr = explode(' ', $str);
如果要
使用空格或逗号作为分隔符来拆分字符串,则可以preg_split:
$str = "field1 field2 field3, field4 field5, field6";
$v = preg_split("/[s,]+/", $str);
var_dump($v);
你会得到这个:
array(6) {
[0]=>
string(6) "field1"
[1]=>
string(6) "field2"
[2]=>
string(6) "field3"
[3]=>
string(6) "field4"
[4]=>
string(6) "field5"
[5]=>
string(6) "field6"
}
我会先规范化分隔符字符,然后在公共分隔符上爆炸((。
# replace spaces with commas:
$str = str_replace( ' ', ',', $str );
# replace the 'doubled commas' with single commas:
$str = str_replace( ',,', ',', $str );
# now you have normalized input:
print_r( explode(',', $str ) );
<?php
$str = "field1 field2 field3, field4 field5, field6 field7 , field8";
// even works on more than one space or a comma surrounded by spaces.
$v = preg_split("~s*,s*|s+~", $str);
var_dump($v);
?>
输出
array
0 => string 'field1' (length=6)
1 => string 'field2' (length=6)
2 => string 'field3' (length=6)
3 => string 'field4' (length=6)
4 => string 'field5' (length=6)
5 => string 'field6' (length=6)