0

我想从包含字符串的文件中删除该行$snum。我让它工作,但它留下了一个换行符。我怎样才能摆脱它?我尝试了下面的修剪功能,但它不起作用。

<?php

$snum=$_GET['snum'];

$filePath = './SLBrecords.csv';

$fileArr = file( $filePath );

//$fileArr = file( $filePath, FILE_SKIP_EMPTY_LINES);

foreach($fileArr as $k=>$line) {
    if (strpos($line,$snum) !== false) {
        unset($fileArr[$k]);
        trim(preg_replace('/\s\s+/', ' ', $fileArr[$k]));
    }
}
$success = FALSE;
if ( file_put_contents( $filePath, implode( '', $fileArr ), LOCK_EX ) )
{
    $success = TRUE;
}

header("Location: sfadhome.php");

?>
4

1 回答 1

1

修订 #5 同时,我做了一个重大测试(使用各种字符串 - 也有 "\n" 和 "\r\n") - 我认为这个就是你要找的那个:

<?php

 $cont = file_get_contents($filePath);

 $quoted = preg_quote($snum);

 $replace = array(
   '/^[^\r\n]*'.$quoted.'[^\r\n]*($|\r?\n)/' => '',
   '/\r?\n[^\r\n]*'.$quoted.'[^\r\n]*($|\r?\n)/' => '$1'
 );

 $cont = trim(preg_replace(array_keys($replace), array_values($replace), $cont));

 file_put_contents($filePath, $cont);

如果它不起作用,请告诉我 - 我相信我们会修复它!

于 2013-04-16T08:33:01.020 回答