В своем регулярном выражении вы пытаетесь использовать $
в качестве маркера начала поля.Поскольку PHP требует экранирования $
, в противном случае он будет думать, что вводит подстановку переменных (в двойных кавычках), и будет использовать \
, который вы включили для этой цели.НО это тогда оставляет регулярное выражение как
/$[({].+[)}]/
, и это означает, что он будет использовать $
в качестве маркера конца строки - и, следовательно, не найдет содержимое после.
Итак, перед тем, как доллар подойдет, вам понадобится второй побег, чтобы убедиться, что он правильно подобран ...
$ap = preg_match("/\\$[({].+[)}]/", $vv[$value], $matches);