[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ошибка при замене, может кто увидит?
ant3627
Посмотрите, пожалуйста. незамыленным глазом, где ошибка


$field = stripslashes($field);
echo $field;//смотрим исходный код
$a="/(?:file\:)?\w\:.*([^\/]+?\.(?:gif|jpg|png|bmp|tiff))/im";
$b='pix/\1';
$field = preg_replace($a,$b,$field);
echo $field.'<br />';//код после заменыы



<BODY><IMG src="C:\fakepath\elka.jpg"></BODY> //1
<BODY><IMG src="pix/a.jpg"></BODY> //2


первая - исходный код, вторая - то что получается,
что не правильно - имя рисунка урезается до одного символа
не могу понять почему.




Спустя 1 час, 33 минуты, 9 секунд (19.02.2012 - 19:07) Winston написал(а):
А чем http://ua2.php.net:8888/manual/ru/function.pathinfo.php не устраивает?

Спустя 24 минуты, 55 секунд (19.02.2012 - 19:32) ant3627 написал(а):
РНР код - скрипт обработки формы из редактора, кроме имени файла еть теги <body> и текст, который я для простоты не показываю

Спустя 1 час, 41 минута, 45 секунд (19.02.2012 - 21:14) #8bit написал(а):
ant3627
у тебя перед сохраняющей скобкой стоит ".*", он все и захапывает. А "+" потом себе 1 символ отрезает и регулярка совпадает. Вот a.jpg и получается

Спустя 42 минуты, 57 секунд (19.02.2012 - 21:57) nugle написал(а):
ant3627
попробуй заменить $a на
$a="#\b(?:\\)(.+\.(?:gif|jpg|png|bmp|tiff))\b#i";

Спустя 10 часов, 12 минут, 11 секунд (20.02.2012 - 08:09) ant3627 написал(а):
при использование переменной:
$a="/(?:\\)(.+\.(?:gif|jpg|png|bmp|tiff))/i";

даже после приведение ограничителей к стилю Perl, выдается ощибка:
Warning: preg_replace() [function.preg-replace]: Compilation failed: missing ) at offset 35 in /home/.../save.php on line 7

Вопрос к "8#bit" как сделать, чтобы "+" отрезал не 1 символ, а все до "\"


Спустя 29 минут, 57 секунд (20.02.2012 - 08:39) #8bit написал(а):
Попробуй вот эту регулярку

$a='#^.*((?<=\\\|/)[^\\\/]+\.(?:gif|jpg|png|bmp|tiff)(?![a-z]|\.)).*#i';

Спустя 3 часа, 4 минуты, 27 секунд (20.02.2012 - 11:43) ant3627 написал(а):
нет "8#bit" , при такой регулярке - один в один повторяется исходная
переменная,

<BODY><IMG src="C:\fakepath\elka.jpg"></BODY> //1

и к "пути" не добавляется папка "pix", где хранятся рисунки
я попробовал в связке ".*" убрать "*" , получается:
<BODY><IMG src="pix/fakepath\elka.jpg"></BODY> 

т.е. мешается: fakepath\

Спустя 23 минуты, 13 секунд (20.02.2012 - 12:07) #8bit написал(а):
Вот этот должен работать, у меня по крайней мере все нормально

$field = '<BODY><IMG src="C:\fakepath\elka.jpg">ff.vert</BODY>';
$a='#(<img[^>]*(?:"|\'))[^>]*((?<=\\\|/)[^\\\/>]+\.(?:gif|jpg|png|bmp|tiff)(?![a-z]|\.))([^>]*>)#i';
$field = preg_replace($a,'$1pix/$2$3',$field);
echo $field.'<br />';//код после замены


Спустя 14 минут, 5 секунд (20.02.2012 - 12:21) ant3627 написал(а):
УРА !!!
Работает, Спасибо! +!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.