2009-09-09 65 views
1

我在html中有一個帶有文本區域的窗體。 我想在php中獲取這個文本區域的內容,以便每行可以存儲在一個數組中。我試着用'/ n'來使用implode。但它不起作用。我怎樣才能做到這一點。將文本區域的內容轉換爲數組

這裏是我的代碼

$notes = explode('/n',$_POST['notes']); 

回答

9

您需要使用這樣的:

$notes = explode("\n", $_POST['notes']); 

(反斜槓,而不是正斜槓,以及雙引號代替單引號)

7

Palantir的解決方案只有當行以\ n結尾(Linux默認行結束)時纔會起作用。

例如,

$text  = "A\r\nB\r\nC\nD\rE\r\nF";  
$splitted = explode("\n", $text); 

var_dump($splitted); 

將輸出:

array(5) { 
    [0]=> 
    string(2) "A " 
    [1]=> 
    string(2) "B " 
    [2]=> 
    string(1) "C" 
    [3]=> 
    string(4) "D E " 
    [4]=> 
    string(1) "F" 
} 

如果沒有,你應該這樣做:

$text  = "A\r\nB\r\nC\nD\rE\r\nF"; 
$splitted = preg_split('/\r\n|\r|\n/', $text); 
var_dump($splitted); 

或者這樣:

$text  = "A\r\nB\r\nC\nD\rE\r\nF"; 
$text  = str_replace("\r", "\n", str_replace("\r\n", "\n", $text)); 
$splitted = explode("\n", $text); 
var_dump($splitted); 

我想最後一個會更快因爲它不使用正則表達式。

例如,

$notes = str_replace(
    "\r", 
    "\n", 
    str_replace("\r\n", "\n", $_POST[ 'notes' ]) 
); 

$notes = explode("\n", $notes); 
0

不要使用PHP_EOL表單的textarea的數組,使用它:

array_values(array_filter(explode("\n", str_replace("\r", '', $_POST['data']))))