2012-05-05 12 views
5

ho una variabile che assomiglia a questo:Come dividere da un delmiter dal primo delimitatore solo

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

Come si può vedere si tratta fondamentalmente Valori rotto da interruzioni di riga.

Quello che voglio fare è ottenere il tipo di opzione, in questo caso "Dropdown" e memorizzare il resto dei valori in un'altra stringa.

Così

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

Il codice di cui sopra è quello che ho provato, ma questo è ciò che le stringhe è venuto fuori come:

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

voglio $ OptionValues ​​per essere come questo: $ OptionValues ​​= " Valore 1 \ nValore 2 \ nValore 3 \ n ";

Come potrei fare qualcosa del genere?

Il tipo di opzione sarà sempre la prima parte della stringa seguita da valori di opzione separati da un'interruzione di riga.

È organizzato in questo modo come viene fornito dall'utente e lo rende molto più semplice da gestire per l'utente.

risposta

12

È necessario utilizzare il terzo argomento di explode(), che imposta il limite.

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

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

echo $bar; 
+0

fresco, non sapeva che era un'opzione. – Talon

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

È possibile utilizzare array_shift per far scoppiare automaticamente il primo elemento esploso, quindi unire il rimanente.

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

non è necessario l'array che esplode.

Ecco il codice che lavorerà per voi:

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