用PHP preg_replace转义捕获的表达式

用PHP preg_replace转义捕获的表达式,php,regex,preg-replace,ckeditor,Php,Regex,Preg Replace,Ckeditor,我正在努力解决preg_replace问题,我真的希望有人能发现我的错误。正则表达式似乎是我的致命弱点 我试图用替换像{{123.jpg}}这样的字符串 我搜索了类似的问题并找到了preg_quote,但我认为我的替换字符串的非正则部分中没有任何正则字符,所以我不知所措 以下是我正在尝试的: function replace($article_id,$text){ $pattern = '/\{\{(.*?)\}\}/'; $replacement = '<img src=

我正在努力解决preg_replace问题,我真的希望有人能发现我的错误。正则表达式似乎是我的致命弱点

我试图用
替换像
{{123.jpg}}
这样的字符串

我搜索了类似的问题并找到了
preg_quote
,但我认为我的替换字符串的非正则部分中没有任何正则字符,所以我不知所措

以下是我正在尝试的:

function replace($article_id,$text){
    $pattern = '/\{\{(.*?)\}\}/';
    $replacement = '<img src="'.URL_CONSTANT.'articles/'.$article_id.'/'.'${1}'.'"></img>';
    return preg_replace($pattern, $replacement, $text);
}
函数替换($article\u id,$text){
$pattern='/\{(.*?\}}}/';
$replacement='';
返回preg_replace($pattern,$replacement,$text);
}
我可以确认图案匹配,但没有正确替换。我认为这个问题可能与替换
${1}
之前的最后一个
/
有关,但我不明白为什么,因为我不相信它是一个特殊的正则字符

感谢您的帮助


编辑:我发现问题与我的表情无关。感谢所有帮助我确认我的表情正确的人感谢所有帮助过你的人!我发现问题不在于正则表达式,而在于CKEditor的“scayt”自动更正插件。它将{{124.jpg}}快捷方式标记转换为跨距,因为它检测到它们是拼写错误的单词。我编写了另一个正则表达式,它删除了这些跨度,并用原始的{abc.def}格式替换它们。这似乎解决了问题。

。“你遇到了什么问题?”亚历克斯很有意思。感谢您抽出时间进行测试。我想知道当文本被重新解释时是否会出现这个问题。我正在截取到CKEditor的输入,并用完整的图像标记替换图像快捷方式。如果您可以在上复制此问题,请链接我,我将再看一看。另外,
{$1}
对于反向引用也很好,它也减少了歧义。没有
,它只是一个标签:
@baz谢谢!我的HTML有点生锈了。谢谢你的帮助。