fputcsv() 问题。文本区域未保存在一列中



今天,我发现了数据操作知识的局限性。

我可以通过以下操作成功保存输入字段和文本区域:

$f = fopen($dir, "a");
fputcsv($f, $content, ";");
fclose($f);

稍后,我可以使用explode((检索数据并将其存储在数组中。。。或者我是这么想的!

问题出在我身上。我喜欢BIG文本区域。我目前正在制作一个论坛页面,我想让我的访问者在创建线程时能够换行

例如:

/*
I break the line by pressing ENTER
And again
*/

这是我迄今为止写的代码:

比方说,来自用户的输入看起来像这个

+---------------------------+
| Hello,                    |
| I find this form amazing. |
|                           |
| Can I get a hug?          |
+---------------------------+

用户按下ENTER键3次,使该线程。。

if(isset($_POST['thread']))
{
$thread = htmlspecialchars($_POST['thread']);
$date = date('d.m.Y');
fclose($e);
$f = fopen("../data/forum-data/threads.csv", "a");
$data = array($user, $thread, $date, time(), $mail);
fputcsv($f, $data, ";", chr(127));
fclose($f);
echo '<center><div class="success-box">';
echo 'SUCCESS!';
echo '</center></div>';

$show_forum = true;
//echo "Username: " . $user . "<br>" . "Email: " . $mail; 
}

在我的threads.csv文件中,这是保存的内容:

someuser;Hello
I find this form amazing
can I get a hug?;05.12.2021;1638716270; someone@nix.com

这是希望:

someuser;Hello"< br >"I find this form amazing"< br >""< br >"can I get a hug?;05.12.2021;1638716270;   someone@nix.com

我希望将其保存在一行中,因为根本无法检索数据。例如:

$o = fopen(../data/forum-data/threads.csv);
while(!feof($o))
{
$row = fgets($o, 4096);
$column = explode(";", $row);
foreach($column as $element)
{
echo $element . "< br >";
}
}
fclose($o);

现在,我向你保证。这一页是空白的。除非数据像上面的例子一样保存在一行中,否则什么都不会打印出来。我对任何以php代码为特色的解决方案都持开放态度。我对.js一无所知。

尊敬的

我哭了

您可以使用str_replace()将任何"rn"替换为不同的文本,如<br />。然后,您可以将内容保存在一行中,并通过fputcsv()进行保存。以下示例显示如何使用str_replace():

<?php
$data = "somerncontentrnover multiplernlines";
$dataBr = str_replace("rn", "<br />", $data);
$fp = fopen('test.csv', 'w+');
fputcsv($fp, array('before', $dataBr, 'after'));
fclose($fp);
echo file_get_contents('test.csv');

这将生成以下输出:

before,"some<br />content<br />over multiple<br />lines",after

如您所见,新行("rn"(已被<br />HTML元素替换,内容在一行中。

最新更新