получить разделенные пробелом поля в других разделенных запятыми полях (цикл?) - PullRequest
1 голос
/ 21 февраля 2012

на первый вопрос ответили очень быстро, спасибо всем.

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

$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"   
   }

Ответы [ 4 ]

1 голос
/ 21 февраля 2012
$str = str_replace(',', '', $str);
$arr = explode(' ', $str);
1 голос
/ 21 февраля 2012

Я бы сначала нормализовал разделитель, а затем взорвал () на общем разделителе.

# 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 ) );
1 голос
/ 21 февраля 2012

Если вы хотите разделить строку, используя пробелы или запятые в качестве разделителей, вы можете использовать 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 голосов
/ 21 февраля 2012
<?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)
...