第一个问题很快得到了答复,感谢所有人。
这是给定字符串的问题..
$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"
}
答案 0 :(得分:1)
如果您要做的是使用空格或逗号分隔字符串作为分隔符,您可以使用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"
}
答案 1 :(得分:1)
我会首先规范化分隔符,然后在公共分隔符上爆炸()
# 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 ) );
答案 2 :(得分:1)
$str = str_replace(',', '', $str);
$arr = explode(' ', $str);
答案 3 :(得分:0)
<?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)