Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Запись/чтение в/из файла по строчно + удаление элементов...

Ответить
Настройки темы
Запись/чтение в/из файла по строчно + удаление элементов...

Аватара для Georgiy

Старожил


Сообщения: 151
Благодарности: 3

Профиль | Сайт | Отправить PM | Цитировать


1. Как считать из файла определенную строку? Как записать в файл на место одной строки другую?

Я пользовался функцией file(), то есть считал весь файл в массив-список и дальше работал со строками-элементами массива. Но при записи в файл fputs(,массив[$i]) / fwrite(,массив[$i]) в конец каждой строки файла добавлялся неопределенный символ. По-видимому - это "\n" или "\r\n".
Как правильно считывать и записывать в файл отдельные строки?
+ как избежать проблем с разным пониманием символов конца строки для UNIX/Windows?

2. Есть массив, созданный в цикле "на лету", то есть $Mass[]="abcd", $Mass[]="efhg", ...
Как мне наиболее граммотно удалить какой-нибудь элемент этого массива, так, чтобы после этого не было бы "дыр" в массиве? В общем, хотелось бы "совсем" удалить несколько элементов.

[s]Исправлено: Georgiy, 0:55 17-07-2004[/s]

Отправлено: 00:53, 17-07-2004

 

Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


Georgiy
1) если хочешь работать с отдельными строками то так и придется делать, иначе ни как.
для задания кодировки есть настройка AddDefaultCharset в файле httpd.conf

2) помоему придется удалять его в ручную...

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 02:58, 17-07-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Georgiy
2)эллемент из массива удаляется с помощью unset($a[key]);
При этом не образуется никакой дыры, пара ключ/значение полностью удаляются

1)В мануале написано, что можно от знаков окончания строки избавится с помощью функции trim()
То есть читаем файл с помощью file(), а потом с помощью array_walk делаем trim() каждому элементу


[s]Исправлено: vadimiron, 13:30 17-07-2004[/s]

-------
Fortes fortuna adiuvat


Отправлено: 15:29, 17-07-2004 | #3

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3902
Благодарности: 162

Профиль | Отправить PM | Цитировать


вдогонку - упмянутая тут директива
Цитата:
AddDefaultCharset
- установка кодировки, но не конца строк, разных в unix и win, о чем, насколько я поняла, спрашивал  Georgiy. То есть тут не при чем
От знаков окончания строки, как уже написал vadimiron можно избавиться при помощи trim(), или, если удалять все это, откусывая именно от конца строки: rtrim() или chop()

Отправлено: 20:05, 17-07-2004 | #4


Аватара для Georgiy

Старожил


Сообщения: 151
Благодарности: 3

Профиль | Сайт | Отправить PM | Цитировать


vadimiron
Я почти также и делал: для каждой строки
$string=str_replace("\r","",$string);
Вот и подумал - что наверняка есть лучше метод. Плюс если это работает в Винде, как будет на другой ОС...

Vlad Drakula
Да, согласен с mar про догонку...
А про массив - в ручную, это через временные массивы?

Про unset: я применял эту функцию, но после применения этой функций дальше массив становился совсем пустым, хотя удалял 3 первых элемента...

Отправлено: 02:13, 18-07-2004 | #5

mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3902
Благодарности: 162

Профиль | Отправить PM | Цитировать


Georgiy
по поводу конца строк: дело в том, что как раз
Цитата:
trim(), или, если удалять все это, откусывая именно от конца строки: rtrim() или chop()
в плане избавления от кодов конца строк более универсальны, чем *использование str_replace():
Цитата:
string rtrim ( string str [, string charlist])

Замечание: Второй аргумент был добавлен в PHP 4.1.0

Эта функция возвращает строку str с удаленными из конца строки пробелами. Если второй параметр не передан, rtrim() удаляет следующие символы:

" " (ASCII 32 (0x20)), символ пробела.
"\t" (ASCII 9 (0x09)), символ табуляции.
"\n" (ASCII 10 (0x0A)), символ перевода строки.
"\r" (ASCII 13 (0x0D)), символ возврата каретки.
"\0" (ASCII 0 (0x00)), NUL-байт.
"\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.

Можно также задать список символов для удаления с помощью аргумента charlist. С помощью .. можно задать диапазон символов.
Что касается unset - начиная с 4-ой версии PHP это языковая конструкция, а не функция, поэтому попытка вернуть из нее значение может вызвать ошибку. Ну и, если требуется удялять первые, или последние элементы массива, то проще воспользоваться функциями array_shift(), *или array_pop() соответственно

Отправлено: 14:40, 18-07-2004 | #6



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Запись/чтение в/из файла по строчно + удаление элементов...

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Удаление элементов TreeView gregaz AutoIt 4 01-02-2009 18:46
[решено] Чтение-запись битого файла vit777 Видео и аудио: обработка и кодирование 3 19-12-2007 09:45
Чтение и запись CD-R дисков... GulaG Хочу все знать 25 08-06-2004 20:15
Чтение/запись на разделе Spijon Общий по Linux 8 07-10-2003 20:57




 
Переход