我有一个CSV文件,其中包含从我的网络应用程序下载的内容:
Date,Name
2013-10-09T12:11:00+01:00,SomeName
2013-10-09T12:15:00+01:00,OtherName
现在我正在编写一个Behat场景来检查下载文件的内容是否正确,因此在我的步骤定义中,我有这个HEREDOC字符串代表应该下载的CSV文件:
$expectedData = <<<CSV
Date,Name
2013-10-09T12:11:00+01:00,SomeName
2013-10-09T12:15:00+01:00,OtherName
CSV;
我想要做的是用正则表达式替换$expectedData
字符串中可以看到的日期,因为在我的Behat场景中我不知道会出现什么日期在下载的文件中...是否可能?
P.S。很抱歉这个问题的质量,但我对所有这些语言/工具/框架都很陌生......
答案 0 :(得分:3)
确定可以使用/m
(MULTILINE)开关完成。试试这段代码:
$expectedData = <<<CSV
Date,Name
2013-10-09T12:11:00+01:00,SomeName
2013-10-09T12:15:00+01:00,OtherName
CSV;
$re = '/^.+$/'; // some regex here to be placed in 1st column
echo preg_replace('/^(=\d{4}-\d{2}-\d{2})[^,]+/m', $re, $expectedData);
<强>输出:强>
Date,Name
/^.+$/,SomeName
/^.+$/,OtherName
答案 1 :(得分:0)
$expectedData
的值是普通字符串,因此您可以将其与str_replace()
或preg_replace()
等函数一起使用。