Замена тега img с помощью регулярных выражений

Andronik

Новичок
Замена тега img с помощью регулярных выражений

Первым делом хочу сказать следующее:
Обещаю выучить регулярные выражения!

Но как из всех локальных ссылок на изображения сделать короткие? Т.е. из
<IMG src="C:\Documents and Settings\Andrey\My Documents\My Pictures\Other\pineapple.jpg">
сделать, например,
<IMG src="../img/pineapple .jpg">

Следующий вариант оставляет последнюю букву из имени файла:

PHP:
$field = preg_replace("/(?:file\:)?\w\:.*([^\/]+?\.(?:gif|jpg|png|bmp|tiff))/im",'../img/\1',$field);
В результате получается:

<IMG src="../img/e .jpg">

http://ru2.php.net/preg_replace сейчас совсем не помогает. Это ведь дело серьёзное.
 

Alexandre

PHPПенсионер
Andronik мы верим, что ты выучишь регулярки, но ты быстрее сделаешь это функциями strpos() str_replase() etc.

маленькая вероятность, что здесь за тебя решат задачу.

ежели ты решишься потратить достаточно времени на регулярки, то в регулярках обрати внимание на (?=)

see примеры на английском
 
кроме регулярных выражений, можешь еще изучить
[m]explode[/m]
[m]basename[/m]
PHP:
$img = '<IMG src="C:\Documents and Settings\Andrey\My Documents\My Pictures\Other\pineapple.jpg">';

$path = explode('"', $img);
$new_img = '<img src="../img/'.basename($path[1]).'" alt="">';

echo $new_img;
 

phprus

Moderator
Команда форума
nofx
А кто тебе сказал, что в строке $img толкьо один тег img и нет других тегов, которые используют кавычки?

Andronik
Я бы тут использовал [m]preg_replace_callback[/m]. callback-функции в одном из карманов должно передаваться содержимое атрибута src. А внутри этой функции этот путь можно преобразовывать как угодно.
 
Сверху