
6. Чтение из csv-файла
Данные в текстовом файле могут иметь табличную структуру: в каждой строке они отделяются друг от друга некоторым символом-разделителем («,», «;» и др.). Текстовые файлы с такой организацией данных называются csv-файлами (comma separated values — значения, разделенные запятой). Многие прикладные системы, работающие с таблицами и базами данных (например, MS Excel, MS Access и др.), могут экспортировать свои данные в csv-файлы и, наоборот, импортировать csv-файлы в свои структуры. Это позволяет различным приложениям обмениваться данными.
Для чтения файлов с расширение csv в переменную применяется функция fgetcsv().
Синтаксис:
fgetcsv (int file, int length , string delim [, string enclosure])
Функция читает строку из файла и разбивает ее по символу delim. Строка delim должна состоять из одного символа. Функция возвращает получившийся массив или false, если достигнут конец файла. Пустые строки в файле не игнорируются, а возвращаются как массив из одного элемента — пустой строки. Параметр length задает максимальную длину строки точно так же, как этот делается в функции fgets().
Листинг 5.7. Построчное чтение из csv-файла
<html>
<head><title>Построчное чтение из csv-файла </title></head>
<body>
<table border=1>
<?php
$f_name="price.csv";
$fp = fopen ($f_name,"r");
while ($data = fgetcsv ($fp, filesize($f_name), ";"))
{
print "<tr>";
$num = count ($data);
for ($c=0; $c < $num; $c++)
print "<td>".$data[$c]."</td>";
print "</tr>";
}
fclose ($fp);
?>
</table>
</body>
</html>
7. Включение файла в документ
При разработке сложных сайтов, часто на многих страницах используются одинаковый HTML-дизайн и одинаковые PHP-функции. Переписывать строки кода в каждом сценарии неэффективно, кроме того если возникнет необходимость внести какие-то изменения, делать это придется во многих местах.
Массу времени удастся сэкономить, создав отдельные файлы для общего кода и включив их в PHP-сценарии с помощью одной из двух инструкций: include() и require().
Синтаксис:
include ( filename )
require ( filename ).
Обе команды работают почти одинаково, за исключением одного существенного различия. Независимо от того, в каком месте сценария имеется инструкция require(), ею всегда будет вставлен требуемый файл, даже если блок кода, где она задана, в данный момент не работает. Функция include(), наоборот, включит код из файла, только если она действительно вызвана. Поэтому необходимо использовать команду require(), когда файл должен быть включен, и include(), если файл в зависимости от обстоятельств может быть включен или нет. Рассмотрим более подробно команду include().
Функция принимает единственный аргумент — путь к включаемому файлу. Результатом ее действия является подстановка содержимого файла в место вызова в исходном скрипте. Если в качестве включаемого файла выступает PHP-скрипт, то сначала происходит его подстановка в исходный скрипт, а затем интерпретация результирующего скрипта.
Когда файл подключён, содержащийся в нём код наследует область видимости переменной1 строки, на которой возникло подключение. Любые переменные, доступные на этой строке в вызывающем файле, будут доступны в вызываемом файле, вперёд от этой точки. Любые переменные, доступные в вызываемом файле, будут доступны в вызывающем файле, вперёд от этой точки.
Листинг 5.8. Функция include()
<html>
<head> <title>Включение файла в документ</title></head>
<body>
<?php
echo " первый<br>";
include("5.9.php");
echo " третий <br>";
?>
</body>
</html>
Файл 5.9.php содержит код, представленный в листинге 5.10.
Листинг 5.9. Файл 5.9.php
<html>
<head><title>Включаемый файл</title></head>
<body bgcolor=yellow text=red>
<font color=blue>
<?php
echo " второй<br>";
?>
<h3> текст необязательно должен выводиться оператором echo </h3>
</font>
</body>
</html>