在PHP变量中,我有一些包含一些关键字的文本.这些关键字目前已大写.我希望它们保持大写,并用大括号括起来但只有一次.我正在尝试编写升级代码,但每次运行时,它都会将关键字包装在另一组花括号中.
如果是{KEYWORD},我需要使用什么REG来匹配关键字而不匹配它.
例如,文本变量是:
$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";
Run Code Online (Sandbox Code Playgroud)
我的升级代码是:
$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);
}
Run Code Online (Sandbox Code Playgroud)
我的REGEX目前根本不能正常运行,它正在剥离一些空格,并且每次运行时都会在大多数(但不是全部)关键字周围放置更多的大括号.我究竟做错了什么?有人可以纠正我的正则表达式吗?
你正在寻找消极的断言.他们没有用书面^语法在字符类,但为(?<!...)和(?!...).在你的情况下:
'|(?<!\{)(\b' . $keyword . '\b)(?!\})|';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1077 次 |
| 最近记录: |