|
Нет, я не о чтении мыслей прямо из мозга. Хотя было бы интересно.
Сегодня (перед написанием этого поста) я сделал в блоге ротатор своих (умных, конечно!) мыслей. У меня уже давно накопилось много собственных высказываний (ну и самомнение, да?), которыми я был бы не прочь поделиться с окружающими. Сейчас сел и написал ротатор, который и хочу предложить Вам. Это не плагин, но на халяву.
Ротатор состоит из двух частей – кода ротации сообщений (в данном случае – моих мыслей [...звучит жутко]) и файла с фразами для ротации. Пусть на одну мысль будет отведена одна строка, то есть разделителем мыслей служит символ переноса строки (как мы знаем это \n).
Прямо в код шаблона WordPress (или другого движка)*, где мы хотим выводить мысли мы пишем следующее:
<?php
$file = fopen ("mind.txt", "r");
if ($file){
$minds = "";
while (!feof ($file)) {$minds .= fread ($file, 256);}
$mind = explode ("\n", $minds);
$say = $mind[rand (0, count ($mind) - 1)];
echo iconv ('UTF-8', 'CP1251', $say)."<br>";
fclose ($file);
}
?>
В корень сайта кладем файл с мыслями (mind.txt).
Просто, но работает. Сначала мы открываем файл (см. код) для чтения, потом в $minds читаем все содержимое файла (в цикле). Дальше делим полученную длинную строку на массив с помощью explode (разделитель – перенос строки). Потом выбираем одну фразу случайным образом и записываем ее в $say. Дальше преобразовываем кодировку к UTF8** и выводим фразу. Закрываем файл.
Чтобы было понятнее – я прописал этот код в шаблоне в файле header.php там, где хотел видеть случайные фразы. Если хотите оформить с помощью CSS, сделайте что-то вроде:
echo "<span class=someclass>".iconv
('UTF-8', 'CP1251', $say)."</span><br>";
…и оформляйте уже класс someclass.
Вот архив с исходниками.
* не все движки поддерживают код прямо в шаблонах, в этих случаях придется приспосабливать данный код самостоятельно
** это потому, что у меня блог в UTF8, у Вас он может быть и в другой кодеровке. Если он у Вас в CP1251, функция iconv не нужна
Оставьте свой комментарий
|
08.01.2009 в 4:07 пп
А зачем iconv, если можно текстовый файл создать в кодировке UTF?
И еще, если я не ошибаюсь, то это функция, зачем возле нее знак $ ?
08.01.2009 в 4:13 пп
Алексей, да, я случайно не то скопировал, нужно убрать $ и ; – две синт. ошибки.
По поводу кодировки файла – я тоже так думал, но даже пересохранив файл в UTF8 ничего не поменялось. Поэтому использовал преобразование.
09.01.2009 в 8:53 пп
Там надо не просто пересохранять, там нужно перекодироваться. В макромедиа дримвьювер точно есть такая функция :)
09.01.2009 в 9:03 пп
Алексей Качаев, для html-страниц пересохранение работает. Подозреваю, что пересохранение в этом редакторе работает как перекодирование ;)
12.01.2009 в 10:16 пп
А не проще файл minds.txt сразу в utf8 сохранить? :) Нормальные редакторы это умеют, а если не ошибаюсь, то это даже блокнот должен уметь.
13.01.2009 в 5:10 пп
Feo, мы ж только что это обсудили.
14.01.2009 в 9:41 пп
Опять прикольна!!!
Я не проггер, – не понимаю, что да как, – но плагин такой сделать, – это сложно??? Я б заюзал…
15.01.2009 в 2:16 дп
<?php
$file = file(‘mind.txt’);
if ($file) {
echo iconv(‘UTF-8′, ‘CP1251′, $file[rand(0, count($file))]).»;
}
?>
15.01.2009 в 2:56 дп
Ex, ну да, я раньше на C++ кодил, там функций типа file не было. Хотя по сути оно выполняет те же операции, чтобы Вы знали, а для обучения мне кажется полезным самому все это сделать.
15.01.2009 в 8:38 пп
хех смысл дублировать встроеные функции? чему тебя это научит? научит только неоптимизировать код :neutral:
16.01.2009 в 1:59 дп
Ex, функция file делает то же самое. Хуже того – насколько я помню в нее встроено все то, что я сделал руками. Другими словами, речь не об оптимизации, а максимум – о рефакторинге.
16.01.2009 в 6:36 пп
имхо встроенные функции быстрее велосипеда они же не на пхп написанны
16.01.2009 в 7:40 пп
Ex, я не понял, что Вы сказали, Вы сами-то поняли?
18.01.2009 в 12:42 дп
дыа я четко понял что написал а имено пхп написан на C и встроенные функции такие как file()(которые также написанны на C) и работают быстрее таких же(велосипед =) написанных на пхп.
18.01.2009 в 1:43 дп
Ex, опять ничего непонятно. Запятые – это хорошее дело, попробуйте, понравится.
В какой-то книге по PHP я читал, что file – это обертка fopen, fread, fclose именно в из PHP-исполнении, что уже написал Вам дважды. Т.е. это не ускоряет работу. К тому же, с file наблюдаются проблемы при размере файла больше 10мб, рекомендуется использовать fopen. Почитайте о проблемах с этой функцией здесь: http://ru.php.net/manual/ru/function.file.php
18.01.2009 в 5:26 пп
Сомневаюсь что мыслей накопица даже на 10 мб :lol:
ладно возможно я просто любитель коротких решений. :wink:
12.01.2011 в 2:04 дп
Человеческое время дороже чем грёбаная оптимизация кода. И не стоит тратить своё врумя чтобы экономить машинные милисекунды! Берегите себя – если код рабочий – уже победа)) Но решение у ЕХ – красота. а вот идея – DimoninGa. так что -каждому своё. И поспорить тоже можно чисто для удовольствия и обмена опытом. А вот что надо оптимизировать – так это Винды. кто поспорит ?