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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: замена части строки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
kosik82
Отправлено: 06 Сентября, 2013 - 22:59:04
Post Id


Гость


Покинул форум
Сообщений всего: 125
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




есть строка, в которой "imager/w_500/" надо заменить на "imager/w_400/"
пробовал str_replace, но в исходной строке бывает и imager/w_300 и imager/w_480, тоесть цифры разные.
подскажите как это проще сделать.

(Отредактировано автором: 06 Сентября, 2013 - 22:59:55)

 
 Top
Саныч Модератор
Отправлено: 06 Сентября, 2013 - 23:05:22
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




PHP:
скопировать код в буфер обмена
  1. $str = preg_replace('#imager/w_[1-9]\d{2}#i', 'imager/w_400/', $str);
Это если цифры могут быть совсем разные. Если же есть какой-то известны заранее список значений, то лучше запишите их все в массив и скормите str_replace.


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
kosik82
Отправлено: 06 Сентября, 2013 - 23:12:53
Post Id


Гость


Покинул форум
Сообщений всего: 125
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Саныч пишет:
PHP:
скопировать код в буфер обмена
  1. $str = preg_replace('#imager/w_[1-9]\d{2}#i', 'imager/w_400/', $str);
Это если цифры могут быть совсем разные. Если же есть какой-то известны заранее список значений, то лучше запишите их все в массив и скормите str_replace.


спасибо. попробую.
цифры от 300 до 700, я пробовал с массивом, но всегда выползают новые цифры.
 
 Top
Саныч Модератор
Отправлено: 06 Сентября, 2013 - 23:16:47
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




kosik82 пишет:
цифры от 300 до 700, я пробовал с массивом, но всегда выползают новые цифры.
Ну тогда лучше регулярка. Только я б ее изменил на
PHP:
скопировать код в буфер обмена
  1. $str = preg_replace('#imager/w_(?:[3-6]\d{2}|700)#i', 'imager/w_400/', $str);
Теперь учитываются только числа от 300 до 700


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
kosik82
Отправлено: 06 Сентября, 2013 - 23:20:37
Post Id


Гость


Покинул форум
Сообщений всего: 125
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Саныч пишет:
kosik82 пишет:
цифры от 300 до 700, я пробовал с массивом, но всегда выползают новые цифры.
Ну тогда лучше регулярка. Только я б ее изменил на
PHP:
скопировать код в буфер обмена
  1. $str = preg_replace('#imager/w_(?:[3-6]\d{2}|700)#i', 'imager/w_400/', $str);
Теперь учитываются только числа от 300 до 700

спасибо.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB