2012-05-05 10 views
5

mam zmienną, która wygląda tak:Jak podzielić przez delmiter przez pierwszy ogranicznik tylko

$var = "Dropdown\n 
    Value 1\n 
    Value 2\n 
    Value 3\n"; 

Jak widać to w zasadzie Wartości złamane przez podziały wiersza.

Co chcę zrobić, to uzyskać typ opcji, w tym przypadku "Dropdown" i zapisać pozostałe wartości w innym ciągu.

Więc

list($OptionType, $OptionValues) = explode("\n", $var); 

Powyższy kod jest co starałem ale to co struny wyszło jak:

$OptionType = 'Dropdown'; //Good 
$OptionValues = 'Value 1'; // Only got the first value 

Chcę $ OptionValues ​​być tak: $ OptionValues ​​= " Wartość 1 \ n Wartość 2 \ n Wartość 3 \ n ";

Jak mógłbym zrobić coś takiego?

Typ opcji zawsze będzie pierwszą częścią łańcucha, a następnie wartościami opcji oddzielonymi przez podział linii.

Jest zorganizowany w ten sposób, ponieważ pochodzi z wprowadzania danych przez użytkownika i znacznie ułatwia obsługę.

Odpowiedz

12

Musisz użyć trzeciego argumentu z explode(), który ustawia limit.

$var = "Dropdown\n 
    Value 1\n 
    Value 2\n 
    Value 3\n"; 

list($foo, $bar) = explode("\n", $var, 2); 

echo $bar; 
+0

Cool, nie wiedział, że był to opcja. – Talon

1
$values_array = explode("\n", $var); 
$OptionType = $values_array[0]; 
unset($values_array[0]); 
$OptionValues = implode("\n", $values_array); 
1

Możesz użyć array_shift, aby automatycznie wyskoczyć z pierwszego rozbity element, a następnie dołączyć do pozostałych.

<? 
$var = "Dropdown\nValue 1\nValue 2\nValue 3\n"; 

$exploded = explode("\n", $var); 
$OptionType = array_shift($exploded); 
$OptionValues = join("\n", $exploded); 

echo $OptionType . "\n"; 
print_r($OptionValues); 
1

Nie musisz eksplodować tablicy.

Oto kod, który będzie pracować dla Ciebie:

$var = "Dropdown\nValue 1\nValue 2\nValue 3\n"; 
$the_first_element = substr($var,0,strpos($var,"\n")); 
$what_i_want = substr($var,strpos($var,"\n")+1); 

//returns : 
//"Dropdown" 
//"Value1\nValue2\nValue3\n" 
Powiązane problemy