Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Заменяет ранее вставленное значение - str_replace
 
 автор: ZetRider   (29.03.2014 в 14:30)   письмо автору
 
 

Добрый день,

заменяю при помощи str_replace значения в строке:

$conv = '+1d +1m +1y';
$conv_js_to_php = array(
    'd' => 'day',
    'm' => 'month',
    'y' => 'year'
);
$return = str_replace(array_keys($conv_js_to_php), array_values($conv_js_to_php), $conv);


в результате получаю: +1dayear +1month +1year
ожидал получить: +1day +1month +1year

Так как str_replace() осуществляет замену слева направо, то при использовании множественных замен она может заменить ранее вставленное значение на другое.

preg_replace так же:
$conv = '+1d +1m +1y'; 
$conv_js_to_php = array( 
    '/d/' => 'day', 
    '/m/' => 'month', 
    '/y/' => 'year' 
); 
$return = preg_replace(array_keys($conv_js_to_php), array_values($conv_js_to_php), $conv, 1);


Каким способом можно не заменять ранее вставленное значение?

  Ответить  
 
 автор: ZetRider   (29.03.2014 в 15:30)   письмо автору
 
   для: ZetRider   (29.03.2014 в 14:30)
 

strtr() решила задачу

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования