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

Форум PHP

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

 

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

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

тема: strtr/str_replace
 
 автор: Ralph   (21.07.2007 в 09:41)   письмо автору
 
 

Кто обьяснит,в чем ГЛАВНОЕ различие работы этих функций ?

   
 
 автор: Unkind   (21.07.2007 в 11:03)   письмо автору
 
   для: 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 в названии функции не случайно), изменения кодировки и прочего.

   
 
 автор: Ralph   (21.07.2007 в 20:56)   письмо автору
 
   для: Unkind   (21.07.2007 в 11:03)
 

То есть strtr повторно не обрабатывает уже обработанное...Спасибо за важную информацию,будем знать.Получается,str_replace чисто для совместимости с предыдущими версиями оставили...

   
 
 автор: Unkind   (21.07.2007 в 21:51)   письмо автору
 
   для: 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
?>

   
 
 автор: Ralph   (21.07.2007 в 23:54)   письмо автору
 
   для: Unkind   (21.07.2007 в 21:51)
 

А вы тест один раз прогоняли ? :))) Но в общем-все равно спасибо,понял-недублируемые замены-юзай strtr,иначе для ускорения пользуй str_replace......p.s. Дело в том,что в мануале все очень скупо описано,а в связи с отсутствием наличия компа все проверить сложно и дорого...Кароче,thanks :)))))))))

   
Rambler's Top100
вверх

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