<?php
$input = '{html owner="html" placeholder="content"}{html owner="html" placeholder="after_content"}';
$callback = function($matches){
echo "Tag name: {$matches['name']}\n";
if (preg_match_all('#(?P<attributes>[\w-]+)\s*=\s*"(?P<values>[^\"]+)"#iu', $matches['attributes'], $attributes)) { }
};
'#{
(?P<name>[\w-]+)\s+
(?P<attributes>[^{}]+)\s*
}
#iux',
$callback,
$input
);
PD9waHAKJGlucHV0ID0gJ3todG1sIG93bmVyPSJodG1sIiBwbGFjZWhvbGRlcj0iY29udGVudCJ9e2h0bWwgb3duZXI9Imh0bWwiIHBsYWNlaG9sZGVyPSJhZnRlcl9jb250ZW50In0nOwoKJGNhbGxiYWNrID0gZnVuY3Rpb24oJG1hdGNoZXMpewogICAgZWNobyAiVGFnIG5hbWU6IHskbWF0Y2hlc1snbmFtZSddfVxuIjsKICAgIGlmIChwcmVnX21hdGNoX2FsbCgnIyg/UDxhdHRyaWJ1dGVzPltcdy1dKylccyo9XHMqIig/UDx2YWx1ZXM+W15cIl0rKSIjaXUnLCAkbWF0Y2hlc1snYXR0cmlidXRlcyddLCAkYXR0cmlidXRlcykpIHsKICAgICAgICB2YXJfZHVtcChhcnJheV9jb21iaW5lKCRhdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ10sICRhdHRyaWJ1dGVzWyd2YWx1ZXMnXSkpOwogICAgfQp9OwoKcHJlZ19yZXBsYWNlX2NhbGxiYWNrKAogICAgJyN7CiAgICAgICAgKD9QPG5hbWU+W1x3LV0rKVxzKwogICAgICAgICg/UDxhdHRyaWJ1dGVzPltee31dKylccyoKICAgICAgfQogICAgI2l1eCcsCiAgICAkY2FsbGJhY2ssCiAgICAkaW5wdXQKKTs=