2011-02-04 2 views
1

моего заказа друпал модуль обеспечивает пользовательские входной фильтр, функция ниже:Друпали изменений входного фильтра только один шаблон

функция 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 (это капитал U) после второго шаблона ~. Это приведет к тому, что части шаблона станут неровными и будут соответствовать как можно меньшему количеству символов.