获取其他逗号分隔字段中的空格分隔字段(循环?


get space separated fields in other comma separated fields ( loop?)

第一个问题回答得很快,谢谢大家。

这是给定字符串的问题。

$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)