我的自定义 drupal 模块提供了自定义输入过滤器,功能如下:
function my_custom_filter($ text){
return preg_replace('~<img(.*)src=\"/sites/default/files/(.*)\"~', '<img$1src="' . variable_get('static_url', "http://fileserver.com") ."/". file_directory_path() . "/" . '$2' . "\"", $text);
}
如您所见,我使用模块进行cdn文件服务器更改,以便在rte中输入图像(我使用tinymce)。
问题是,我的过滤器只更改给定文本的最后一个模式。我不明白为什么会这样,有什么想法?
答案 0 :(得分:1)
我认为问题在于你的。*过于贪婪,并选择了大部分文字 - 从第一个'&lt; img'到最后一个'src ='
尝试在第二个模式〜之后添加pcre模式修饰符U(即大写U)。这会将模式的。*部分反转为不合格,并尽可能少地匹配。