Подвожу итоги сравнения двух функций в данной задаче:
1. strtr $trans = array("hello" => "hi", "hi" => "hello"); echo strtr("hi all, I said hello", $trans); Результат средний: ~0.53 секунды 2. str_replace $b = array('en'=>'английский','ru'=>'русский'); $a = array_keys($b); echo str_replace($a,$b,'Этот ваш en язык, нужен для того, чтобы говорить по ru'); Результат средний: ~40.81 секунды Различие на лицо. Напомню какие были исходные данные: строка размером порядка 1.5-2Мб в которую поставляется массив из 7282 элементов. |
greatilya,
А по отдельности что выдает: array_keys($b); и str_replace($a,$b,'Этот ваш en язык, нужен для того, чтобы говорить по ru');? Сейчас глянул более подробно и лучше так как я предложил не делать, дабы не получить инкрементальность, хотя я не знаю твоей задачи полностью, но все же. Это когда уже замененные фрагменты будут заменены на новые. Поэтому str_replace так долго работает. Если тест выдаст 40 секунд на str_replace, то значит строка прогоняется с заменой каждый раз на каждый ключ массива. |
Цитата:
Замерял только работу strtr и str_replace, всё другое по времени получалось достаточно быстро и для меня не критично. Цитата:
Цитата:
- имеется мультиязычный сайт, с -выбирая какие-то данные из БД, вместо строк подставляются лишь идентификаторы строк из таблицы LANG - после регуляркой мы выдираем из страницы все идентификаторы и делаем соответствующий запрос с таблице LANG, который наполняет наш массив с данными. - ну а после вставляем наши данные заменой на страницу - выводим страницу на экран |
вывод : в php, не как в js, есть смысл залать по справочникам (лучше держать вкладку с ним) и выискивать встроенные функции. со временем тот хренов список сам запомнится.
|
Цитата:
вывод : и в php, и в js, есть смысл ... |
Цитата:
у меня - "пустая болтовня", так скажем. как наткнусь - покажу. |
Часовой пояс GMT +3, время: 00:54. |