preg_replace - ошибка в замене строки

ZeDeX

Новичок
preg_replace - ошибка в замене строки

Моё почтение всем !!!

Есть проблема ...

вот кусок кода:
PHP:
$field = stripslashes($field);
$field = preg_replace("/(?:file\:)?\w\:.*([^\/]+?\.(?:gif|jpg|png|bmp|tiff))/im", "http://mysite.com/__articles/pages/".$base_dir."/pix/\\1", $field);
Суть в чем:
В переменной $field содержится содержание HTML страницы
Замена каталога происходит правильно, а от имени картинки остаётся лишь последний символ и расширение:
имя картинки: img01.gif
а после замены становиться: 1.gif

В чём могут быть грабли ??

Заранее благодарен за ответ.
 

ZeDeX

Новичок
Автор оригинала: valyala
Попробуй .* заменить на \\/?
Не помогло ...
строка теперь имеет вид:
"http://localhost/__articles/pages/1149757495/pix/\PASTE.GIF"
где с:\paste.gif каталог и имя картинки ... :(

-~{}~ 08.06.06 15:33:

На всякий случай:
WinXP, Apache 2.0.55, PHP 4.3.2
 

Gorynych

Посетитель PHP-Клуба
ZeDeX

вот эта часть

([^\/]+?\.(?:gif|jpg|png|bmp|tiff))

ищет точку, расширение и ... группу символов не "/" перед точкой. Один, последний символ и есть эта группа :) Воткните туда условие на начало этой группы, ну хотя бы присутствие слеша перед названием файла:
Код:
$field = preg_replace(
    "/(?:file\:)?\w\:.*[b]\/[/b]([^\/]+\.(?:gif|jpg|png|bmp|tiff))/im",
    "http://mysite.com/__articles/pages/".$base_dir."/pix/\\1"
    , $field);
 

ZeDeX

Новичок
К сожалению не помогло ...
Моя вина ... недоконца объяснил наверное ... :)

Вот пример из обрабатываемого html файла:
Код:
<BODY>
<P align=center><IMG src=\"C:\\temp\\_logo.png\"></P></BODY>
надо \"C:\\temp\\_logo.png\" заменить на "http://localhost/__articles/pix/_logo.bmp"

Помогите plz !!! Очень надо !

Заранее благодарен.
 

SelenIT

IT-лунатик :)
ZeDeX
Откуда в обрабатываемом html-файле берутся лишние слеши?
Вот, на всякий случай.
 
Сверху