2012-05-05 24 views
5

Tôi có một biến mà trông như thế này:Làm thế nào để chia bởi một delmiter bởi delimiter đầu tiên chỉ

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

Như bạn có thể nhìn thấy nó về cơ bản các giá trị bị phá vỡ bởi ngắt dòng.

Điều tôi muốn làm là lấy Loại tùy chọn, trong trường hợp này là "Thả xuống" và lưu phần còn lại của các giá trị trong một chuỗi khác.

Vì vậy

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

Đoạn mã trên là những gì tôi đã cố gắng nhưng đây là những gì các dây ra như:

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

Tôi muốn $ OptionValues ​​là như thế này: $ OptionValues ​​= " Giá trị 1 \ nGiá trị 2 \ nGiá trị 3 \ n ";

Tôi sẽ làm điều gì đó như thế?

Loại tùy chọn luôn là phần đầu tiên của chuỗi theo sau là giá trị tùy chọn được phân tách bằng dấu ngắt dòng.

Nó được tổ chức theo cách này vì nó đến từ đầu vào của người dùng và điều này giúp người dùng dễ dàng xử lý hơn.

Trả lời

12

Bạn cần sử dụng đối số thứ ba là explode(), đặt giới hạn.

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

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

echo $bar; 
+0

mát, không biết đó là một lựa chọn. – Talon

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

Bạn có thể sử dụng array_shift để tự động bật phần tử phát nổ đầu tiên và sau đó tham gia phần còn lại.

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

bạn không cần mảng phát nổ.

đây là đoạn code mà sẽ làm việc cho bạn:

$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" 
Các vấn đề liên quan