Проверка регулярных выражений с новой строкой \ n через PHPUnit - PullRequest
0 голосов
/ 18 мая 2018

Я создал библиотеку php, которая анализирует содержимое с помощью регулярных выражений.Одним из этих регулярных выражений является '#\n-{3,}#' для анализа --- только с разрывом, новой строкой, перед.

У меня также есть тесты, написанные на PHPUnit для всех методов, и всегда получаю ошибку для тестов сновая строка регулярное выражениеЯ проверяю всегда с assertSame()

Я пытался установить в качестве входных данных следующие строки:

  1. $input = PHP_EOL . '---';
  2. $input = '<br>---';
  3. $input = ' ---'; // with break in code

Как и ожидалось, я установил:

  • '<hr/>'

Однако всегда это терпит неудачу и получаетсяошибка.Если я отправлю эти переменные в проверку assert, то произойдет сбой и не будет анализироваться новая строка.Только без \n внутри Regex, как '#-{3,}#', он отлично работает без ошибок для тестов.

Также, если я использую в качестве входных данных для теста новую строку со строкой ранее, он также работает, как

  • $input = "test\n---";

Но я хотел бы также проверить без строки, только начать с новой строки.

Разбор для фронтаend отлично работает, он заменяет это регулярное выражение из моего файла уценки, если содержимое включает в себя разрыв и затем 3 -.

. Как это можно установить в качестве входных данных для функции assertSame() вPHPВвести новую строку перед строкой?

1 Ответ

0 голосов
/ 22 мая 2018

Проблема в том, что в шаблоне используются одинарные кавычки.

В PHP \n означает «новую строку» в строке, только если используются двойные кавычки.

$input = PHP_EOL . '---';

preg_match("#\n-{3,}#", $input); // this will match

Смотри https://3v4l.org/EpEGf

...