FAQ Stepan Ilyin aka Step Xakep, номер #062, стр. 062-144-4 Q: Помогите! Необходимо на PHP написать скрипт, который выводит список всех директорий, поддиректорий и файлов. Вроде бы, простая задача, однако до ее полностью корректного решения я так и не дошел. Может быть, вы поможете? A: Самая простая реализация, которая пришла мне на ум. Используются исключительно процедуры opendir(),readdir(),scandir(). Прочитав в мануале их синтаксис, ты легко поймешь смысл и алгоритм следующего скрипта: $startdir="c:"; # начальная директория &scandir($startdir); sub scandir { my $d; my $nd; opendir(DIR, $_[0]); foreach $d (sort { $a cmp $b } readdir(DIR)) { if (($d ne ".") && ($d ne "..")) { $nd = $_[0] . "/" . "$d"; if ( -d $nd ) { print "$nd\n"; # выводить имена директорий/поддиректорий &scandir($nd); } else { print "$nd\n"; # выводить имена файлов } } } closedir(DIR); Q: Я пишу на PHP скрипт для создания гостевой книги, и наткнулся на следующую проблему. При передаче через GET_HTTP_VARS информации с формы, содержащей в себе "+", указанный символ заменяется пробелом. Ну и что за глюк? Как фиксить? А: Это вовсе не глюк и даже не баг! Дело в том, что, передавая данные методом GET, HTTP преобразует все имеющиеся в информации пробелы в символ "+". Таким образом, получив строку, содержащую знак плюса, PHP предполагает, что это преобразованный пробел, и поэтому, следуя правилам, обрабатывает его. Согласись, действия интерпретатора вполне логичны. Могу лишь посоветовать заменить плюс его URL-encoded представлением - %2B. Например, так: $u = 'ya%2Bne%2Bxakep'; Q: Недавно вышел Lindows 4.5... Как он вам? Помнится, год назад вы явно были не в восторге от этой оси. Может быть, с версии 3.0 что-нибудь изменилось? A: Многие пользователи (в том числе и я) до сих пор лелеют надежду на появление некой хитрой комбинации Windows и Linux, которая положила бы конец всем спорам и разногласиям между сторонниками различных операционных систем. К сожалению, это всего лишь надежды. Lindows как был год назад полусырым продуктом, так таким и остался. Да, ось позволяет запускать как *nix программы, так и известные windows приложения. Однако это скорее исключение, чем правило. О полноценной поддержке программ обеих платформ пока не идет и речи. Все работает через пень-колоду: сплошные глюки, вылеты и т.п. Более того, у Lindows по-прежнему дикие проблемы с кириллицей, исправлять которые разработчики, похоже, не собираются. Фишкой последней версии оси стал сервис VoIP, благодаря которому владельцы лицензионной Lindows могут совершать бесплатные международные переговоры через широкополосное интернет-соединение. Но разве этого мы ждем от оси с таким многообещающим названием? Конечно же нет! Резюмирую: красивая операционка с кучей встроенных и не особо нужных утилит, зато имеющая массу проблем, особенно с русификацией. Q: Я нередко общаюсь на IRC-каналах и в качестве IRC-клиента использую mIRC. Честно говоря, мне уже надоело писать имена людей, которым я адресую мессагу на канале. Можно ли как-нибудь облегчить этот процесс? |