Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Непонятные спецсимволы
 
 автор: antf   (29.01.2005 в 18:38)   письмо автору
 
 

Здраствуйте. Сейчас прочитал в мануале про особенности функции trim() и натолкнулся на несколько непонятных спецсимволов, назначение которых я бы хотел прояснить в данной теме:
1) Чем отличается символ возврата каретки ("\r") от символа перевода строки ("\n")?
2) Что такое нуль байт "\0" и где он используется?
3) Чем отличается вертикальная табуляция ("\x0B") от горизонтальной ("\t")?
Заранее спасибо за ответ.

   
 
 автор: cheops   (29.01.2005 в 19:18)   письмо автору
 
   для: antf   (29.01.2005 в 18:38)
 

1) В UNIX перевод строки осуществляется символом \n, в Windows для этого к переводу строки следует добавить возврат каретки \r\n. Зачем это сделали никто толком объяснить не может, как в прочем и зачем в Windows для разделения директорий по умолчанию используется обратный слеш \ вместо прямого /. Поэтому если в UNIX-подобной системе открыть файл созданный в Windows он весь обезображен символами \r - если их убрать в блокноте всё сольётся в одну строку, не смотря на то, что строки будут разделены \n. Радует, что другие редакторы нормально обрабатывают \n без \r, и из-за того, что подавляющее большинство человек работают под windows и реально проблемы из-за этих разночтений редко бывают. Хотя следует помнить, что если данные пришили с windows-машины - строки разделены \r\n, а если файл создан PHP, то \n. В файловых вариантах Web-приложений при поиске бывает много подводных камней в связи с этим...
2) В С строки это не строки, а массивы символов, последний элемент в которых является нуль-байтом. Поэтому там легко вылезти за границу строки (на этом основано ряд атак по переполнению буффера, когда в строку дописывается бинарный код который размещается после границы массива и изменяет бинарную логику приложения (например Web-сервера), но для их реализации нужно уметь виртуозно программировать). В PHP это не так актуально - здесь строка резиновая, с увеличением размера содержимого она автоматически увеличивается в размере. В С об этом нужно заботится самостоятельно. Например, мы выделяем под строку 200 байт, а содержимое стоки занимает 10, для того, чтобы сообщить что в строке только 10 байт мы в 11 записываем нуль-байт... Очень удобно обрезать строку - достаточно просто записать нуль-байт в середине строки и она автоматически укорачивается...
3) Это просто ASCII-символ (11 по счёту) - видимые симоволы начинаются с пробела (32 символ), а до этого полно управлющих символов, в том числе перевод строки \n (10 симовол), возврат каретки \r (13 символ) и много всякой другой бяки, которая исользовалась ранее и частично используется в настоящее время. Они просто так называются, разумеется большинство редакторов вертикальную табуляцию не поддерживают - ну зачем она нужна, когда можно поставить несколько пробелов, но можно и обработать - например, встретив такой символ делать перевод в три строки, только ни один программист этого делать сейчас не будет так как это будет пугать пользователей.

   
 
 автор: antf   (29.01.2005 в 19:44)   письмо автору
 
   для: cheops   (29.01.2005 в 19:18)
 

Очень благодарен за подробный ответ. Теперь понятно откуда берутся в блокноте квадратики, когда я пытаюсь открыть XML-файл, собранный средствами PHP - оказывается он, такой нехороший, отказывается воспринимать символы перевода строки "\n" :(

   
 
 автор: cheops   (29.01.2005 в 19:54)   письмо автору
 
   для: antf   (29.01.2005 в 19:44)
 

Про квадратики и методы борьбы с ними вот ещё интересная ссылка...

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=320

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования