1

我的自定义drupal模块提供了一个自定义输入过滤器,功能如下:

功能 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);

}

如您所见,我使用该模块对在 rte 中输入的图像进行 cdn 文件服务器更改(我使用 tinymce)。

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

4

1 回答 1

1

我认为问题在于您的 .* 太贪心了,并且选择了大部分文本 - 从第一个 '<img' 到最后一个 'src='

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

于 2011-02-04T18:57:25.040 回答