Php 为什么STRU replace不能正常工作

Php 为什么STRU replace不能正常工作,php,Php,在我的目录中,我有一个list.csv格式: RP2015, active Hope, paused Process99, active 我正在编写一个php脚本,允许web用户将不同的行从“活动”切换到“暂停”再切换回来。不幸的是,我遇到了一个障碍。我当前的代码位于: 看起来是这样的 <HTML> <Body> <? if ($_POST != null) { $target = $_POST ['sprin

在我的目录中,我有一个
list.csv
格式:

RP2015, active
Hope, paused 
Process99, active
我正在编写一个php脚本,允许web用户将不同的行从“活动”切换到“暂停”再切换回来。不幸的是,我遇到了一个障碍。我当前的代码位于:

看起来是这样的

     <HTML>
   <Body>

   <?
   if ($_POST != null) {
           $target = $_POST ['sprint'];
           echo "<br>Target was:".$target;
           $replacement=str_replace('active','paused',$target);
           if (strpos($target,'paused') !== false) {
                 $replacement=str_replace('paused','active',$target);
          }       
          echo "<br>Replacement was:".$replacement."<br>";
          $filename = "list.csv";
         $contents = file_get_contents($filename);
          print "<br>contents was:".$contents;
          $new_contents = str_replace($target, $replacement, $contents);
          print "<br>contents became:".$new_contents;
          file_put_contents($filename, $new_contents);
  }       
  ?>      
<br><br>
  <?php
  $row = 1;
  if (($handle = fopen("list.csv", "r")) !== FALSE) {
      while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
              $num = count($data);
              $row++;
              echo '<form action="index.php" method=post>';
              echo $data[0] . $data[1];
              echo '<button type="submit" value="'. $data[0].", ".$data[1].'"     name="sprint">Pause</button></form><br>';
     }
      fclose($handle);
  }
  ?>
  </body>
  </html>
谁能告诉我发生了什么事

编辑:

当前的list.csv正好是:

RP2015, active
`试试这个:-
$fp=fopen($filename,“wb”)
$handle=fopen($filename,“wb”)
$replacement=str_replace(“活动”、“暂停”和$fp)
$numbytes=fwrite($handle,$replacement)

fclose($handle)

我忘记了一件事,html将连续的空格压缩在一起,这就是为什么$target看起来很好。实际上:

$data[0].", ".$data[1]
只需要

$data[0].",".$data[1]
因为csv解析留下了一个空间。我将在将来使代码更加健壮

对于感兴趣的人-我编写的这个帮助函数帮助我找到了错误:

    function toask($inStr){
 $arr1 = str_split($inStr);
    foreach ( $arr1 as $a){
      print ord($a)." ";
      }
      }

它将字符串转换为ascii码序列。例如,您是否可以确保引号字符是您认为的字符

您可以删除
$fp=fopen($filename,'r+')
fclose($fp)你没有在任何地方使用它们。是的,文件内容与fopen不兼容!所以你不需要那行扫描,你可以共享列表中的几行。csvOooh谢谢@AlexAndrei-这很有用。@n01ze-我做了一个编辑-list.csv现在字面上是“RP2015,active:)
    function toask($inStr){
 $arr1 = str_split($inStr);
    foreach ( $arr1 as $a){
      print ord($a)." ";
      }
      }