我创建了一个通过正则表达式解析内容的php库。其中一个正则表达式是'#\n-{3,}#'
来解析---
之前只有一个中断,一个新行。
我还使用PHPUnit编写了所有方法的测试,并且总是因为使用新行正则表达式而导致测试失败。我总是用assertSame()
我尝试将后续字符串设置为输入:
$input = PHP_EOL . '---';
$input = '<br>---';
$input = '
---'; // with break in code
正如所料,我设定了:
'<hr/>'
但是总是失败并且出错。如果我将此变量发送到断言检查它将失败并解析不是新行。只有没有正则表达式中的\n
,如'#-{3,}#'
,它才能正常运行而且没有错误。
此外,如果我之前使用带有字符串的新行作为测试的输入,它也可以像
一样工作$input = "test\n---";
但是我想在没有字符串的情况下进行测试,只能从一个新行开始。
前端的解析工作正常,如果内容包含中断并且后跟3 -
,它会从我的降价文件中通过此正则表达式替换。
如何在PHPUnit中将assertSame()
函数设置为字符串之前的新行?
答案 0 :(得分:0)
问题是你在模式中使用单引号。
在PHP中\n
表示&#34;新行&#34;仅在使用双引号时才在字符串中。
$input = PHP_EOL . '---';
preg_match("#\n-{3,}#", $input); // this will match