Platton
@Platton

Как составить регулярку php поиска по 2 вариантам?

Как будет правильно составить правило поиска по регулярному выражению, взаимозависимости от входного условия, если:
// Первый вариант
$template = '{foreach $groups as $val} FFFFFFFFFFFFF {/foreach}';

или
// Второй вариант
$template = '{foreach $groups as $name => $val} FFFFFFFFFFFFF {/foreach}';

Если 1 вариант тогда поиск нормально проходит:
preg_match_all('/{foreach \$(.*) as \$(.*)}(.*){\/foreach}/Uis', $template, $out, PREG_PATTERN_ORDER);


Как сделать так, чтобы правило поддерживало поиск совпадений для первого и (или) для второго варианта?
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
@Billy_Milligan
/{[ \t]*foreach[ \t]*\$_*[A-Za-z]+[A-Za-z0-9_]*[ \t]*as[ \t]*\$_*[A-Za-z]+[A-Za-z0-9_]*(?:[ \t]=>[ \t]*\$_*[A-Za-z]+[A-Za-z0-9_]*)?[ \t]*}.*{[ \t]*\/foreach[ \t]*}/gi


можете поубирать [ \t]*, если уверены что там точно один пробел и не может быть таба.
_*[A-Za-z]+[A-Za-z0-9_]* - это думаю понятно почему
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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