PHP换行数组

时间:2018-03-17 20:21:58

标签: php arrays forms line-breaks

我有三个HTML表单字段值(名称,单词,邮件),我尝试在php中连接并写入我服务器上的一个单独的txt文件:

每个值应该在txt字段的新行上,这就是我在数组中添加“\ n”的原因....这是我的错误?

非常感谢您的帮助!

@Html.DisplayFor(e => e.MyList)

5 个答案:

答案 0 :(得分:3)

我没有看到使用array,你可以将它们连接起来:

$data = $name . "\n" . $mail . "\n" . $saywords ;

答案 1 :(得分:3)

你有两个问题:

  • $data应该是字符串而不是数组
  • .连接左侧和右侧:"abc" . "def"变为"abcdef"
    • . "\n". "\n" $mail一样将点放在第一位在PHP中没有意义,所以你会得到一个解析错误。

$data =行替换为$data = $name . "\n" . $mail . "\n" . $saywords;,您就可以了。

答案 2 :(得分:1)

这取决于服务器的操作系统。 请尝试使用"\r\n"代替"\n"

答案 3 :(得分:0)

好的,这是我的镜头。

/*first of all, you should always check if posted vars are actually set
and not empty. for that, you can use an universal function "empty", which
checks if the variable is set / not null / not an empty string / not 0. 
In such way you will avoid PHP warnings, when some of these variables 
will not be set*/

        $name = !empty($_POST['name']) ? $_POST['name'] : '';
        $saywords = !empty($_POST['saywords']) ? : $_POST['saywords'] : '';;
        $mail = !empty($_POST['mail']) ? $_POST['mail'] : '';

/*Secondly, do not use \n, \r, \r\n, because these are platform specific. 
Use PHP_EOL constant, it will do the job perfectly, by choosing 
what type of line-break to use best.

    As others mentioned - in your scenario, the string would be better solution. 
Add everything into string, and then put its contents into file. Avoid using 
double quotes, when you define PHP strings, and use single quotes instead - for 
performance and cleaner code.

    */


        $data = 'Name: '.$name.PHP_EOL.'E-Mail: '.$mail.PHP_EOL.'Message: '.$saywords.PHP_EOL.PHP_EOL;


        file_put_contents($t.$ip.'.txt', $data); // Will put the text to file

顺便说一句,我强烈建议在将数据保存到该txt文件之前添加一些额外的验证。使用此代码,通过发布大量无限制的数据,有人可以轻松搞乱txt文件的内容。

提示:

1)仅接受长度和字符有限的名称(不允许使用特殊符号或换行符 - 您也可以在保存之前将其过滤掉)

2)验证已输入的电子邮件 - 如果格式正确,是否存在电子邮件地址域的mx记录,等等......

3)接受" saywords"长度有限,如果需要 - 拒绝或过滤掉特殊字符。

通过这种方式,您将获得更清晰的提交。

答案 4 :(得分:-1)

使用html代码时使用<br />