drupal输入过滤器只改变一种模式

时间:2011-02-04 18:00:50

标签: drupal preg-replace cdn fileserver

我的自定义 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)。

问题是,我的过滤器只更改给定文本的最后一个模式。我不明白为什么会这样,有什么想法?

1 个答案:

答案 0 :(得分:1)

我认为问题在于你的。*过于贪婪,并选择了大部分文字 - 从第一个'&lt; img'到最后一个'src ='

尝试在第二个模式〜之后添加pcre模式修饰符U(即大写U)。这会将模式的。*部分反转为不合格,并尽可能少地匹配。