$matches = array();
$str = '{theme}pink{/theme}';
preg_match('/{([^}]+)}([^{]+){\/([^}]+)}/', $str, $matches);
var_dump($matches);
Это исключит все совпадения из всех "тегов", которые вы можете искать. Попробуйте и посмотрите на $matches
, и вы поймете, что я имею в виду. Я предполагаю, что вы пытаетесь создать свой собственный элементарный язык шаблонов, так что этот фрагмент кода может быть полезен для вас. Если да, я могу предложить посмотреть что-то вроде Smarty .
В любом случае вам нужны круглые скобки для захвата значений в регулярных выражениях. Выше три зафиксированных значения:
([^}]+)
будет захватывать значение открывающего «тега», которое составляет theme
. [^}]+
означает «один или несколько любых символов, НО символ }
, что делает его по умолчанию не жадным.
([^{]+)
Будет фиксировать значение между тегами. В этом случае мы хотим сопоставить все символы, НО символ {
.
([^}]+)
Будет фиксировать значение закрывающего тега.