двузначные числа в str_replace

219
09 апреля 2017, 04:34
$n = array(1, 2, 3, 33);
$v = array('один', 'два',  'три',  'тридцать три');
$mergeArr = str_replace($n, $v, '1, 2, 33');
echo $mergeArr; //выводит: один, два, тритри

Не могу найти подходящей функции. Или как написать самому регулярку, чтобы правильно выводило?

Answer 1

Первыми ставьте более длинные строки для поиска

<?php
$n = array('33', '1', '2', '3'); 
$v = array('тридцать три', 'один', 'два', 'три'); 
$mergeArr = str_replace($n, $v, '1, 2, 33'); 
echo $mergeArr; // один, два, тридцать три

UPD

Можно использовать функцию strtr() для замены подстрок.

strtr() может вызываться с двумя аргументами. В этом случае from должен быть массивом (array), в форме array('from' => 'to', ...). Функция возвратит строку, в которой все ключи массива будут заменены их элементами. strtr() в первую очередь заменяет более длинные ключи, причем одна и та же строка поиска используется только один раз.

<?php
$n = array(1, 2, 3, 33); 
$v = array('один', 'два', 'три', 'тридцать три'); 
$repl = array_combine($n, $v);
$mergeArr = strtr('1, 2, 33', $repl); 
echo $mergeArr; // один, два, тридцать три
READ ALSO
Есть ли перевод документации php-telegram-bot?

Есть ли перевод документации php-telegram-bot?

https://githubcom/akalongman/php-telegram-bot#credits

237
PHP_BINDIR неправильно показывает путь

PHP_BINDIR неправильно показывает путь

Знаю , что по этому поводу много уже задано вопросов , и найдено ответов , но я эту проблему никак не могу решитьPHP_BINDIR показывает неверный...

256
syntax error on line 26

syntax error on line 26

Белая страница с такой вот ошибкой:

201