PHP: $phrase = "You should eat fruits, vegetables, and fiber every day."; $healthy = array("fruits", "vegetables", "fiber"); $yummy = array("pizza", "beer", "ice cream"); $newphrase = str_replace($healthy, $yummy, $phrase); подскажите сильная нагрузка на сервер будет если переменных в массивах увеличу в 20 раз?
В таком случае лучше использовать ststr(): PHP: <? $text = strtr('You should eat fruits, vegetables, and fiber every day.', array('pizza' => 'beer')) upd: если из контекста не понятно - да, ststr() самая быстрая.
К какому серверу? Интерпретатор видит эту функцию, ищет её объявление (она объявлена в Си). Выполняет. Как-то так.
ok. моя цель это ссылки на сайте быстро переписать, чтобы потом правил mod_rewrite навставлять в htaccess. Кстати вопрос не отходя от темы нагрузки - кол-во mod_rewrite (например 60 штук) - это нормально, или топорное исполнение?
1. Так ты просто перед загрузкой сайта, получай его содержимое пока оно не вылезло в браузер. Его и меняй. Содержимое можно перехватить через ob_start(). 2. 60 это слишком много. Лучше создай правило направляющее все запросы скрипту. А этот скрипт пусть решает что за что выдавать.
Э-э.. я как бы так и собирался сделать. Перед выводом всего контента strtr'ну его и всё готово. Не совсем пониманию зачем его перехватывать через ob_start() - а точнее совсем не понимаю.
Не, это как вариант-подсказка (на всякий случай, да ). Если вывод и так контролируется, то не надо ничем перехватывать.
Понятно, всё равно спасибо!! например у меня строки: #RewriteRule ^myroom/(.*)$ system/index.php?fnc_showuserdata=$1 [L] #RewriteRule ^avatar/(.*)$ more.php?editavatar=$1 [L] ...... и т.д. с разными в левой и правой частями данными... Каким образом можно не указать в htaccess, а перекинуть на скрипт вышеуказанные команды?
Правило Код (Text): RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ ?q=$1 [QSA,L] перехватит все запросы, кроме тех, что идут к существующим папкам или файлам. В скрипте получаем $_GET['q']. Чистим от лишних (по бокам) слешей. Далее разбиваем по слешам и смотрим что есть. В зависимости от данных, перенаправляем куда нужно. "Перенаправляем", конечно, не то слово. Мы просто пишем $_GET['fnc_showuserdata'] = 'что-то'. Скрипт ниже это получает, открывает нужную страницу. Фактически, так мы занимаемся тем же, чем и mod_rewrite. Просто логику переносим туда, где ей место - в скрипт. Вот.
Код (Text): тут_скрипт.php?q=$1 [QSA,L] А в него - в тут_скрипт.php - уже можно подключать прочие скрипты.
lexa Я кое с чем не согласен, можно поправлю? =) Не нужно аппендить строку запроса к скрипту. Правило, которого достаточно: Код (Text): RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule .+ filename.php [L] Из самого РНР-скрипта можно получить строку в самом полном виде, какой бы она не пришла. Не нужно никаких ?q=
Поправляй! Вопрос удобства, имхо. ^(.*)$ ?q=$1 удобнее мне потому что очевиднее. К тому же, $_GET глобален и его изменения для дальнейшей работы в скрипте кошернее изменений чего-то в $_SERVER. P.S. RewriteBase мне сильно не нравиться.
Ну, ты, конечно, можешь поставить свой домашний холодильник в супермаркете и ездить туда на метро регулярно. Но, я бы рекомендовал сделать include и иметь холодильник дома. Исключительно из соображений ресурсоемкости.