我有很多textareas,应填充由新行分隔的单词或短语(按回车键)。
所以,在我的html页面上,我得到了类似的东西:
<textarea name="txt[1]" rows="6" cols="30"></textarea>
<textarea name="txt[2]" rows="6" cols="30"></textarea>
// and so on...
因此,我得到了一个php脚本,它应该捕获textareas的值并将其放入数组中。来自第一个textarea的文本应该在一个数组中等等......
这种结构有可能吗?一个阵列?更多阵列?
例如:我有一个类似的文字:
Textarea 1:
This is the new line 1
This is the new line 2
This is the new line 3
Textarea 2:
This is the new line 7
This is the new line 8
因此,数组应该是:
myarr[1] = ["This is the new line 1","This is the new line 2","This is the new line 3"];
myarr[2] = ["This is the new line 7","This is the new line 8"];
所以,如果我有myarr [2] [1] =它将是:这是新的第8行
是否可以在某个循环或任何内容中创建?或者可能以某种方式把它放在一个数组中?
答案 0 :(得分:1)
您可以使用explode功能并检测换行符(&#34; \ n&#34;)将每个textarea的内容分解为数组
以下是一个示例脚本:
<form method="POST">
<textarea name="txt[1]" rows="6" cols="30"></textarea> <br/>
<textarea name="txt[2]" rows="6" cols="30"></textarea> <br/>
<input type="submit" />
</form>
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' ){
$txt = $_POST['txt'];
$txt[1] = explode( "\n" , $txt[1] );
$txt[2] = explode( "\n", $txt[2] );
print_r( $txt );
}
?>
结果数组将是这样的:
Array
(
[1] => Array
(
[0] => aaa bbb ccc
[1] => ddd eee fff
)
[2] => Array
(
[0] => www qqq ttt
[1] => bbb mmm kkk
)
)
答案 1 :(得分:0)
不是命名文本区域txt[1] txt[2] etc..
,而是将它们命名为txt1 txt2 etc...
<?php
if(isset($_POST['submit'])){ //On submit
$i = 1; //index of every text area. EX: txt1, txt2
$result = array();
while(isset($_POST["txt$i"])){
$result[$i-1] = array(); //initialize the array starting from $result[0], $result[1] ...
$result[$i-1] = explode("\n",$_POST["txt$i"]);//put every line as a separate element
$i++; //increment i to go the next text area
}
//print the result array created
print_r($result);
}
答案 2 :(得分:0)
PHP将所有txt[*]
个元素视为array
类型的一个请求参数。
所以你的脚本可能如下所示:
if (isset($_REQUEST['txt']) && is_array($arr = $_REQUEST['txt']) {
$myarr = array_map(
function ($v) {
return explode("\n", str_replace("\r\n", "\n", $v));
},
array_values($arr)
);
}