我在html中有一個帶有文本區域的窗體。 我想在php中獲取這個文本區域的內容,以便每行可以存儲在一個數組中。我試着用'/ n'來使用implode。但它不起作用。我怎樣才能做到這一點。將文本區域的內容轉換爲數組
這裏是我的代碼
$notes = explode('/n',$_POST['notes']);
我在html中有一個帶有文本區域的窗體。 我想在php中獲取這個文本區域的內容,以便每行可以存儲在一個數組中。我試着用'/ n'來使用implode。但它不起作用。我怎樣才能做到這一點。將文本區域的內容轉換爲數組
這裏是我的代碼
$notes = explode('/n',$_POST['notes']);
您需要使用這樣的:
$notes = explode("\n", $_POST['notes']);
(反斜槓,而不是正斜槓,以及雙引號代替單引號)
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);
不要使用PHP_EOL
表單的textarea的數組,使用它:
array_values(array_filter(explode("\n", str_replace("\r", '', $_POST['data']))))