2012-02-21 1 views
1

Первый вопрос ответил очень быстро, благодаря всем.получить пробел разделенных полей в других разделенных запятой полях (loop?)

здесь является вопросом, для данной строки ..

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

, чтобы сделать вещи более ясно, есть два человека, один имеет два значения (имя, фамилия), а другие имеют midname тоже. поэтому, я хочу, чтобы все их разделяли, зная, какое имя принадлежит кому, например;

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

я бы нормализовать separater charater сначала тогда взрываются() на общем сепараторе ..

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