Как разделить делителем только по первому разделителю


У меня есть переменная, которая выглядит так:

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

Как вы можете видеть, это в основном значения, разбитые на разрывы строк.

Что я хочу сделать, так это получить тип параметра, в данном случае "Выпадающий", и сохранить остальные значения в другой строке.

Итак

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

Приведенный выше код - это то, что я пробовал, но строки получились такими:

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

Я хочу, чтобы значения $OptionValues были такими: $Значения параметров = "Значение 1\Значение 2\Значение 3\n";

Как бы я сделать что-то подобное?

Тип параметра всегда будет первой частью строки, за которой следуют значения параметров, каждое из которых разделено разрывом строки.

Он организован таким образом, поскольку он исходит из пользовательского ввода, и это значительно облегчает его обработку пользователем.

Author: Talon, 2012-05-06

4 answers

Вам нужно использовать третий аргумент explode(), который устанавливает предел.

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

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

echo $bar;
 14
Author: Sampson, 2012-05-05 23:19:34
$values_array = explode("\n", $var);
$OptionType = $values_array[0];
unset($values_array[0]);
$OptionValues = implode("\n", $values_array);
 1
Author: Aaron W., 2012-05-05 23:18:49

Вы можете использовать array_shift, чтобы автоматически удалить первый разнесенный элемент, а затем присоединиться к оставшимся.

<?
$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
Author: Bryan, 2012-05-05 23:21:09

Вам не нужно, чтобы массив взрывался.

Вот код, который будет работать для вас:

$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"
 1
Author: Taha Paksu, 2012-05-06 00:52:11