2

我有一个从我的网络应用程序下载的包含此内容的 CSV 文件:

Date,Name
2013-10-09T12:11:00+01:00,SomeName
2013-10-09T12:15:00+01:00,OtherName

现在我正在编写一个 Behat 场景来检查下载文件的内容是否正确,所以在我的步骤定义中,我有这个代表应该下载的 CSV 文件的 HEREDOC 字符串:

$expectedData = <<<CSV
Date,Name
2013-10-09T12:11:00+01:00,SomeName
2013-10-09T12:15:00+01:00,OtherName

CSV;

我想要做的是用正则表达式替换您可以在字符串中看到的日期$expectedData,因为在我的 Behat 场景中,我不知道下载的文件中会出现什么日期......有可能吗?

PS对不起这个问题的质量,但我对所有这些语言/工具/框架都很陌生......

4

2 回答 2

4

是的,肯定可以使用/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
于 2013-10-10T12:22:33.403 回答
0

Value of $expectedData is normal string so you can use it with functions like str_replace() or preg_replace().

于 2013-10-10T12:20:29.110 回答