Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр 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 Яндекс.Метрика Яндекс цитирования