我在阅读文件后有以下文字:
06/16/2011 04:01:05 AM : Process Start
06/16/2011 04:01:05 AM : Creating File
06/16/2011 04:01:05 AM : Opening File
06/16/2011 04:01:05 AM : Writing Text
06/16/2011 04:01:05 AM : Closing File
06/16/2011 04:01:05 AM : Sending File in email
06/16/2011 04:01:05 AM : Process End
我想在每行的开头删除日期和时间,如下所示:
Process Start
Creating File
Opening File
Writing Text
Closing File
Sending File in email
Process End
我们如何使用字符串匹配技术来实现这一目标?
由于
答案 0 :(得分:5)
执行此操作的一种方法如下:(假设前缀始终具有相同的长度)
$output = '';
$tmp = explode("\n",$input);
foreach($tmp as $t)
$output .= substr($t,25)."\n";
echo $output;
首先通过在每个新行上拆分变量来explode
输入变量,然后为每一行删除前25个字符以创建新输出。
答案 1 :(得分:2)
日期和时间在文件中保持不变。使用substr函数从每行的开头处截断25个符号。
答案 2 :(得分:2)
如果所有字符串都以相同长度的文本作为前缀,请使用substring。如果没有,请使用正则表达式匹配。
答案 3 :(得分:2)
根据您的示例,最好的方法是使用substr()
,因为前缀的大小始终相同。但如果你真的需要匹配技术,它将看起来像这样:
$new_line = preg_replace('^/\d{2}\/\d{2}\/\d{4}\/ \d{2}:\d{2}:\d{2}\/ (?:AM|PM) : /', '', $line);
答案 4 :(得分:1)
echo preg_replace('/(.*): /', '', $input);
答案 5 :(得分:1)
$str = "text : to : remove : text to keep";
$pos = strrpos($str, ":");
$str2 = substr($str, $pos+1);
echo $str2;
编辑:将strpos更改为strrpos,以查找最后一次出现,如下面的评论