Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 从文件中删除包含特定字符串的行_Php_Regex_Preg Replace_Line - Fatal编程技术网

Php 从文件中删除包含特定字符串的行

Php 从文件中删除包含特定字符串的行,php,regex,preg-replace,line,Php,Regex,Preg Replace,Line,我需要从日志文件中删除某些字符串。是的,我知道这听起来很落后,但为了每个人的理智,相信我:没有办法避免这些无用的通知从一开始就被写入日志 因此,为了使我的日志可读,此类通知必须在编写后删除 以下是受污染日志文件的示例: ERROR - 2012-08-06 02:12:01 --> Severity: Notice --> Undefined index: H1 /var/www/vhosts/example.com/httpdocs/application/helpers/mpd

我需要从日志文件中删除某些字符串。是的,我知道这听起来很落后,但为了每个人的理智,相信我:没有办法避免这些无用的通知从一开始就被写入日志

因此,为了使我的日志可读,此类通知必须在编写后删除

以下是受污染日志文件的示例:

ERROR - 2012-08-06 02:12:01 --> Severity: Notice  --> Undefined index: H1 /var/www/vhosts/example.com/httpdocs/application/helpers/mpdf/mpdf.php 14242
ERROR - 2012-08-06 02:12:01 --> Severity: Notice  --> Undefined index: H1>>ID>> /var/www/vhosts/example.com/httpdocs/application/helpers/mpdf/mpdf.php 14288
ERROR - 2012-08-06 02:12:01 --> Severity: Notice  --> Undefined index: H1 /var/www/vhosts/example.com/httpdocs/application/helpers/mpdf/mpdf.php 14242
ERROR - 2012-08-06 02:12:01 --> Severity: Notice  --> Undefined index: H1>>ID>> /var/www/vhosts/example.com/httpdocs/application/helpers/mpdf/mpdf.php 14288
ERROR - 2012-08-06 02:12:01 --> Severity: Notice  --> Undefined index: DIV /var/www/vhosts/example.com/httpdocs/application/helpers/mpdf/mpdf.php 14242
我要删除以下行:

  • 包含“通知”和
  • 包含“未定义”和
  • 包含“mpdf.php”
我相信这可能是一个开始:

$dir = '/var/www/vhosts/example.com/httpdocs/application/logs/log-2012-07-07.php';

$content = file_get_contents($dir);

$new = preg_replace($pattern, '', $content) // <===== need help here with $pattern regex

file_put_contents($dir, $new);
$dir='/var/www/vhosts/example.com/httpdocs/application/logs/log-2012-07-07.php';
$content=file\u get\u contents($dir);
$new=preg_replace($pattern,,$content)//
更一般地说

A="..." B="..." C="..." sed -i "/$A/{/$B/{/$C/ d}}" FILE

将删除包含字符串$A、$B和$C的所有行。

为什么不修复错误?“无法避免这些无用的通知”您是否尝试过找出这些通知发生的原因?如果你有:更加努力。好的。。。好啊这些通知来自mpdf类,该类因生成大量错误通知而臭名昭著,这些错误通知对输出的PDF没有影响-我使用CodeIgniter,因为它的日志体系结构,无法阻止它将所有这些错误记录到file@torr:然后更改PHP设置并从日志中排除通知。这不是一个很好的主意,但它可以从一开始就阻止垃圾被记录。问题是这样我就失去了看到其他错误的机会,这些错误对于维护应用程序的codebaseHm很重要。。。否。我使用sed直接从文件中删除行。。。您可以使用对sed的调用来完成此操作。通过shell脚本或交互式shell,您可以调用它。
A="..." B="..." C="..." sed -i "/$A/{/$B/{/$C/ d}}" FILE