Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Shell脚本或命令,用于删除整个目录中开始字符和结束字符之间的所有文本_Php_Linux_Shell_Command Line_Comments - Fatal编程技术网

Php Shell脚本或命令,用于删除整个目录中开始字符和结束字符之间的所有文本

Php Shell脚本或命令,用于删除整个目录中开始字符和结束字符之间的所有文本,php,linux,shell,command-line,comments,Php,Linux,Shell,Command Line,Comments,正在寻找一种简单的方法来删除整个脚本目录中的所有待办事项:注释 如果我有: /* TODO: Some text here Some more Here Some more Here */ 我想删除/*和之间的所有内容*/ 没什么大不了的,只是想知道如何减小文件大小 $file = 'somefile.php'; $f = fopen($file,'r'); $temp = dirname($file).'/temp.php'; print_r($temp); $t = fopen($tem

正在寻找一种简单的方法来删除整个脚本目录中的所有待办事项:注释

如果我有:

/*
TODO: Some text here
Some more Here
Some more Here
*/
我想删除/*和之间的所有内容*/
没什么大不了的,只是想知道如何减小文件大小

$file = 'somefile.php';

$f = fopen($file,'r');
$temp = dirname($file).'/temp.php';
print_r($temp);
$t = fopen($temp, 'w');

$mode = 'write';
$buffer = [];
while($line=fgets($f)){
    print_r($mode."\n");
    switch($mode){
        case 'write':
            if(preg_match('/^\s*\/\\*/', $line)){
                $buffer[] = $line;
                $mode = 'comment';
            }else{
                fputs($t,$line);
            }
        break;
        case 'comment': 
            if(preg_match('/^\s*\\**\s*@TODO/i', $line)){
                $buffer = [];
                $mode = 'skip';
            }else if(preg_match('/^\s*\\*\//', $line)){
                fwrite($t,implode("", $buffer));
                $buffer = [];
                fputs($t,$line);
                $mode = 'write';
            }else{
                $buffer[] = $line;
            }
        break;
        case 'skip':
            if(preg_match('/^\s*\\*\//', $line)){
                $mode = 'write';
            }
        break;
    }
}
/*
fclose($t);
fclose($f);
rename($temp, $file);
*/
我用这个文件测试了它

<?php
$var= "foo";

/*
 @todo hello
 some other shuff
 */



/**
 * 
 * @author Me
 *
 */
class someclass{



}
希望能有帮助。在尝试此操作之前,我可能会备份您的文件

更新

必须修复一些小问题,以便在没有
@todo
的情况下跳过注释。剩下的你可能很容易就能解决

正则表达式只是用来解释类似这样的空格或注释

/*
* @todo
*/
对于正则表达式引擎,此
\\*
变为
\*
,然后变为文本
*

所以这个
\s*\/\\*

  • \s*
    -没有或多个空格
  • \/
    -字面上的
    /
  • \\*
    -字面上的
    *
或者在英语中使用
/*
打开注释标记

我提到这一点是因为正则表达式很复杂,但是你可能有空格和其他东西,可能每个
@todo
都不是第一件事


这样做,您就可以自己处理每一行,它简化了事情,更重要的是提高了匹配的准确性。

您是否已经查看了您最喜欢的搜索引擎并阅读了PowerShell文档?正如你所说,这没什么大不了的。Linux…没有具体说明。是的,我已经浏览了数百个破解代码的答案。感谢您的关注:)可能的副本,当然看了,但显然不够。。。
/*
* @todo
*/