从字符串中删除特定的子字符串

时间:2011-06-16 09:53:34

标签: php file string

我在阅读文件后有以下文字:

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

我们如何使用字符串匹配技术来实现这一目标?

由于

6 个答案:

答案 0 :(得分:5)

执行此操作的一种方法如下:(假设前缀始终具有相同的长度)

$output = '';
$tmp    = explode("\n",$input);

foreach($tmp as $t)
    $output .= substr($t,25)."\n";

echo $output;

首先通过在每个新行上拆分变量来explode输入变量,然后为每一行删除前25个字符以创建新输出。

http://codepad.org/ewuecNuU

答案 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,以查找最后一次出现,如下面的评论