如何仅通过第一个分隔符由delmiter分割

时间:2012-05-05 23:16:31

标签: php string delimiter

我有一个看起来像这样的变量:

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

正如您所看到的,它基本上是由换行符破坏的值。

我想要做的是获取选项类型,在本例中为“Dropdown”,并将其余值存储在另一个字符串中。

所以

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

上面的代码是我尝试过的,但这就是字符串出现的结果:

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

我希望$ OptionValues是这样的:     $ OptionValues =“Value 1 \ nValue 2 \ nValue 3 \ n”;

我该怎么做?

选项类型始终是字符串的第一部分,后跟选项值,每个选项值由换行符分隔。

它以这种方式组织,因为它来自用户输入,它使用户更容易处理。

4 个答案:

答案 0 :(得分:15)

您需要使用explode()的第三个参数来设置限制。

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

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

echo $bar;

答案 1 :(得分:1)

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

答案 2 :(得分:1)

您可以使用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);

答案 3 :(得分:1)

你不需要阵列爆炸。

这是适合您的代码:

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