В переменной PHP у меня есть текст, который содержит несколько ключевых слов. Эти ключевые слова в настоящее время с большой буквы. Я хотел бы, чтобы они оставались заглавными и были заключены в фигурные скобки, но только один раз. Я пытаюсь написать код обновления, но каждый раз, когда он запускается, он заключает ключевые слова в другой набор фигурных скобок.
Какой REGEX мне нужно использовать, чтобы соответствовать только одному ключевому слову, но не совпадать с ним, если оно {KEYWORD}.
Например, текстовая переменная:
$string = "BLOGNAME has posted COUNT new item(s),
TABLE
POSTTIME AUTHORNAME
You received this e-mail because you asked to be notified when new updates are posted.
Best regards,
MYNAME
EMAIL";
А мой код обновления:
$keywords = array('BLOGNAME', 'BLOGLINK', 'TITLE', 'POST', 'POSTTIME', 'TABLE', 'TABLELINKS', 'PERMALINK', 'TINYLINK', 'DATE', 'TIME', 'MYNAME', 'EMAIL', 'AUTHORNAME', 'LINK', 'CATS', 'TAGS', 'COUNT', 'ACTION');
foreach ($keywords as $keyword) {
$regex = '|(^\{){0,1}(\b' . $keyword . '\b)(^\}){0,1}|';
$replace = '{' . $keyword . '}';
$string = preg_replace($regex, $replace, $string);
}
Мой REGEX в настоящее время не работает должным образом, он убирает некоторые пробелы, а также при каждом запуске помещает больше фигурных скобок вокруг большинства (но не всех) ключевых слов. Что я делаю неправильно? Может кто-нибудь исправить мое регулярное выражение?