|
|
|
| Кто обьяснит,в чем ГЛАВНОЕ различие работы этих функций ? | |
|
|
|
|
|
|
|
для: Ralph
(21.07.2007 в 09:41)
| |
<?php
$string = "Orange Apple Banana";
echo(strtr($string, array("Orange" => "Apple", "Apple" => "Banana", "Banana" => "Orange")) . "<br />\r\n");
echo(str_replace(array("Orange", "Apple", "Banana"), array("Apple", "Banana", "Orange"), $string) . "<br />\r\n");
?>
|
Поэтому strtr() подходит для таких вещей, как транслитерация (tr в названии функции не случайно), изменения кодировки и прочего. | |
|
|
|
|
|
|
|
для: Unkind
(21.07.2007 в 11:03)
| | То есть strtr повторно не обрабатывает уже обработанное...Спасибо за важную информацию,будем знать.Получается,str_replace чисто для совместимости с предыдущими версиями оставили... | |
|
|
|
|
|
|
|
для: Ralph
(21.07.2007 в 20:56)
| | Cогласно мануалу, str_replace() был введен позднее strtr().
Но тут есть различия в скорости.
Например, у меня следующий тест показал такие данные:
<?php
$string = str_repeat("Striiiiiiiiiiiiiiiiing with maaaaaany leeeeeeeeetters ", 100);
for($i = 0; $i < 1000; $i++) strtr($string, "iao", "123");
//0.0119290351868
for($i = 0; $i < 1000; $i++) strtr($string, array("i" => "1", "a" => "2", "o" => "3"));
//0.448014974594
for($i = 0; $i < 1000; $i++) str_replace(array("i", "a", "o"), array("1", "2", "3"), $string);
//0.108509063721
?>
|
| |
|
|
|
|
|
|
|
для: Unkind
(21.07.2007 в 21:51)
| | А вы тест один раз прогоняли ? :))) Но в общем-все равно спасибо,понял-недублируемые замены-юзай strtr,иначе для ускорения пользуй str_replace......p.s. Дело в том,что в мануале все очень скупо описано,а в связи с отсутствием наличия компа все проверить сложно и дорого...Кароче,thanks :))))))))) | |
|
|
|