Станьте довольными между двумя строками PHP

Это, вероятно, не ответит на все Ваши вопросы, если таковые имеются, но я принял решение в одном проекте сделать поблочное тестирование против DB. Я чувствовал в своем случае, что структура DB нуждалась в тестировании также, т.е. сделала мой дизайн DB, поставляют то, что необходимо для приложения. Позже в проекте, когда я чувствую, структура DB стабильна, я, вероятно, перееду от этого.

Для генерации данных я решил создать внешнее приложение, которое заполнило DB "случайными" данными, я создал имя человека и генераторы названия компании и т.д.

причина того, чтобы сделать, это во внешней программе было: 1. Я мог повторно выполниться, тесты на тестом изменили данные, т.е. проверку, что мои тесты смогли работать несколько раз, и модификация данных, сделанная тестами, были допустимые модификации. 2. Я мог в случае необходимости, чистить DB и получать начало с нуля.

я соглашаюсь, что существуют точки отказа в этом подходе, но в моем случае с тех пор, например, поколение человека была часть генерирующихся данных бизнес-логики для тестов, на самом деле тестировал ту часть также.

24
задан Lizard 18 September 2009 в 16:06
поделиться

3 ответа

  • Используйте # вместо / , чтобы вам не приходилось их избегать.
  • Модификатор s составляет . и \ s также включают символы новой строки.
  • { и } имеют различные функции, например от n до m раз в {n, m} .
  • Базовый

     preg_match ('# \\ {FINDME \\} (. +) \\ {/ FINDME \\} # s', $ out, $ соответствует);
    
  • Расширенные возможности для различных тегов и т. Д. (Стили не так хороши для javascript).

     $ delimiter = '#';
    $ startTag = '{НАЙТИ}';
    $ endTag = '{/ FINDME}';
    $ regex = $ разделитель. preg_quote ($ startTag, $ delimiter)
    . '(. *?)'
    . preg_quote ($ endTag, $ delimiter)
    . разделитель $
    . 's';
    preg_match ($ regex, $ out, $ соответствует);
    

Поместите этот код в функцию

  • Для любого файла, который вы не хотите выполнять какой-либо случайный PHP-код, вы должны использовать file_get_contents. include / require не должно быть там параметра.
42
ответ дан 28 November 2019 в 22:15
поделиться

Вы также можете использовать для этого substr и strpos.

$startsAt = strpos($out, "{FINDME}") + strlen("{FINDME}");
$endsAt = strpos($out, "{/FINDME}", $startsAt);
$result = substr($out, $startsAt, $endsAt - $startsAt);

Вам нужно будет добавить проверку ошибок, чтобы обработать случай, когда не выполняется FINDME.

42
ответ дан 28 November 2019 в 22:15
поделиться

Разрывы строк могут вызвать проблемы в RegEx, попробуйте удалить или заменить их на \ n перед обработкой.

1
ответ дан 28 November 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: