2013-11-28 6 views
1

Я использую эту технику для изменения размеров изображений «на лету», которая использует .htaccess и некоторый скрипт php.Как извлечь строку с регулярным выражением

в .htaccess у меня есть это:

# BEGIN ImageResizing 
<ifmodule mod_rewrite.c> 
RewriteEngine on 
RewriteBase/

RewriteRule ^img-small/([A-Za-z0-9/_-]+).(jpg|gif|png)$ images.php?max_width=100&imgfile=$1.$2 
</ifmodule> 
# END ImageResizing 

images.php это скрипт, который делает фактическую Resize

это выражение регулярного выражения:

^img-small/([A-Za-z0-9/_-]+).(jpg|gif|png)$ 

спички этот путь:

http://yoursite.com/img-large/myimagepath/myimage.jpg 

, а затем отправляет его на images.php сценарий как аргументы $ 1. $ 2

images.php?max_width=100&imgfile=$1.$2 

Мой вопрос: Как я могу сделать эту работу, если у меня есть этот путь:

http://yoursite.com/myimagepath/min_myimage.jpg 

I пытался построить выражение вроде этого:

^([A-Za-z0-9/_-]+/)+(min_)([A-Za-z0-9]+).(jpg|gif|png)$ 

Debuggex Demo

I т Хинк проблема на второй части RewriteRule

images.php?max_width=100&imgfile=$1.$2 

Я пытался изменить что-то вроде:

images.php max_width = 100 & imgfile = $ 1 + $ 3 $ 4

это является firt строк сценария php:

// max_width and image variables are sent by htaccess 

$max_height = 1000; 

$image = $_GET["imgfile"]; 
$max_width = $_GET["max_width"]; 
if (strrchr($image, '/')) { 
$filename = substr(strrchr($image, '/'), 1); // remove folder references 
} else { 
$filename = $image; 
} 

$size = getimagesize($image); 
$width = $size[0]; 
$height = $size[1]; 
+0

В частности, какой сервер ошибок вы получаете? – BlackVegetable

+0

Может быть: http://regexr.com?37ds4 – jaco0646

+0

@BlackVegetabl 500 internal – doflip

ответ

0

Это работает для вас? URL, чтобы соответствовать: http://yoursite.com/myimagepath/min_myimage.jpg

.htaccess

RewriteEngine On 
RewriteBase/
RewriteRule ^.*/([A-Za-z0-9/_-]+).(jpg|gif|png)$ images.php?max_width=100&imgfile=$1.$2 

Если нет, то какой сервер ошибок вы получаете?

+0

Мне нужно отправить полный путь к реальному, нерожденному изображению в скрипт, ваше решение отправит min_myimage как $ 1, и этот файл не существует. – doflip

+0

Тогда попробуйте это. Это сработало для меня. 'RewriteRule^(. *) \/([A-Za-z0-9/_ \ -] +) \. (Jpg | gif | png) $ images.php? Max_width = 100 & imgfile = $ 1/$ 2. $ 3 ' –

0

Я думаю, нам нужно более точно узнать о комбинациях путей и имен, которые вы хотите переписать для обработки. Но вот один, который работает для всех изображений, соответствующих основной шаблон именования, заканчивающийся в расширениях файлов вы указываете

Fiddle

Смежные вопросы