如何用php保存.txt文件中的textarea内容

时间:2014-01-04 11:13:59

标签: php arrays forms textarea

我是php的初学者,我正在尝试在news.txt文件中保存textarea内容。

保存后,我会在另一页显示结果。 一切正常,ddate和标题显示完美,甚至textarea内容,但如果按Enter键创建一个新行,它就不再起作用了。

这是发生的事情和一些代码。

注意:未定义的偏移量:第17行的C:\ Virtual Servers \ xampp \ htdocs \ read.php中的1

注意:未定义的偏移量:第18行的C:\ Virtual Servers \ xampp \ htdocs \ read.php中的2

和我的代码:

read.php page

<html>
    <head>
    <style>
    .news{background:#f1f1f1;width:960px;height:500px;margin-bottom:15px;}
    .title{color:red;}
    .date{font-style:italic;}
    .text{color:green;font-weight:bold;}
    </style>
    </head>
    <body>
    <?php
        $i = 0;
        $array = file("news/news.txt");
        foreach($array as $row){
            $split = explode('|', "$row");
            $data = $split[0];
            $titolo = $split[1];
            $testo = $split[2];
            $i++;
            print '<div id="'.$i.'" class="news"><div class="date">'.$data.'</div><div class="title">'.$titolo.'</div><div class="text">'.$testo.'</div></div>';
            }       
    ?>

    </body>
    </html>

index.php页面:

<div class="container">
      <form name="myform" onsubmit="return validateForm()" action="welcome.php" method="post">
        <?php echo date('d-m-Y'); ?></br>
        <h1>Titolo:</h1><input type="text" id="Title" name="titolo" class="textStyleTitle"><br>
        <p>Testo:</p><textarea id="Text" name="testo" class="textStyleText"></textarea><br>
        <input type="submit" value="salva">
       </form>
    </div>

任何解决方案?

非常感谢。

!! UPDATE !! 通过下面提到的解决方案,我已经部分解决了。我没有错误,但这是它的样子:

    <body>
    <div id="1" class="news">
          <div class="date">04-01-2014</div>
          <div class="title">Testing title</div>
          <div class="text">Testing textarea row 1 (enter pressed)</div>
    </div>
    <div id="2" class="news">
          <div class="date">Testing textarea row 2 (enter pressed)</div>
          <div class="title"></div><div class="text"></div></div>
    <div id="3" class="news">
          <div class="date">Testing textarea row 3 (enter pressed)</div>
         <div class="title"></div><div class="text"></div></div>
   <div id="4" class="news">
          <div class="date">Testing textarea row 4</div>
          <div class="title"></div><div class="text"></div>
   </div></body>
不幸的是,我试图达到的是这样的:

<body>
<div id="1" class="news">
     <div class="date">04-01-2014</div>
     <div class="title">Testing title</div>
     <div class="text">Testing textarea row 1 (enter pressed)
                       Testing textarea row 2 (enter pressed)
                       Testing textarea row 3 (enter pressed)
                       Testing textarea row 4
     </div>
</div>

3 个答案:

答案 0 :(得分:1)

首先删除爆炸中的$ row引号,如下所示: $split = explode('|', $row);然后

使用:

 $data = (isset($split[0])?$split[0]:"");

而不是

 $data = $split[0];

$split[1]$split[2]

相同

答案 1 :(得分:0)

您在此处犯了错误$split = explode('|','$row'),无需将$row设置为 引号,因为它将它用作string而非数组

您需要使用此$split = explode('|',$row)将字符串分解为数组

答案 2 :(得分:0)

试试这段代码。

 foreach($array as $row){
            $data = $titolo = $testo = "";// initialize the valiables 
            $split = explode('|', $row);
            $data = (isset($split[0])?$split[0]:"");
            $titolo = (isset($split[1])?$split[1]:"");
            $testo = (isset($split[2])?$split[2]:"");
            $i++;
            print '<div id="'.$i.'" class="news"><div class="date">'.$data.'</div><div class="title">'.$titolo.'</div><div class="text">'.$testo.'</div></div>';
            }