2011-02-04 70 views
1

我的自定義drupal的模塊提供自定義的輸入濾波器,該函數是如下:drupal的輸入濾波器的改變僅一個圖案

功能my_custom_filter($文本){

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

我認爲問題是,你的*是過於貪婪,並選擇最文本 - 從第一「< IMG」最後「SRC =」

嘗試添加PCRE模式修改ü (這是大寫的U)在第二種模式〜之後。這將會顛倒模式中的部分模式,使其變得不合格,並儘可能少地匹配字符。