Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

 
liveinternet.ru: показано количество просмотров и посетителей

Библиотека :: Компьютеры и Программирование :: Котеров Д. В. - Самоучитель PHP 4
<<-[Весь Текст]
Страница: из 287
 <<-
 
ь и забыть 
о том, что в Windows (в отличие от Unix) для разделения полного пути файла 
исполь- 
зуются не прямые, а обратные слэши. Интерпретатору PHP совершенно все равно, 
какие слэши вы будете использовать: прямые или обратные. Он в любом случае пе- 
реведет их в ту форму, которая требуется вашей ОС, а функции по работе с 
полными 
именами файлов также не будут против "чужих" слэшей. 
Во-вторых, вы теперь можете работать с файлами на удаленных серверах Web в точ- 

ности так же, как и со своими собственными (ну, разве что записывать в них 
можно 
не всегда). Если вы предваряете имя файла строкой http:// или ftp://, то PHP 
понимает, что нужно на самом деле установить сетевое соединение и работать 
именно 
с ним, а не с файлом. При этом в программе такой файл ничем не отличается от 
обычного (если у вас есть соответствующие права, что вы можете и записывать в 
по- 
добный HTTP- или FTP-файл). 
О текстовых и бинарных файлах 
Во многих (да что там — практически во всех) языках программирования для работы 

с текстовыми файлами применяется некоторый трюк. Вот в чем он заключается. Не 
секрет, что в Unix-системах для отделения одной строки файла от другой 
использует- 
ся один специальный символ — его принято обозначать \n. 
Обращаю ваше внимание на то, что \n здесь обозначает именно один символ, 
т. е., один байт. Когда PHP встречает комбинацию \n в строке (например, 
"это \n тест"), он воспринимает ее как один байт. В то же время, в строке, 
заключенной в апострофы, комбинация \n не имеет никакого специального 
назначения и обозначает буквально "символ \, за которым идет символ n". 
В Windows по историческим причинам для разделения строк применяется не один, а 
сразу два символа, следующих подряд, — \r\n. Для того чтобы языки программиро- 
вания были лучше переносимы с одной операционной системы на другую, при чтении 
текстовых файлов эта комбинация \r\n преобразуется "на лету" в один символ \n, 
так что программа и не замечает, что формат файла не такой, как в Unix. В 
результа- 
те этой деятельности, если мы, например, прочитаем содержимое всего текстового 

Глава 15. Работа с файлами 245 
файла в строку, то длина такой строки наверняка окажется меньше физического 
раз- 
мера файла — ведь из нее "съелись" некоторые символы \r. Это относится к 
системе 
Windows и MacOS (кстати, в последней применяется комбинация не \r\n, а наобо- 
рот — \n\r, что довольно-таки забавно). При записи строки в текстовый файл про- 

исходит в точности наоборот: один \n становится на диске парой \r\n. 
Впрочем, практически во всех языках программирования вы можете и отключить 
режим автоматической трансляции \r\n в один \n. Обычно для этого используется 
вызов специальной функции, который говорит, что для указанного файла нужно при- 

менять бинарный режим ввода/вывода, когда все байты читаются, как есть. Правда, 

программисты, всю жизнь писавшие под Unix, склонны игнорировать этот факт, в 
результате чего программы перестают работать под Windows и вообще начинают 
вытворять забавные вещи. 
Так как PHP был написан целиком на Си, а Си использует трансляцию символов пе- 
ревода строк, то описанная техника работает и в PHP. Однако тут есть один очень 

опасный момент. Дело в том, что разработчики PHP в официальной документации к 
функции fopen() старательно умалчивают о том, что интерпретатор может работать 
с файлами в режиме трансляции символа перевода строки. Так вот, я возьму на 
себя 
смелость заявить, что такая возможность в действительности существует, а тесты 
подтвердили, что ее можно корректно использовать как в Windows и MacOS, так и в 

Unix. Подробнее об этом мы поговорим при рассмотрении функции 
 
<<-[Весь Текст]
Страница: из 287
 <<-