- •Размещение файлов на сервере
- •Задание
- •Теория и примеры
- •1 Загрузка (upload) файлов на сервер
- •Upload_err_ok – значение: 0. Отсутствие ошибки, признак успешной загрузки файла
- •Upload_err_no_tmp_dir – значение: 6. Отсутствует директория для временного сохранения файла
- •Обработка загруженного файла
- •2 Обработка данных формы
- •3 Работа с файлами
- •Пример 7 Чтение в строку файла с удаленной машине
- •Пример 8 Открытие и запись в файл с контролем ошибок
- •Чтение строки из файла fgets.
- •Достигнут ли конец файла – feof.
- •Смотри примеры № № 5, 7
- •Смотри примеры выше
- •4 Работа с датой и временем
- •5 Регулярные выражения
Пример 8 Открытие и запись в файл с контролем ошибок
<?php
if (!$handle = fopen($filename, 'a')) {
echo "Неудается отрыть файл ($filename)";
exit;
}
// Записываем $somecontent в открытый файл.
if (fwrite($handle, $somecontent) === FALSE) {
echo "Неудается записать в файл ($filename)";
exit;
}
echo "Успешная запись ($somecontent) в файл ($filename)";
fclose($handle);
?>
Чтение строки из файла fgets.
string fgets (resource handle [, int length])
Возвращает строку длиной не больше, чем length – 1 байт, прочитанную из файла, на который указывает handle. Чтение прекращается когда прочитано length – 1 байт или прочитан символ новой строки (который включается в возвращаемое значение), или достигнут конец файла. Значение length по умолчанию равно 1024 байт.
Пример 9 Вывод содержимого файла
<?php
//симовол @ используется для подавления вывода сообщений об ошибках
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}
?>
Запись строки в файл – fputs.
fputs() – псевдоним к функции fwrite().
Чтение файла в массив – file.
array file (string filename)
Возвращает массив, заполненный содержимым файла filename. Каждый элемент массива соответствует строке файла. В случае ошибки возвращается false.
Пример 10 Вывод пронумерованного HTML-кода
<?php
// Заносим файл, который выдается сервером exmple.com по умолчанию // в массив $lines.
$lines = file('http://www.example.com/');
// Заменяем в каждой строке массива тэги HTML, на специальные
// символы HMTL, чтобы браузер отображал код страницы; нумеруем
// строки
foreach ($lines as $line_num => $line) {
echo "Строка #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
?>
Чтение строки из файла и разбор CSV-полей fgetcsv
Файл CSV – обычный файл, в котором каждая строка представляет собой набор полей отделяющихся друг от друга каким-либо символом-разделителем.
array fgetcsv (resource handle [, int length [, string delimiter]])
handle указатель на открытый файл. Значение length должно быть больше, чем самая длинная строка в файле, отсутствие этого параметра или установка в 0 снимают ограничение на максимальную длину строки (этот вариант работает намного медленнее). Разделитель полей задается в delimiter (один символ, либо первый символ, если строка), по умолчанию – запятая ','.
Пример11 Чтение и вывод содержимого CSV-файла в виде таблицы
<?php
$row = 1;
$handle = fopen("test.csv", "r");
echo '<table>';
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
// размер массива соответствует количеству полей
// в прочитанной строке
$num = count($data);
$row++;
echo '<tr>'; // формируем строку таблицы
for ($c=0; $c < $num; $c++) {
// выводим каждое поле в ячейку таблицы
echo '<td>' . $data[$c] . "</td>\n";
}
echo '</tr>';
}
echo '</table>';
fclose($handle);
?>
Достигнут ли конец файла – feof.
bool feof (resource handle)
Возвращает true, если указатель позиции чтения/записи установлен на конец файла, либо возникла чтения/записи, в противном случае возвращает false.