使用php

时间:2018-09-19 10:31:46

标签: php laravel

我需要使用PHP删除这两个字符/ *&* /之间的特定文件内容。我要从中删除这些注释的文件很大,并且包含很大的数据集,因此,感谢您提供优化的解决方案。

示例内容:

/*SOME TEXT HERE

*/ 12314

因此,最终文件应仅包含

1234

在获得注释字符串之前,这是一直运行的方法。请注意,注释仅在文件中的一个位置,并且始终位于文件的顶部。请让我知道如何删除符合评论条件的行? 下面是我更新的方法。

 $reading = fopen(public_path('file.csv'), 'r');
$writing = fopen(public_path('file.csv'), 'w');
$counter = 0;
$line = "";
$no_of_lines = 0;


while (!feof($reading) && $counter != 2) {

    $new_line = fgets($reading);

    if ($matched_string = strstr($new_line, "/*")) {
        $line = $line . $matched_string;        
        $counter++;
    } elseif ($matched_string = strstr($new_line, "*/")) {
        $line = $line . $matched_string;
        $counter++;
    } else {
        $line = $line . $new_line;
        fwrite($writing, "");
    }
    $no_of_lines++;

}


fclose($writing);
fclose($reading);

1 个答案:

答案 0 :(得分:0)

首先打开文件,但一次打开一行以节省内存:

<?php

$reading = fopen('myfile', 'r');
$writing = fopen('newfile', 'w');

while (!feof($reading)) {
  $line = fgets($reading);

  // We will put the removal logic in here      

  fputs($writing, $line);
}

fclose($reading); 
fclose($writing);

对于删除,请使用一些正则表达式。

<?php

$line = preg_replace('#\/\*.+\*\/#', '/* */', $line);

您可以在这里https://3v4l.org/XmltD

看到此功能

如果您也不希望/*,只需将替换调用更改为此:

$string = preg_replace('#\/\*.+\*\/#', '', $string);