Некоторые из моих файлов HTML содержат строку, например:
{foreach $any_kind_of_charaters} Any kind of string including "\n\r" and spaces here {/foreach}
Я хочу применить PHP's preg_match_all
на них и хочу вернуть хороший array
как показано ниже
Array ( [0] => {foreach $any_kind_of_charaters} Any kind of string including "\n\r" and spaces here {/foreach} [1] => any_kind_of_charaters [2] => Any kind of string including "\n\r" and spaces here )
Этот REGEX: /\{foreach\s+\$(.*)\}\s+(.*)\s+\{\/foreach\}/
работает нормально для меня,
но он терпит неудачу, когда я добавляю новые строки (\ n) между тегами {foreach}{/foreach}
.
Вы будете очень благодарны, спасибо.
МАССА ПОСЛЕ ИСПОЛЬЗОВАНИЯ МОДИФИКАЦИИ «S»
Array ( [0] => {foreach $any_kind_of_charaters} Any kind of string including "\n\r" and spaces here {/foreach} [1] => any_kind_of_charaters} Any kind of string including "\n\r" and spaces here [2] => )
Посмотрите second key
array
содержащий ненужные данные, и last key
array
полностью пуст.
Установите флаг модификатора s
в своем регулярном выражении.
http://php.net/manual/en/reference.pcre.pattern.modifiers.php
Например: /\{foreach\s+\$(.*)\}\s+(.*)\s+\{\/foreach\}/s
<- отметить модификатор