PHP中HEREDOC字符串内的正则表达式

时间:2013-10-10 12:19:01

标签: php regex csv heredoc behat

我有一个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。很抱歉这个问题的质量,但我对所有这些语言/工具/框架都很陌生......

2 个答案:

答案 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()等函数一起使用。