2012-05-05 18 views
5

tengo una variable que tiene este aspecto:¿Cómo dividir por un delmiter por primera delimitador única

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

Como se puede ver que es básicamente valores de roto por saltos de línea.

Lo que quiero hacer es obtener el Tipo de Opción, en este caso "Dropdown" y almacenar el resto de los valores en otra cadena.

Así

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

El código anterior es lo que he intentado, pero esto es lo que las cadenas salieron como:

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

Quiero $ OptionValues ​​que ser así: $ OptionValues ​​= " Valor 1 \ nValor 2 \ nValor 3 \ n ";

¿Cómo haré algo como eso?

El tipo de opción siempre será la primera parte de la cadena seguida de los valores de las opciones, cada uno separado por un salto de línea.

Está organizado de esta manera ya que proviene de la entrada del usuario y hace que sea mucho más fácil de manejar para el usuario.

Respuesta

12

Debe usar el tercer argumento de explode(), que establece el límite.

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

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

echo $bar; 
+0

fresca, no sabía que era una opción. – Talon

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

Puede usar array_shift para abrir automáticamente el primer elemento explosionado y luego unir el resto.

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

no necesita la matriz de explosión.

aquí está el código que funcione para usted:

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