Я работал над Системой электронного документооборота несколько лет назад, и мы сделали в значительной степени что Gamecat и предложенный wic.
таким образом, присвойте каждому изображению уникальный идентификатор и использование что получить относительный путь к файлу изображения. Мы использовали MOD, подобный тому, какой предложенный wic, но мы позволили 1 024 папки/файла на каждом уровне с 3 уровнями, таким образом, мы могли поддерживать файлы 1G.
Мы сняли изоляцию с расширения из файлов как бы то ни было. Записи DB содержали Тип MIME, таким образом расширение было не нужно.
я не рекомендовал бы хранить полный URL в записи DB, только идентификатор Изображения. При хранении URL, Вы не можете переместить или реструктурировать свое устройство хранения данных, не преобразовывая Ваш DB. Относительный URL был бы в порядке начиная с того способа, которым можно, по крайней мере, переместить репозиторий образов вокруг, но Вы получите больше гибкости, если Вы просто сохраните идентификатор и получите URL.
кроме того, я не рекомендовал бы позволить прямые ссылки Вашим файлам изображений от сети. Вместо этого предоставьте URL программе серверной стороны (например, Сервлет Java), с идентификатором Изображения, предоставляемым в Запросе URL (http://url.com/GetImage?imageID=1234
).
сервлет может использовать тот идентификатор, чтобы искать запись DB, определить Тип MIME, получить фактическое местоположение, проверить на ограничения безопасности, вход, и т.д.
Вот решение:
$regex = array(
"`^([\t\s]+)`ism"=>'',
"`^\/\*(.+?)\*\/`ism"=>"",
"`([\n\A;]+)\/\*(.+?)\*\/`ism"=>"$1",
"`([\n\A;\s]+)//(.+?)[\n\r]`ism"=>"$1\n",
"`(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+`ism"=>"\n"
);
$buffer = preg_replace(array_keys($regex),$regex,$buffer);
Взято из препроцессора Script / Stylesheet в Samstyle PHP Framework
См .: http://code.google.com/p/ samstyle-php-framework / source / browse / trunk / sp.php
csstest.php:
<?php
$buffer = file_get_contents('test.css');
$regex = array(
"`^([\t\s]+)`ism"=>'',
"`^\/\*(.+?)\*\/`ism"=>"",
"`([\n\A;]+)\/\*(.+?)\*\/`ism"=>"$1",
"`([\n\A;\s]+)//(.+?)[\n\r]`ism"=>"$1\n",
"`(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+`ism"=>"\n"
);
$buffer = preg_replace(array_keys($regex),$regex,$buffer);
echo $buffer;
?>
test.css:
/* testing to remove this */
.test{}
Вывод csstest.php:
.test{}
Я не верю, что вы можете использовать группировку в инвертированном классе символов, как в этом случае. То, что вы собираетесь использовать, называется Утверждения , из которых есть два типа. "взгляд вперед" и "взгляд назад".
Шаблон, который вы ищете в английском, в основном, " косая черта, буквальный подстановочный знак, все, что не сопровождается косой чертой или чем-то другим чем буквальный подстановочный знак, за которым следует косая черта или косая черта, которому не предшествует буквальный подстановочный знак ноль или более раз, буквальный подстановочный знак, косая черта "
<?php
$str = '/* one */ onemore
/*
* a
* b
**/
stuff // single line
/**/';
preg_match_all('#/\*(?:.(?!/)|[^\*](?=/)|(?<!\*)/)*\*/#s', $str, $matches);
print_r($matches);
?>