preg_replace при загрузке изображений

Alex.Antipin

Новичок
preg_replace при загрузке изображений

Здравствуйте!

Проблема возникла - заливаю на сервер файл, далее требуется при помощи preg_replace заменить все вхождения типа

src="E:\My Documents\01. Креатифф\& Смотреть\картинка.jpg"

на лаконичное

src="images/картинка.jpg"

Имеется вот такое выражение
PHP:
$text = preg_replace("/(?:file\:)?\w\:.*([^\/]+?\.(?:gif|jpg|png))/im", './images/\\1',$text)
но оно, скажем так, не работет. Точнее находит по шаблону вроде бы то что нужно, но в итоге я получаю вместо

src="images/картинка.jpg"

получаю

src="images/а.jpg" , т.е. только последнюю букву от имени файла.

В регулярных выражениях абсолютно не силен, посему прошу помочь...
 

Panchous

Павел
простите, что вмешиваюсь в вашу беседу, но зачем здесь регулярки?
 

Alex.Antipin

Новичок
Спасибо Гравицапе за инфу!

2 Panchous: А какой решение Вы бы предпочли?

-~{}~ 14.06.06 20:20:

2 Гравицапа

Автор оригинала: Гравицапа
А почему ты в регулярке завязываешься на "file"?
Дело в том, что это regexp составил не я, я в этом деле вообще не соображаю (только на самом простейшем уровне).. Вообщем для решения моей задачи знаний моих не хватает, а время не ждет :((

-~{}~ 14.06.06 22:48:

Решил таки сам въехать в суть вопроса... Но как то тяжело идет.

Вообщем, задача все та же:
В документе встречаются теги <img> вида:

<img src="X:\some\folder\with\images\picture_13.jpg">

требутеся привести все это дело к виду:

<img src="pictures/picture_13.jpg">

Пока я составил вот такое выражение
/src="[^\\]{1,}\\/im
которое должно находить хотя бы первое звено в адресе файла, т.е. в строке
src="X:\some\folder\with\images\picture_13.jpg"
это выражение должно найти X:\? однако тут какая-то проблема со слешами \\
Заменяю \\ на любой другой символ, все работает, с символом \\ - ничего (

И сразу ещё один вопрос - может ли regexp иметь вид типа /src="[ [^asd]{1,} ]{1,}asd/im
т.е. как бы рекурсия внутри регулярного выражения
 

mani13

Новичок
Alex.Antipin
[m]basename[/m]
[m]preg_replace_callback[/m]
Так что регулярка сокращается только до выделения src.
 

Alex.Antipin

Новичок
Спасибо большое - похоже то что надо...

Кому не лень, в образовательных целях все же может объяснить мне в чем проблема в пред. посту..
 
Сверху