В теле документа есть специальные теги в виде {name}, все бы хорошо, но есть конфликт, когда есть похожий тег {{name}}, где вместо одной фигурной скобки две. Как написать регулярное выражение, чтобы второй вариант игнорировался(. т.е работал только {name}.
Мои пробы:
preg_match_all('/\[^{]*{([ \w\-_0-9#.\+]+)\}[^}]*/u', $cont, $match);
Возможно не универсальное решение, но как начало пойдет, возможно додумаете сами:
$test = '1 {name1} 2 {{name2}} 3 {name3} 4';
preg_match_all('#[^{]{([^{]*)}#U', $test, $out);
var_dump($out[1]);
Результат:
array(2) {
[0]=>
string(5) "name1"
[1]=>
string(5) "name3"
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей