所以,这里是我想要做的事情的概述,我正在跟踪参加活动的学生名单。该列表将存储在变量中以及有关该事件的一些其他信息,并且该信息将作为电子邮件发送。
我正在努力使用户只需输入学生姓名作为[名字] [姓],每行一个。然后程序将整个textarea列表作为一个字符串,并用新行字符拆分。从这个新创建的列表中,它将按空格字符拆分每个项目,并将列表重新排列为[lastname] [逗号] [firstname],然后将其按字母顺序升序排序。
我的HTML代码中有一个表单:
<form action="submitted.php" method="post">
提交的信息将转到我的脚本&#34; submitted.php&#34;并使用POST
方法。
在表单中我有一个textarea
:<textarea id="studentList" name="stuList"></textarea>
这是我的PHP代码:
<?php
/* get some other variables first */
$msg = ""; // holds the entire email message body
/* get the values from the textarea */
$list = $_POST["stuList"]; // use the 'name' attribute on the textarea
// split the student list
$list = explode("\n", $list);
$newList = array();
for($i = 0; $i < count($list); $i++) {
$arr = explode(" ", $list[$i]);
$fName = $arr[0];
$lName = $arr[1];
$newList[] = $lName . ", " . $fName;
}
sort($newList);
for($i = 0; $i < count($newList); $i++) {
$msg .= ($newList[$i] . "\n");
}
mail($toAddr, $subject, $msg, $fromAddr);
?>
问题是,在电子邮件中,还有更多&#34;新行&#34;比应该有的。例如,如果我在文本字段中输入一些值:
John Smith
Andy Jones
Sally Sue
列表按姓氏正确排序,但显示如下:
Jones, Andy
Smith
, John
Sue
, Sally
如果有任何帮助,请告诉我是否需要澄清任何内容。
答案 0 :(得分:0)
我无法复制报告的输出OP,但希望在获得所需结果的同时帮助简化代码。
我使用关联数组使代码更简单,并且删除了使用&#34; lastName,firstName&#34;的必要性。当然,您可以更改代码以使用该格式。
$list = $_POST["stuList"];
$list = explode("\n", $list);
$newList = array();
foreach ($list as $item) {
$nameParts = explode(" ", $item);
$newList[$nameParts[1]] = $item;
}
ksort($newList);
$msg = implode(",\n", $newList)