我需要使用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);
答案 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);