2012-02-21 15 views
1

最初の質問は非常に迅速に回答しました。ここ空白で区切られたフィールドを他のコンマ区切りフィールドで取得する(ループ?)

は、与えられた文字列のため、問題..です

$str= "name1 surname2, name2 midname2 surname2"; 

物事をより明確にするために、二人はそこにある他があまりにもmidnameを持っていながら、1は、2つの値(名前、姓)を持っています。だから、どの名前がどの人に属しているかを知っている間に、それらをすべて分離したいと思っています。

foreach ($persons as person){ 
    if(person has midname){ 
     $value1 ="name"; $value2= "midname"; $value3="surname"} 
    else 
    $value1="name"; $value2="surname" 
    } 

答えて

1
$str = str_replace(',', '', $str); 
$arr = explode(' ', $str); 
..共通セパレータ上)(爆発最初の区切りのcharaterを正規化するであろう
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" 
} 
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) 
1

iが

# 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));