Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: заменить только последнее вхождение
Форумы портала PHP.SU » PHP » Регулярные выражения » заменить только последнее вхождение

Страниц (1): [1]
 

1. cha0s - 05 Мая, 2015 - 21:20:16 - перейти к сообщению
имеется допустим такая строка

$str = "anti-stretch-marks-body-cream-600x600-160x220.jpg";

нужно из нее убрать только "-160x220" каким образом это сделать при помощи регулярки?

есть такое:

preg_replace("#-\d+x\d+#", "", $str);

НО Он убирает все а не последнее то бишь после этого строка становиться:

"anti-stretch-marks-body-cream.jpg", а как убрать только последнее самое найденное?Недовольство, огорчение
2. dcc0 - 05 Мая, 2015 - 21:24:21 - перейти к сообщению
Естественно, у вас указаны любые цифры. А надо указывать явно.
3. Мелкий - 05 Мая, 2015 - 21:29:08 - перейти к сообщению
Вот это "только -160x220" чем отличается от "-600x600"? Тем, что после этого фрагмента стоит точка?
4. cha0s - 05 Мая, 2015 - 21:41:56 - перейти к сообщению
цифры могут быть любыми это просто образец, само собой я знаю про

#-\160x\200#

мне надо убрать именно по шаблону #-\d+x\d+# но только последнее вхождение а не все....
(Добавление)
Мелкий пишет:
Вот это "только -160x220" чем отличается от "-600x600"? Тем, что после этого фрагмента стоит точка?

именно=) можно критерий что до .формат мы убираем #-\d+x\d+#, как такое сделать ток?))
5. Мелкий - 05 Мая, 2015 - 21:54:57 - перейти к сообщению
cha0s пишет:
именно=)

Ну так добавьте в регулярку точку.
Красивее через опережающую проверку: "#-\d+x\d+(?=\.)#"
6. dcc0 - 05 Мая, 2015 - 21:57:00 - перейти к сообщению
ой не то
cut
выше правильно ...
7. losy - 14 Мая, 2015 - 13:07:31 - перейти к сообщению
cha0s пишет:
имеется допустим такая строка

$str = "anti-stretch-marks-body-cream-600x600-160x220.jpg";

нужно из нее убрать только "-160x220" каким образом это сделать при помощи регулярки?(


CODE (htmlphp):
скопировать код в буфер обмена
  1. $str = "anti-stretch-marks-body-cream-600x600-160x220.jpg";
  2. $res_str = preg_replace('/(anti-stretch-marks-body-cream-600x600)-160x220(\.jpg)/m', '$1$2', $str);
  3. /* На выходе получаем anti-stretch-marks-body-cream-600x600.jpg */
  4. echo = $res_str;

 

Powered by ExBB FM 1.0 RC1