Автоподбор ширины колонок используется для лучшей читабельности отображенных данных. Т.е. если длина текста много больше или много меньше ширины колонки, то есть возможность "подогнать" ширину колонки под этот текст.
Для автоподбора используется метод AutoFit() объекта Columns(): Application->Visible = 1; // Заставляем его отобразиться$xls->Workbooks->Add(); // Добавляем новый документ $range=$xls->Range("A1"); // Задаем 1-ую ячейку$range->Font->Size = 20; // Задаем размер шрифта// Выводим в 1-ую выбранную ячейку значение$range->Value = "Справочник Web-языков: www.spravkaweb.ru"; $range=$xls->Range("B2"); // Задаем 2-ую ячейку$range->Font->Size = 20; // Задаем размер шрифта// Выводим во 2-ую выбранную ячейку значение$range->Value = "Справочник Web-языков: www.spravkaweb.ru"; $range=$xls->Range("A:B"); // Задаем для работы 2 строки$range->Select(); // Выделяем эти строки$rangeCells=$xls->Selection(); // Задаем $rangeCells как выделенный фрагмент$rangeCells->ColumnWidth = 5; // Устанавливаем ширину колонок = 5 мм $rangeCells=$xls->Range("B:B"); // Выделяем 2-ю колонку$rangeCells->Columns->AutoFit(); // Делаем автоподбор ширины // для второй колонки?>
Т.е. у нас получилось следующее:
В ячейки A1 и B2 мы записали текст Справочник Web-языков: www.spravkaweb.ru. Шрифт для текста задали 20. Затем установили ширину колонок равной 5, и для второй колнки сделали автоподбор ширины. В итоге первая колонка так и осталась шириной 5 мм, а вторая по ширине растянулась на всю длину надписи.
Автоподбор высоты строк:
Автоподбор высоты строк используется для лучшей читабельности отображенных данных. Т.е. если размер шрифта текста, размещенного в строках, намного меньше высоты строки, или намного больше высоты, то такой текст читать не очень приятно.
Для автоподбора используется метод AutoFit() объекта Rows: Application->Visible = 1; // Заставляем его отобразиться$xls->Workbooks->Add(); // Добавляем новый документ $range=$xls->Range("B1"); // Задаем 1-ую ячейку$range->Font->Size = 20; // Задаем размер шрифта// Выводим в 1-ую выбранную ячейку значение$range->Value = "Справочник Web-языков: www.spravkaweb.ru"; $range=$xls->Range("B2"); // Задаем 2-ую ячейку$range->Font->Size = 20; // Задаем размер шрифта// Выводим во 2-ую выбранную ячейку значение$range->Value = "Справочник Web-языков: www.spravkaweb.ru"; $range=$xls->Range("1:2"); // Задаем для работы 2 строки$range->Select(); // Выделяем эти строки$rangeRows=$xls->Selection(); // Задаем $rangeRows как выделенный фрагмент$rangeRows->RowHeight = 15; // Устанавливаем высоту строки = 15 мм $rowRange=$xls->Range("2:2"); // Выделяем 2-ю строку $rowRange->Rows->AutoFit(); // Делаем автоподбор высоты // для третьей строки?>
Т.е. у нас получилось следующее:
На первую и вторую строку мы записали текст Справочник Web-языков: www.spravkaweb.ru. Шрифт для текста задали 20. Затем установили высоту строк 15, и для второй строки сделали автоподбор высоты. В итоге первая строка отображается некорректно (верхняя часть букв не видна), а вторая нормально.
Левый нижний угол задается (x,y); высота и ширина - height
и width. pdf_closepath
Завершение текущего пути.
Синтаксис :
void pdf_closepath(int pdf_document)
Чертит линию от текущей точки до точки, где начиналась первая линия. Многие функции, например pdf_moveto(), pdf_circle(), pdf_rect() начинают новый путь. pdf_stroke
Заштриховка пути.
Синтаксис :
void pdf_stroke(int pdf_document)
Текущий путь - это совокупность всех линий. Без этой функции линии начерчены не будут. pdf_closepath_stroke
Черчение и закрытие пути.
Синтаксис :
void pdf_closepath_stroke(int pdf_document)
Это комбинация pdf_closepath() и pdf_stroke(). pdf_fill
Читает из открытого файла определенное количество символов.
Синтаксис :
string fread(int $f, int $numbytes)
Читает из файла $f $numbytes символов и возвращает строку этих символов. После чтения указатель файла продвигается к следующему после прочитанного блока позициям. Если $numbytes больше, чем можно прочитать из файла, возвращается то, что удалось считать. Этот прием можно использовать, если вам нужно считать в строку файл целиком. Для этого просто задайте в $numbytes очень большое число. Но если вы заботитесь об экономии памяти в системе, так поступать не рекомендуется. fwrite
Запись в файл.
Синтаксис :
int fwrite(int $f, string $str)
Записывает в файл $f все содержимое строки $str. Эта функция составляет пару для fread(), действуя "в обратном направлении".
При работе с текстовыми файлами (то есть когда указан символ t в режиме открытия файла) все \n авоматически преобразуются в тот разделитель строк, который принят в вашей операционной системе. fgets
Читает из файла одну строку, заканчивающуюся символом новой строки \n.
Синтаксис :
string fgets(int $f, int $length)
Этот символ также считывается и включается в результат. Если строка в файле занимает больше $length-1 байтов, то возвращаются только ее $length-1
символов. Функция полезна, если вы открыли файл и хотите "пройтись" по всем ее строкам. Однако даже в этом случае (и быстрее) будет воспользоваться функцией File(). Стоит также заметить, что эта функция (как и функция fread()) в случае текстового режима в Windows заботиться о преобразовании пар \r\n в один символ \n. fputs
Полный аналог fwrite().
Синтаксис :
int fputs(int $f, string $str) fgetcsv
Функция для работы с одним из форматов файлов, в котором может сохранять данные Excel.
Синтаксис :
list fgetcsv(int $f, int $length, char $delim=",")
Функция читает строку из файла, заданного дескриптором $f, и разбивает ее по символу $delim. Параметр $delim должен обязательно быть строкой из одного символа, в противном случае принимается во внимание только первый символ этой строки. Функция возвращает получившийся список или false, если строки кончились. Параметр $length задает максимальную длину строки точно так же, как это делается в fgets(). Пустые строки в файле не игнорируются, а возвращаются как список из одного элемента - пустой строки. Пример: $f=fopen("file.csv","r") or die("Ошибка");for($i=0; $data=fgetscsv($f, 1000, ";"); $i++) { $num = count($data); if($num==1 && $data[0]==="") continue; echo "
Добавить колонку можно при помощи метода Insert() объекта EntireColumn(): Application->Visible = 1; // Заставляем его отобразиться$xls->Workbooks->Add(); // Добавляем новый документ// Вставляем в первую и вторую верхнюю ячейку значения$range=$xls->Range("A1"); // Выбрали ячейку A1$range->Value = "1-ая колонка"; // Вставили значение$range=$xls->Range("B1"); // Выбрали ячейку B1$range->Value = "2-ая колонка"; // Вставили значение // Добавляем колонку$range=$xls->Range("B:B"); // Определяем коноку$range->EntireColumn->Insert(); // Вставляем на ее место новую колонку // Запись нового значения$range=$xls->Range("B1"); // Выбираем вторую верхнюю ячейку$range->Value = "Вставка"; // Записываем в нее значение?>
Добавление строки:
Добавить строку можно при помощи метода Insert() объекта EntireRow(): Application->Visible = 1; // Заставляем его отобразиться$xls->Workbooks->Add(); // Добавляем новый документ// Вставляем в 1-ую, 2-ую и 3-ю верхние ячейки значения$range=$xls->Range("A1"); // Выбрали ячейку A1$range->Value = "1-ая строка"; // Вставили значение$range=$xls->Range("A2"); // Выбрали ячейку A2$range->Value = "2-ая строка; // Вставили значение$range=$xls->Range("A3"); // Выбрали ячейку A3$range->Value = "3-ая строка"; // Вставили значение // Вставляем строку$range=$xls->Range("2:2"); // Определяем место$range->EntireRow->Insert(); // Вставляем строку?>
Дополнительные функции
get_browser
Определение возможностей браузера.
Синтаксис :
object get_browser([string user_agent]);
Возвращаемая информация извлекается из файла browscap.ini. Для определения браузера используется значение переменной $HTTP_USER_AGENT или значение, содержащееся в аргументе user_agent.
Информация возвращается в виде свойств объекта и отражает возможности клиентского браузера (например, версию, поддерживает ли он javascript или cookies). $key: $val \n"; } return $str;} echo "$HTTP_USER_AGENT";$bouser = get_browser();echo list_array ((array) $browser);?>
Содержимое возможного вывода: Mozilla/4.5 [en] (X11: Linux 2.2.9 i586)browser_name_pattern:Mozilla/4\.5.* parent:Netscape platform:Unknown majorver:4 minorver:5 browser:Netscape version:4 frames:1 tables:1 cookies:1 backgroundsounds: vbscript: javascript:1 javaapplets:1 activexcontrols: beta: crawler: authenticodeupdate: msn:
Для того чтобы функция могла функционировать, следует правильно указать месторасположение файла browscan.ini в файле конфигурации. highlight_file
Вывод содержимого файла с цветовой разметкой.
Синтаксис :
boolean highlight_file(string filename);
Имя или путь файла указывается в аргументе. Цвета выделения синтаксиса определяются в файле конфигурации PHP. Возвращает true или false при ошибке.
Напримет, чтобы заставить сервер Apache при получении запроса с URL, содержащего значение вида "http://имя.сервера/source/путь/к/файлу.php", выводит листинг файла "http://имя.сервера/source/путь/к/файлу.php", сделайте следующее.
Добавьте в файл httpd.conf следующий фрагмент:
# Используем директиву "ForceType" чтобы указать,# что значение source в URL - не каталог, а имя сценария PHP ForceType application/x-httpd-php
Создайте в корневом web-каталоге следующий файл с именем source:
Функция действует подобно highlight_file(), но использует не содержимое файла, а указанной строки.
show_source
Синоним функции highlight_file.
Синтаксис :
boolean show_source(string str);
pack
Пакетирование данных в двоичную строку.
Синтаксис :
string pack(string format [,mixed $args, ...]);
Функция pack() упаковывает заданные аргументы в бинарную строку, которая затем и возвращается. Формат параметров, а также их количество, задается при помощи строки $format, которая представляет собой набор однобуквенных спецификаторов форматирования - наподобие тех, которые указываются в sprintf(), но только без знака %. После каждого спецификатора может стоять число, которое отмечает, сколько информации будет обработано данным спецификатором. А именно, для форматов a,A,h и H число задает, какое количество символов будет помещено в бинарную строку из тех, что находится в очередном параметре-строке при вызове функции (то есть, определяет размер поля для вывода строки). В случае @ оно определяет абсолютную позицию, в которую будут помещены следующие данные. Для всех остальных спецификаторов следующие за ними числа задают количество аргументов, на которые распространяется действие данного формата. Вместо числа можно указать *, в этом случае подразумевается, что спецификатор действует на все оставшиеся данные.
Вот полный список спецификаторов формата:
a - строка, свободные места в поле заполняются символом с кодом 0;
A - строка, свободные места заполняются пробелами;
h - шестнадцатиричная строка, младшие разряды в начале;
H - шестнадцатиричная строка, старшие разряды в начале;
c - знаковый байт (символ);
C - беззнаковый байт;
s - знаковое короткое целое ( 16 битовб порядок байтов определяется архитектурой процессора);
S - беззнаковое короткое число;
n - беззнаковое целое (16 битов, старшие разряды в конце);
v - беззнаковое целое (16 битов, младшие разряды в конце);
i - знаковое целое (размер и порядок байтов определяется архитектурой);
I - беззнаковое целое;
l - знаковое длинное целое (32 бита, порядок знаков определяется архитектурой);
L - беззнаковое длинное целое;
N - беззнаковое длинное целое (32 бита, старшие разряды в конце);
V - беззнаковое целое (32 бита, младшие разряды в конце);
f - число с плавающей точкой (зависит от архитектуры);
d - число с плавающей точкой двойной точности (зависит от архитектуры);
x - символ с нулевым кодом;
X - возврат назад на 1 байт;
@ - заполнение нулевым кодом до заданной абсолютной позиции.
После выполнения приведенного кода в строке $bindata будет содержаться 6 байтов в такой последовательности:
0x12, 0x34, 0x78, 0x56, 0x41, 0x42 (в шестнадцатиричной системе счисления).
unpack
Распаковывает данные из двоичной строки.
Синтаксис :
array unpack(string format, string data);
Распаковывает данные из двоичной строки в массив согласно формату. Возвращает массив, содержащий распакованные элементы.
$array = unpack("c2chars/nint", $binarydata);
Возникающий в результате массив будет содержать "chars1", "chars2" и "int".
iptcparse
Анализирует двоичный IPTC блок на одиночные тэги.
Синтаксис :
array iptcparse(string iptcblock);
Эта функция анализирует двоичный блок IPTC на одиночные теги. Возвращает массив, использующий tagmarker как индекс и значение как значение. Возвращает false при ошибке или если никаких IPTC данных не было найдено.
leak
Имитация утечки памяти.
Синтаксис :
void leak(int bytes);
leak() отсекает определенный объем памяти.
Это полезно при отладке диспетчера памяти, который автоматически очищает "отсеченную" память при выполнении запроса.
Размер блока памяти указывается в байтах аргументом bytes.
serialize
Генерирует удобохраниемое представление значения.
Синтаксис :
string serialize(mixed value);
serialize() возвращает строку состоящую из потока байтов при представлениизначения value, которое может где-нибудь сохранено.
Это полезно для сохранения или передачи значений PHP без потери их типа и структуры.
Пример ://$session_data содержит многомерный массив с информацией о сессии //текущего пользователя. Мы используем serialize() для сохранения//этого в базе данных в конце запроса. $conn = odbc_connect("webdb", "php", "chicken");$stmt = odbc_prepare($conn, "UPDATE sessions SET data = ? WHERE id = ?");$sqldata = array(serialize($session_data), $PHP_AUTH_USER);if (!odbc_execute($stmt, &$sqldata)) { $stmt = odbc_prepare($conn, INSERT INTO sessions (id, data) VALUES(?, ?)"); if (!odbc_execute($stmt, &$sqldata)) { /* Что-то сделано неправильно. */ }}
unserialize
Создает PHP значение из сохраненного представления.
Синтаксис :
mixed unserialize(string str);
unserialize() берет одно сохраненное значение и преобразует обратно в PHP значение. Возвращает преобразованное значение, и может иметь тип: integer, double, string, array или object. Если был преобразован object, то методы не востановятся.
Пример :// Здесь мы используем unserialize() для загрузки данных о сессии из базы данных// в $session_data. Этот пример дополняет описанный в месте// с serialize() . $conn = odbc_connect("webdb", "php", "chicken");$stmt = odbc_prepare($conn, "SELECT data FROM sessions WHERE id = ?");$sqldata = array($PHP_AUTH_USER);if (!odbc_execute($stmt, &$sqldata) || !odbc_fetch_into($stmt, &$tmp)) {// Если сбой запуска или выборки , // то инициализируем массив $session_data = array();} else { // Мы должны иметь представление в $tmp[0]. $session_data = unserialize($tmp[0]); if (!is_array($session_data)) {// Что-то неправильно, инициализируем массив $session_data = array(); }}
uniqid
Генерирует уникальный идентификатор.
Синтаксис :
int uniqid(string prefix [, boolean lcg]);
Функция uniqid() возвращает уникальный идентификатор, основанный на текущем времени в микросекундах и имеющий префикс prefix.
Префикс может быть полезен, например, если Вы генерируете идентификаторы одновременно на отдельных хостах, которые, могли бы случилось, генерировали идентификатор в одной и той же микросекунде. Префикс может быть длиной до 114 символов.
Если в качестве его значения передается пустая строка, то длина сгенерированного идентификатора будет 13 символов (при lcg=true - 23 символа).
Если указан необязательный аргумент lcg со значением true, к концу идентификатора будет добавляться "комбинированный хеш энтропии LCG", делающий его значение более уникальным.
Принято также дообрабатывать полученное значение криптографическими методами (например, это часто делается в идентификаторах сессий).
// без случайной части$token = md5(uniqid(""));// посложнее$better_token = md5(uniqid(rnad()));
Эти строки генерируют 32 байта (128-битное шестнадцатеричное число): они обладают максимальной унакальностью, которая только может потребоваться.
Другие функции
ftruncate
Усекает файл.
Синтаксис :
bool ftruncate(int $f, int $newsize)
Эта функция усекает открытый файл $f до размера $newsize. Разумеется, файл должен быть открыт в режиме, разрешающим запись.
Например, следующий код очищает весь файл:
ftruncate($f,0); fflush
Немедленная запись всех изменений в файле.
Синтаксис :
void fflush(int $f)
Заставляет PHP немедленно записать на диск все изменения, которые производились до этого с открытым файлом $f. Что это за изменения? Дело в том, что для повышения производительности все операции записи в файл буферизируются: например, вызов fputs($f, "Это строка!") не приводит к непосредственной записи данных на диск - сначало они попадают во внутренний буфер (обычно размером 8К). Как только буфер заполняется, его содержимое отправляется на диск, а сам он очищается, и все повторяется вновь. Особенный выигрыш от буферзации чувствуется в сетевых операциях, когда просто глупо отправлять данные маленькими порциями. set_file_buffer
Устанавливает размер буфера.
Синтаксис :
int set_file_buffer(int $f, int $size)
Эта функция устанавливает размер буфера, о котором говорилось выше, для указанного открытого файла $f.
Чаще всего она используется так:
set_file_buffer($f,0);
Приведенный код отключает буферизацию для указанного файла, так что теперь все данные, записываемые в файл, немедленно отправляются на диск или в сеть. flock
Блокирование файла.
Синтаксис :
bool flock(int $f, int $operation [, int $wouldblock])
Функция устанавливает для указанного открытого дескриптора файла $f
режим блокировки, который бы хотел получить текущий процесс. Этот режим задается аргументом $operation и может быть одной из следующих констант:
LOCK_SH (или 1) - разделяемая блокировка;· LOCK_EX (или 2) - исключительная блокировка;· LOCK_UN (или 3) - снять блокировку;· LOCK_NB (или 4) - эту константу нужно прибавить к одной из предыдущих, если вы не хотите, чтобы программа подвисала на flock() в ожидании своей очереди, а сразу возвращала управление.
В случае, если был затребован режим без ожидания, и блокировка не была успешно установлена, в необязятельный параметр-переменную $wouldblock
будет записано значение истина true.
В случае ошибки функция возвращает false, а в случае успешного завершения - true.
session_is_registered
Проверяет, зарегестрирована или нет та или иная переменная.
Синтаксис :
bool session_is_registered(string $name)
Функция возвращает true, если переменная с именем $name была зарегестрирована в сессии, иначе возвращает false. session_unregister
Отменяет регистрацию переменной.
Синтаксис :
bool session_unregister(string $name)
Эта функция отменяет регистрацию для переменной с именем $name для текущей сессии. Или иначе, при завершении сценария все будет выглядеть так, словно переменная с именем $name и небыла никогда зарегестрирована.
Возвращает true, если все прошло успешно, и false - в противном случае.
Отметим, что после вызова функции session_unregister() глобальная переменная, которая была "аннулирована", не уничтожается, а сохраняет свое значение. session_unset
Отменяет регистрацию и уничтожает глобальные переменные.
Синтаксис :
void session_unset()
Эта функция, в отличии от session_unregister(), не только отменяет регистрацию переменных (всех переменных сессии, а не только какой-то одной), но и уничтожает глобальные переменные, которые были зарегестрированы в сессии. session_save_path
Имя каталога, в котором будут храниться файлы с данными из сессий.
Синтаксис :
string session_save_path([string $path])
Эта функция возвращает имя каталога, в котором будут помещаться файлы - временные хранилища данных сессии. В случае, если указан параметр, активное имя каталога будет переустановлено на $path. При этом функция вернет предыдущий каталог.
Формат ячеек: Выравнивание
В Excel при помощи PHP можно делать выравнивание данных, находящихся в ячейках как по вертикали, так и по горизонтали.
Форматирование и вывод строк
print
Выводит строку, значение переменной или выражение.
Синтаксис :
print(string arg)
Функция print() выводит аргумент arg, в качестве которого может быть переменная или выражение. echo
Производит вывод одного или нескольких значений.
Синтаксис :
echo(string arg1, string [argn]...)
Функция echo()
выводит значения перечисленных параметров.
echo() - фактически языковая конструкция, поэтому для нее не обязательны скобки, даже если используется несколько аргументов. echo "Перенос на следующую строку,имеющийся в коде, сохраняетсяи используется при выводе"."чтобы избежать этого используйте"."оператор конкатенации"; printf
Вывод отформатированной строки.
Синтаксис :
int printf(string format [, mixed args, ...]);
Делает то же самое, что и sprintf(), только результирующая строка не возвращается, а направляется в браузер пользователя. sprintf
Производит форматирование строки с подстановкой переменных.
Синтаксис : sprintf($format [,args, ...])
Эта функция возвращает строку, составленную на основе строки форматирования, содержащей некоторые специальные символы, которые будут впоследствии заменены на значения соответствующих переменных из списка аргументов.
Строка форматирования $format может включать в себя команды форматирования, предваренные символом %. Все остальные символы копируются в выходную строку как есть. Каждый спецификатор формата (то есть, символ % и следующие за ним команды) соответствуют одному, и только одному параметру, указанному после параметра $format. Если же нужно поместить в текст % как обычный символ, необходимо его удвоить:
echo sprintf("The percentage was %d%%",$percentage);
Каждый спецификатор формата включает максимум пять элементов (в порядке их следования после символа %):
Необязательный спецификатор размера поля, который указывает, сколько символов будет отведено под выводимую величину. В качестве символов-заполнителей (если значение имеет меньший размер, чем размер поля для его вывода) может использоваться пробел или 0, по умолчанию подставляется пробел. Можно задать любой другой символ-наполнитьел, если указать его в строке форматирования, предварив фпострофом.
Опциональный спецификатор выравнивания, определяющий, будет результат выровнен по правому или по левому краю поля. По умолчанию производится выравнивание по правому краю, однако можно указать и левое выравнивание, задав символ - (минус).
Необязательное число, определяющее размер поля для вывода величины. Если результат не будет в поле помещаться, то он &quo;вылезет" за края этого поля, но не будет усечен.
Необязательное число, предваренное точкой ".", предписывающее, сколько знаков после запятой будет в результирующей строке. Этот спецификатор учитывается только в том случае, если происходит вывод числа с плавающей точкой, в противном случае он игнорируется.
Наконец, обязательный (заметьте - единственный обязательный!) спецификатор типа величины, которая будет помещена в выходную строку:
b - очередной аргумент из списка выводится как двоичное целое число
c - выводится символ с указанным в аргументе кодом
d - целое число
f - число с плавающей точкой
o - восьмеричное целое число
s - строка символов
x - шестнадцатиричное целое число с маленькими буквами a-z
X - шестнадцатиричное целое число с большими буквами A-Z
Вот как можно указать точность представления чисел с плавающей точкой:
Производит интерпретацию строки согласно формату и занесение значений в переменные.
Синтаксис :
mixed sscanf(string str, string format [, string var1 ...])
Функция sscanf() является противоположностью функции printf(). Она интерпретирует строку str согласно формату format, аналогично спецификации printf(). При указании только двух аргументов полученные значения возращаются в массиве.
При указании дополнительных необязательных параметров (их следует передавать по ссылке) функция возвращает их число. Те переменные, которые не получают значений, в возвращаемом значении не учитываются.
// гененируем XML записть из строки$auth = "765\tLewis Carroll";$n = sscan($auth,"%d\t%s %s", &$id, &$first, &$last);echo "$first $last\n";
Форматирование текста:
Методика обращения к свойствам текста следующая:
сначала в ранее созданном документе задаем диапазон ячеек, к которым будет применено форматирование текста;
при помощи объекта Font() получаем доступ к форматированию выделенного фрагмента.
Application->Visible = 1; // Заставляем его отобразиться$xls->Workbooks->Add(); // Добавляем новый документ$rangeValue = $xls->Range("A1");$rangeValue->Value = "В выделенном блоке текст будет жирный, подчеркнутый, наклонный";$rangeValue = $xls->Range("A2");$rangeValue->Value = "Шрифт будет иметь высоту 12";$rangeValue = $xls->Range("A3");$rangeValue->Value = "Имя шрифта - Times New Roman"; $range=$xls->Range("A1:J10"); // Определяем область ячеек$range->Select(); // Выделяем ее$fontRange=$xls->Selection(); // Присваиваем переменной выделенную область // Далее задаем параметры форматирования текста в выделенной области$fontRange->Font->Bold = true; // Жирный$fontRange->Font->Italic = true; // Курсив$fontRange->Font->Underline = true; // Подчеркнутый$fontRange->Font->Name = "Times New Roman"; // Имя шрифта$fontRange->Font->Size = 12; // Размер шрифта ?>
Функции даты и времени
checkdate
Проверяет правильность даты/времени.
Синтаксис :
int checkdate(int month, int day, int year);
Функция checkdate() проверяет правильность даты, заданной в ее аргументах.
Возвращает true если дата, указанная как "month, day, year" (месяц, число, год), правильна, иначе false. Дата считается правильной, если:
- год между 1 и 32767 включительно
- месяц между 1 и 12 включительно
- день находится в диапазоне разрешенных дней данного месяца. Високосные годы учитываются. $month=1;$day=10;$year=2002;if(checkdate($month,$day,$year)) echo "Такой день есть!";else echo "Такого дня нет!";
Выведет: Такой день есть! $month=13;$day=10;$year=2002;if(checkdate($month,$day,$year)) echo "Такой день есть!";else echo "Такого дня нет!";
Выведет: Такого дня нет! date
Формат локального времени/даты.
Синтаксис :
string date(string format [, int timestamp]);
Эта функция возвращает строку, содержащую дату и время, отформатированную согласно строке format и используя временную метку timestamp или текущее локальное время, если не задана временная метка.
В фоматной строке должны использоваться следующие символы:
a - "до" и "после" полудня: "am" или "pm"
A - "До" и "После" полудня: "AM" или "PM"
d - день месяца, 2 цифры (на первом месте ноль) (от 01 до 31)
D - день недели, текстовый, 3 буквы; т.е. "Fri"
j - день месяца, 1-2 цифры без начальных нулей (от 1 до 31)
F - месяц, текстовый, длинный; т.е. "January"
h - час, 12-часовой формат (от 01 до 12)
H - час, 24-часовой формат (от 00 до 23)
g - час, 12-часовой формат без нулей (от 1 до 12)
G - час, 24-часовой формат без нулей (от 0 до 23)
i - минуты (от 00 до 59)
I(большая i) - 1, если действует переход на летнее время, иначе 0
L - 0, если год не високосный, или 1 в противном случае
B - Swatch Internet time
T - временная зона компьютера, например: MDT (доступна не всегда)
l (строчная "L") - день недели, текстовый, длинный; т.е. "Friday"
m - месяц, две цифры с нулями (от 01 до 12)
n - месяц, одна-две цифры без нулей (от 1 до 12)
M - трехбуквенное английское сокращение месяца; т.е. "Jan"
t - число дней в указанном месяце (от 28 до 31)
s - секунды (от 0 до 59)
S - англоязычный порядковый суффикс числа из двух букв, текстовый, т.е. "th", "nd"
U - целое число секунд, прошедших с момента начала эпохи UNIX (доступно не всегда)
Y - год, цифровой, 4 цифры (1999)
y - год, цифровой, 2 цифры (99)
w - порядковое число дня в неделе,(от 0-воскресенье до 6-суббота)
z - порядковое число дня в году (от 0 до 365)
Z - смешение временной зоны в секунадах (от -43200 до 43200)
Все остальные символы в строковом аргументе format возвращаются в результирующей строке "как есть".
Формат "Z" всегда возвращает 0 при использовании с функцией gmdate().
echo date("Сегодня d.m.Y");//Сегодня 31.01.2002echo date( "l dS of F Y h:i:s A" );// Thursday 31st of January 2002 12:51:19 PMecho "July 1, 2000 is on a " . date("l", mktime(0,0,0,7,1,2000));// July 1, 2000 is on a Saturday
Функции date() и mktime() возможно использовать вместе для того, чтобы найти даты в будущем или прошлом.
Первый необязательный аргумент этой функции задает метку времени Unix. В случае, если он не указан, то используется текущее время.
Если второй необязательный параметр равен нулю (по умолчанию), то возвращаемый массив будет численно индексирован; в противном случае возвращается ассоциативный массив, где элементы имеют следующие значения:
([1])"tm_sec" - секунды
([2])"tm_min" - минуты
([3])"tm_hours" - часы
([4])"tm_mday" - день месяца
([5])"tm_mon" - месяц в году
([6])"tm_year" - год, цифровой
([7])"tm_wday" - день недели
([8])"tm_yday" - день в году
([9])"tm_isdst" - активен ли переход на летнее время
gettimeofday
Получени даты системным вызовом.
Синтаксис :
array gettimeofday();
Эта функция возвращает ассоциативный массив, который содержит дату, возвращенную системным вызовом. Функция является интерфейсом системной функции gettimeofday(2).
Возвращаемый ассоциативный массив содержит следующие элементы:
"sec" - секунды
"usec" - микросекунды
"minuteswest" - смещение к западу от Гринвича, в минутах
"dsttime" - тип dst коррекции (переход на летнее время)
strftime
Форматирует время согласно локальным установкам.
Синтаксис :
string strftime(string format [, int timestamp]);
Возвращает строку, отформатированную согласно данной форматной строке format
и используя данную временную метку timestamp или текущее локальное время, если метка не задана.
Функцией setlocale() можно выставить язык, на котором будут выводиться названия месяцев и дней.
В форматной строке следует использовать следующие спецификаторы преобразований:
%a - сокращенное название дня недели по умолчанию (Wed);
%A - полное название дня недели по умолчанию (Wednesday);
%b - сокращенное название месяца по умолчанию (Apr);
%B - полное название месяца по умолчанию (April);
%c - предпочтительное представление даты и времени (06/19/02 15:45:11);
%C - номер века (год, деленный на 100 и без дробной части, от 00 до 99);
%d - день месяца как десятичное число (в диапазоне от 0 до 31);
%D - эквивалент %m/%d/%y;
%e - число месяца (вместо незначащего нуля ставится пробел) (от 1 до 31);
%h - аналог %b;
%H - час как десятичное число в 24-часовом формате (в диапазоне от 00 до 23);
%I - час как десятичное число в 12-часовом формате ( в диапазоне от 01 до 12);
%j - номер дня в году как десятичное число (в диапазоне от 001 до 366);
%m - номер месяца как десятичное число (в диапазоне от 1 до 12);
%M - минуты как десятичное число;
%n - символ перехода на новую строку;
%p - "am" или "pm" (до и после полудня) согласно текущему времени;
%r - время в 12-часовом формате (a.m. или p.m.);
%R - время в 24-часовом формате;
%S - секунды как десятичное число;
%t - символ табуляции;
%T - текущее время, эквивалентно %H:%M:$S;
%u - число дня в неделе (от 1 до 7) (понедельник - 1);
%U - номер недели в году как десятичное число, начиная с первого Воскресенья в качестве первого дня первой недели;
%V - номер недели в году по стандарту ISO 8601:1988 (от 1 до 53), где первая неделя - та, в которой насчитывается больше 3-х дней в текущем году;
%W - номер недели в году как десятичное число, начиная с первого понедельника в качестве первого дня первой недели;
%w - номер дня в неделе (от 0 до 6) (воскресенье - 0);
%x - представление даты в системном формате без указания времени (06/13/02);
%X - представление времени в системном формате без указания даты (15:34:54);
%y - год как десятичное число без столетия (в диапазоне от 00 до 99);
%Y - год как десятичное число, включая столетие;
%Z - временная зона или название или сокращение;
%% - символ "%".
setlocale ("LC_TIME", "C");print(strftime("%A in Finnish is "));setlocale ("LC_TIME", "fi");print(strftime("%A, in French "));setlocale ("LC_TIME", "fr");print(strftime("%A and in German "));setlocale ("LC_TIME", "de");print(strftime("A.\n"));
Форматирует локальное время согласно установкам locale.
getdate
Получает информацию о дате/времени.
Синтаксис :
array getdate(int timestamp);
Возвращает ассоциативный массив, содержащий информацию о дате со следующими элементами:
"seconds" - секунды
"minutes" - минуты
"hours" - часы
"mday" - день месяца
"wday" - день недели, цифровой
"mon" - месяц, цифровой
"year" - год, цифровой
"yday" - день года, цифровой; т.е. "299"
"weekday" - день недели, текстовый, полный; т.е. "Friday"
"month" - месяц, текстовый, полный; т.е. "January"
Получение даты в форматированной строке для времени GMT.
Синтаксис :
string gmdate(string format, int timestamp);
Аналогична функции date() за исключением того, что время возвращается в Гринвичском формате Greenwich Mean Time (GMT). Например, при запуске в Финляндии (GMT +0200), первая строка ниже напечатает "Jan 01 1998 00:00:00", в то время как вторая строка напечатает "Dec 31 1997 22:00:00".
echo date( "M d Y H:i:s",mktime(0,0,0,1,1,1998) );echo gmdate( "M d Y H:i:s",mktime(0,0,0,1,1,1998) );
gmstrftime
Форматирование локальных времени/даты.
Синтаксис :
string gmstrftime(string format, int timestamp);
Действие этой функции аналогично действию функции strftime() с тем отличием, что возвращается время по Гринвичу (GMT).
Например, при запуске в зоне (GMT -0500) первая строка бедт следующей: "Dec 31 1998 20:00:00", а вторая: " Jan 01 1999 01:00:00".
int mktime([int hour] [,int minute] [,int second] [,int month] [,int day] [,int year] [, int is_dst]);
Возвращает временную метку Unix согласно данным аргументам. Эта временная метка является целым числом, равным количеству секунд между эпохой Unix (1 Января 1970) и указанным временем.
Все парамеры это функции необязательны, но пропускать их можно только справо налево. Если какие-то параметры не заданы, на их место подставляются значения, соответствующие текущей дате.
Аргумент is_dst, указывает, осуществлен ли переход на летнее время (1) или нет (0); если не известно, то аргумент - (-1)
Функция возвращает timestamp, соответствующий указанной дате.
Правильность даты, переданной в параметрах, не проверяется. В случае некорректной даты ничего особенного не происходит - функция "делает вид", что ее не касается, и формирует соответствующий timestamp.
int gmmktime(int hour, int minute, int second, int month, int day, int year [, int is_dst]);
Идентична mktime() за исключением того, что передаваемые параметры передают время по Гринвичу (GMT).
time
Получение времени в секунадх.
Синтаксис :
int time();
Возвращает текущее время, измеренное в числе секунд с эпохи Unix (1 Января 1970 00:00:00 GMT).
Этот формат данных принят в Unix как стандартный (называется "UNIX timestamp"): в частности, время последнего изменения файлов указывается именно в таком формате. Вообще говоря, почти все функции по работе со временеи имеют дело именно с таким его представлением (которое называется timestamp). То есть представление " количество секунд с 1 января 1970 года" весьма универсально и, что главное, - удобно.
echo time();
microtime
Возвращает текущую временную метку UNIX в микросекундах.
Синтаксис :
string microtime();
Возвращает строку "msec sec" где sec текущее время, измеренное в числе секунд с эпохи Unix (0:00:00 1 Января, 1970 GMT), а msec - это часть в микросекундах. Эти функции доступны только в операционных системах, поддерживающих системный вызов gettimeofday().
Но дело в том, что милисекунды в различных OC выглядят по разному. Например в Unix это действительно число микросекунд, а в Windows - непонятное значение.
echo microtime(); // в Windows выведет что-то типа 0.53033200 1012468870
strtotime
Лексическое преобразование строки времени в Unix timestamp.
Синтаксис :
int strtotime(string time [, int now]);
В аргументе time функция получает дату в англоязычном формате, а затем преобразует ее в целочисленный формат Unix timestamp.
echo strtotime("now")."\n";echo strtotime("10 September 2002")."\n";echo strtotime("+2 day")."\n";echo strtotime("+3 week")."\n";echo strtotime("+1 week 2 days 4 hours 34 seconds")."\n";
Функции динамической загрузки
dl
Загрузка библиотеки расширения PHP во время выполнения.
Синтаксис :
int dl(string library); dl("extensions/php_db.dll");
Загружает PHP расширение определенное в library. get_loaded_extensions
Определения перечня загруженных модулей.
Синтаксис :
array get_loaded_extensions(void);
Возвращает массив, содержащий список имен модулей PHP, которые были прокомпилированны, загружены при старте PHP и загружены во время исполнения функцией dl(). print_r (get_loaded_extensions());
Выводит информацию, подобную следующей: Array( [0] => standard [1] => bcmath [2] => calendar [3] => ctype [4] => com [5] => ftp [6] => mysql [7] => odbc [8] => overload [9] => pcre [10] => session [11] => tokenizer [12] => xml [13] => wddx [14] => zlib [15] => exif [16] => gd [17] => zip) extension_loaded
Проверка загрузки модуля.
Синтаксис :
bool extension_loaded(string name);
Возвращает true, если указанный модуль name уже был загружен. Следует обращать внимание на то, как пишется имя модуля, и на регистр символов. get_extension_funcs
Определение функций модуля.
Синтаксис :
array get_extension_funcs(string module_name);
Возвращает массив, содержащий перечисление имен функций, содержащихся в модуле module_name. Этот модуль должен быть предварительно загружен. print_r(get_extension_funcs("xml"));
Функции для определения типов файлов
file_exists
Проверяет существование вызываемого файла.
Синтаксис :
bool file_exists(string filename)
Возвращает true, если файл с именем filename существует на момент вызова. Следует использовать эту функцию с осторожностью. Например, следующий код никуда не годится с точки зрения безопасности:
$fname="/etc/passwd";if(!file_exists($fname)) $f=fopen($fname,"w");else $f=fopen($fname,"r");
Дело в том, что между вызовом file_exists() и открытием файла в режиме w проходит некоторое время, в течение которого другой процесс может вклиниться и подменить используемый нами файл. Данная проблема выходит на передний план при написании сценария счетчика.
Функция не работает с удаленными файлами, файл должен находиться в доступной для сервера файловой системе.
Результаты функции кэшируются, см. функцию clearstatcache(). filetype
Возвращает тип файла.
Синтаксис :
string filetype(string filename)
Возвращает строку, которая описывает тип файла с именем filename. Если такого файла не существует, возвращает false.
После вызова строка будет содержать одно из следующих значений: file - обычный файл;dir - каталог;link - символическая ссылка;fifo - fifo-канал;block - блочно-ориентированное устройство;char - символьно-ориентированное устройство;unknown - неизвестный тип файла; is_file
Проверка существования обычного файла.
Синтаксис :
bool is_file(string filename)
Возвращает true, если filename
- обычный файл. is_dir
Проверка существования каталога.
Синтаксис :
bool is_dir(string filename)
Возвращает true, если каталог filename существует. is_link
Проверка существования символической ссылки на файл.
Синтаксис :
bool is_link(string filename)
Возвращает true, если filename - символическая ссылка.
Функция не работает под Windows. is_readable
Проверка существования файла, доступного для чтения.
Синтаксис :
bool is_readable(string filename)
Возвращает true, если файл может быть открыт для чтения.
Обычно PHP осуществляет доступ к файлу с привелегиями пользователя, запускающего web-сервер (часто "nobody"). Соображения безопасности должны приниматься в расчет.
is_writeable
Проверка существования файла, доступного для записи.
Синтаксис :
bool is_writeable(string filename)
Возвращает true, если в файл можно писать.
Обычно PHP осуществляет доступ к файлу с привелегиями пользователя, запускающего web-сервер (часто "nobody"). Соображения безопасности должны приниматься в расчет.
is_executable
Проверка существования запускаемого файла.
Синтаксис :
bool is_executable(string filename)
Возвращает true, если файл filename - исполняемый.
is_uploaded_file
Проверка существования файла, загруженного методом HTTP POST.
Синтаксис :
bool is_uploaded_file(string filename)
Возвращает true, если файл с именем filename был загружен на сервер посредством HTTP POST.
Часто это полезно, чтобы убедиться, что пользователи из злого умысла не пытались заставить сценарий работать с теми файлами, с которыми им работать не следует, например: /etc/passwd.
Функции для преобразования символов
nl2br
Заменяет символы перевода строки.
Синтаксис :
string nl2br(string string)
Заменяет в строке все символы новой строки \n на \n и возвращает результат. Исходная строка не изменяется. Обратите внимание на то, что символы \r, которые присутствуют в конце строки текстовых файлов Windows, этой функцией никак не учитываются, а потому остаются на старом месте. strip_tags
Производит конвертацию символов, имеющих HTML-представление.
Синтаксис :
string htmlentities(string str [, int quote_style]);
Эта функция похожа на htmlspecialchars(), но только в ней производиться не выборочная трансляция, а полная - для всех символов, которые могут иметь эквивалентные HTML-представления.
При помощи необязательного атрибута quote_style можно указать, что делать с кавычками:
ENT_COMPAT (по умолчанию) - разрешить трансляцию только двойных кавычек
ENT_QUOTES - разрешить трансляцию любых кавычек
ENT_NOQUOTES - запретить трансляцию любых кавычек
hebrev
Конвертация логического текста Hebrew в отображаемый.
Синтаксис :
string hebrev(string hebrew_text [, int max_chars_per_line]);
Необязательный аргумент max_chars_per_line указывает число символов на строку вывода. Функция пытается избежать разрыва слова.
hebrevc
Аналог функции hebrev с расстоновкой переносов.
Синтаксис :
string hebrevc(string hebrew_text [, int max_chars_per_line]);
Функция hebrevc() сходна с hebrev() с тем отличием, что она преобразует символы перевода строк "\n" в " \n". необязательный аргумент max_chars_per_line указывает число символов на строку вывода. Функция пытается избежать разрыва слов.
quoted_printable_decode
Преобразование цитированной строки в 8-битную.
Синтаксис :
string quoted_printable_decode(string str);
Функции для работы с функциями
get_defined_functions
Возвращает перечень всех доступных функций.
Синтаксис:
array get_defined_functions()
Функция get_defined_functions() Возвращает многомерный массив, который содержит имена всех доступных сценарию функций. print_r(get_defined_functions); function_exists
Проверяет существование функции.
Синтаксис:
bool function_exists(string fuction_name)
Функция function_exists() возвращает значение true, если функция с именем function_name имеется в сценарии. В противном случае возвращает false. if(function_exists("imagecreate")) { echo "Библиотека работы с графикой доступна!
";} else { echo "Библиотека работы с графикой недоступна!
Функция call_user_func()
вызывает функцию function_name и передает ей все остальные параметры parameter ...
create_function
Динамическое создание функции.
Синтаксис :
string create_function(string args, string code)
Функция create_function() создает анонимную функцию и возвращает имя, созданное для этой функции. Аргументы функции, перечисленные в аргументе args, обычно передаются в одинарных кавычках. Также передается тело функции в аргументе code. Это необходимо для того, чтобы недопустить замену интерпретатором переменных на значения. Если всеже ограничивать двойными кавычками, то необходимо предварять указание переменных слешем :\$var.
Обычно возвращаемые функцией имена содержат префикс lambda_.
При помощи этой функции можно создавать функции на основе информации, полученной во время исполнения сценария. $func = create_function('$a,$b', 'return "$a*$b = ".$a*$b);');echo "Имя новой функции: $func ";echo $func(2,3);
Данный пример выведет следующее: Имя новой функции: lambda_16
func_get_arg
Получение аргумента функции.
Синтаксис :
mixed func_get_arg(int arg_num);
Функция func_get_arg() возвращает указанный в arg_num агрумен, который был передан в текущую пользовательскую функцию в качестве параметра. Перечисление переданных в функцию параметров начинается с нуля.
В случае, если эта функция вызывается вне определения функции, то она выдает предупреждение об ошибке. Также предупреждение будет выдаваться при попытке узнать параметр, которого не существует в списке аргументов (функция возвратит false). Для того, чтобы функция работала корректно, необходимо заранее узнать общее количество параметров, которое передается в пользовательскую функцию с помощью функции func_num_args().
Примеры: echo basename("/home/somebody/somefile.txt"); // выводит "somefile.txt"echo basename("/"); // ничего не выводитecho basename("/."); // выводит "."echo basename("/./"); // также выводит "."
Функция basename() не проверяет существование файла. Она просто берет часть строки после самого правого слеша и возвращает ее.
Эта функция правильно обрабатывает как прямые, так и обратные слеши под Windows. dirname
Выделяет имя каталога.
Синтаксис :
string dirname(string $path)
Возвращает имя каталога, выделенное из пути $path. Функция довольно "разумна" и умеет выделять нетривиальные ситуации, которые описаны в примерах: echo dirname("/home/file.txt"); // выводит "/home"echo dirname("../file.txt"); // выводит ".."echo dirname("/file.txt"); // выводит "/" под Unix, // "\" под Windowsecho dirname("/"); // то же самоеecho dirname("file.txt"); // выводит "."
Если функции dirname() передать просто имя файла, она вернет ".", что означает "текущий каталог". tempnam
Генерирует уникальное имя файла в определенном каталоге.
Синтаксис :
string tempnam(string $dir, string $prefix)
Генерирует имя файла в каталоге $dir с префиксом $prefix в имени, причем так, чтобы созданный под этим именем в будущем файл был уникален.
Для этого к строке $prefix присоединяется некое случайное число.
Например, вызов tempnam("/tmp","temp") может возвратить /tmp/temp3a6b243c.
Если такое имя нужно создать в текущем каталоге, передайте $dir="." realpath
Преобразует относительный путь в абсолютный.
Синтаксис :
string realpath(string $path)
Преобразует относительный путь $path в абсолбтный, т.е. начинающийся от корня.
Пример: echo realpath("../t.php"); // например, /home/t.phpecho realpath("."); // выводит имя текущего каталога
Файл, который указан в параметре $path, должен существовать, иначе функция фозвратит false.
Функции для работы с одиночными символами
chr
Возвращает один символ с определенным кодом.
Синтаксис:
string chr(int ascii)
Возвращает строку из одного символа с кодом $code. Эта функция полезна для вставки каких-либо непечатаемых символов в строку - например, кода нуля или символа прогона страницы, а также при работе с бинарными файлами. // Сначало создаем массив того, что мы собираемся выводить,// не заботясь о форматировании (дизайне) информацииfor($i=0, $x=0; $x<16; $x++) { for($y=0; $y<16; $y++) { $Chars[$x][$y]=array($i,chr($i)); $i++; }}// Теперь выводим накопленную информацию, используя идеологию// вставки участков кода в HTML-документ?>
=$Chars[$x][$y][0]?>: =$Chars[$x][$y][1]?>
}?>
}?>
ord
Возвращает ascii код символа.
Синтаксис :
int ord(string str)
Эта функция возвращает ASCII код первого символа строки str.
Например, ord(chr($n)) всегда равно $n - конечно, если $n заключено между нулем и 255.
Функции форматных преобразований
parse_url
Обрабатывает URL и возвращает его компоненты.
Синтаксис :
array parse_url(string url);
Эта функция возвращает ассоциативный массив, включающий множество различных существующих компонентов URL. Они включают "scheme", "host", "port", "user", "pass", "path", "query" и "fragment". parse_str
Заносит строки URL в переменные.
Синтаксис :
void parse_str(string str [, array arr]);
Функция parse_str() интерпретирует строку str, как если бы эта строка содержала в себе переменные и их значения и передавалась бы в URL. Наша функция устанавливает для этих переменных значения.
Если задан второй необязательный параметр, то значения, найденные при помощи функции parse_str(), сохраняться не в глобальных переменных, а в элементах указанного массива. $str = "name[]=Vasia&name[]=Pupkin&id=12645&mail=vasia@mail.ru&url=www.vasia.ru";parse_str($str);parse_str($str, $arr);echo $id; // выведет 1264echo $name[0]; // выведет Vasiaecho $name[1]; // выведет Pupkinprint_r($arr);// выведетArray( [name] => Array ( [0] => Vasia [1] => Pupkin ) [id] => 12645 [mail] => vasia@mail.ru [url] => www.vasia.ru) rawurlencode
Кодирование URL.
Синтаксис :
string RawUrlEncode(string str);
Функция RawUrlEncode() возвращает строку, в которой все не алфавитно-цифровые символы (за исключением дефиса "-", знака подчеркивания "_" и точки ".") заменены последовательностями: знак процента (%), за которым следуют две шестнадцатеричные цифры, которые обозначают код символа. Это кодирование нужно для того, чтобы буквенные символы не обрабатывались в качестве разделителей строки URL и не искажались при передаче в сетях. echo ""; // передача пароля в гиперссылке rawurldecode
Допустим, у нас задача - вставить в письмо, отправляемое с сайта пользователю, свой баннер (кнопку).
Сделать это можно двумя способами:
Первый - в HTML-коде письма указываем адрес картинки как на простой страничке
В этом случае, если пользователь читает ваше письмо online, картинка благополучно загрузится с указанного сервера и отобразится в письме. Но если пользователь не в online, картинка загрузиться не сможет.
Второй способ - это поместить картинку в само письмо как прикрепленный файл (более подробно о прикреплении файлов к письму читайте здесь), присвоить этому файлу уникальный идентификатор, а затем в теле письма при указании адреса картинки сослаться на этот идентификатор.
Таким образом, в письмо можно вставлять не только изображения, но и flash-ролики, музыку, элементы ActiveX.
Конечно, при этом размер письма увеличится, но зато мы будем уверены, что пользователь точно увидит вставляемую картинку (если конечно в его почтовой программе не отключено отображение изображений).
Чтобы присвоить идентификатор картинке, надо в разделе письма, где она располагается, поместить следующий заголовок: Content-ID: <идентификатор>
где идентификатор является строкой, которая будет уникальной для данного письма (по примеру параметра boundary заголовка Content-Type).
Теперь в самом письме можно в адресе картинки подставлять ее идентификатор.
Почтовая программа проанализирует его, извлечет из соответствующей секции картинку и покажет ее.
Вот как может выглядеть письмо: Date: Sat, 13 Mar 2004 09:56:31 -0300Subject: Отправка изображенияFrom: "Evgen" To: admin@localhost.ruSubject: Отправка изображенияMime-Version: 1.0Content-Type: multipart/alternative; boundary="spravkaweb-1234" --spravkaweb-1234Content-type: text/html; charset="windows-1251"Content-Transfer-Encoding: 8bit
Привет
Это проба отправки письма с прикрепленной картинкой. А вот и сама картинка: --spravkaweb-1234Content-Type: image/jpeg; name="5.jpg"Content-Transfer-Encoding:base64Content-ID: /9j/4AAQSkZJRgABAQAAAQABAAD/2wBD ....--spravkaweb-1234--
Как и в случае с прикрепляемыми файлами, если нам заранее неизвестно, какой тип картинки будет прикреплен, заголовку Content-Type можно присвоить значение application/octet-stream.
Для закрепления этой темы напишем программу, которая отправляет письмо с картинкой:
Это проба отправки письма с прикрепленной картинкой. А вот и сама картинка: ";$body.="\n\n--$bound\n";$body.="Content-Type: image/jpeg; name=\"".basename($file_name)."\"\n";$body.="Content-Transfer-Encoding:base64\n";$body.="Content-ID: \n\n";$f=fopen($file_name,"rb");$body.=base64_encode(fread($f,filesize($file_name)))."\n";$body.="--$bound--\n\n";mail("admin@localhost.ru", $subj, $body, $headers);?>
Хочу отметить, что аналогичным образом в письмо можно вставлять не только картинки, но, например, flash-ролики, звук, и другие элементы, которые должны подгружаться к странице из файлов.
Календарные функции
JDToGregorian
Преобразование дневного Юлианcкого счета в Грегорианскую дату.
Синтаксис :
string jdtogregorian(int julianday);
Преобразование дневного Юлианcкого счета в Грегорианскую в формате "месяц/день/год" GregorianToJD
Преобразовывает Грегорианскую дату на Дневный Юлианский cчет.
Синтаксис :
int gregoriantojd(int month, int day, int year);
Правильный дипазон для Грегорианского календаря 4714 д.э. до 9999 н.э.
Хотя это программное обеспечение может оперировать даты в обратном порядке до 4714 д.э., такое использование может быть бесполезно и не значительно. Грегорианский календарь не был учрежден до Октября 15, 1582 (или Октябрь 5, 1582 в Юлианском календаре). Некоторые страны еще очень долго не принимали его. Например, Великобритания преобразовалась в 1752, СССР в 1918 и Греции в 1923. Наиболее Европейские страны использовали Юлианский Календарь До Грегорианского. Пример : JDToJulian
Преобразовывает дату Юлианского календаря на дневный Юлианский счет.
Синтаксис :
string jdtojulian(int julianday);
Преобразование дневного Юлианского счета в строку, содержащую дату Юлианского Календаря в формате "месяц/день/год". JulianToJD
Преобразовывает дату Юлианского Календаря на дневной Юлианский счет.
Синтаксис :
int juliantojd(int month, int day, int year);
Правильный дипазон для Юлианского календаря 4713 д.э. до 9999 н.э.
Хотя это программное обеспечение может оперировать даты в обратном порядке до 4713 д.э. такое использование может быть бесполезно и не значительно. Календарь был создан в 46 д.э., но подробные не стабилизировался до по крайней мере 8 н.э., и возможно познее в 4-ом столетии. Также, начало года различно от одной культуры к другой - не все соглашаются, что Январь это первый месяц. JDToJewish
Преобразовывает дневной Юлианский счет в Еврейский календарь.
Синтаксис :
string jdtojewish(int julianday);
JewishToJD
Преобразовывает дату в Еврейском Календаре на дневной Юлианский счет.
Синтаксис :
int jewishtojd(int month, int day, int year);
Еврейский календарь использовался в течение нескольких тысячалетий, но в течение начального периода не было никакой формулы, чтобы определить начало месяца. Новый месяц начинался когда замечено полнолуние.
JDToFrench
Преобразовывает дневной Юлианский счет в Французский Республиканский календарь.
Синтаксис :
string jdtofrench(int month, int day, int year);
Преобразовывает дневной Юлианский счет в Французский Республиканский календарь.
FrenchToJD
Преобразовывает дату и Французского Республиканского календаря в дневной Юлианский счет.
Синтаксис :
int frenchtojd(int month, int day, int year);
Эта программа преобразовывают даты в начиная с 1 до 14 (Грегорианские даты 22 Сентября 1792 до 22 1806 Сентября). Это покрывает тот период когда календарь использовался.
JDMonthName
Возвращает название месяца.
Синтаксис :
string jdmonthname(int julianday, int mode);
Возвращает строку с названием месяца. main сообщает функции, в какой календарь нужно преобразовать дневнрй Юлианский счет на, и какой тип месячных имен должен быть возвращен.
Календарные способы
0
Грегорианский - apreviated
1
Грегорианский
2
Юлианский - apreviated
3
Юлианский
4
Еврейский
5
Французский Республиканский
JDDayOfWeek
Возвращает день недели.
Синтаксис :
mixed jddayofweek(int julianday, int mode);
Возвращает день недели. Может возвратить строку(string) или int в зависимости от способа(mode).
Календарные недельные пути
Способ
Значение
0
возвращает дневной номер как int (0=воскресенье, 1=понедельник, и т.п.)
1
возврат string содержание дня недели (английское-грегорианское)
2
возвращает string содержа abreviated дени недели (английский-грегорианский)
Ключи и значения
array_flip
Меняет местами индексы и значения массива.
Синтаксис :
array array_flip(array arr)
Эта функция "пробегает" по массиву и меняет местами его ключи и значения. Исходный массив arr не изменяется, а результирующий массив просто возвращается. Конечно, если в массиве присутствовало несколько элементов с одинаковыми значениями, учитываться будет только последний из них: $A = array("a"=>"aaa", "b"=>"aaa", "c"=>"ccc");
$A = array_flip($A);
// Теперь $A===array("aaa"=>"b", "ccc"=>"c"); array_keys
Возвращает список из ключей массива.
Синтаксис :
list array_keys(array arr [,mixed search_value])
Функция возвращает список, содержащий все ключи массива arr. Если задан необязательный параметр search_value, то она вернет только те ключи, которым соответствуют значения search_value. $arr = array(0 => 100, "color" => "red", 15);array_keys($arr); // возвратит array(0, "color", 1) $arr = array("blue", "red", "green", "blue", "blue");array_keys($arr, "blue"); // возвратит array(0, 3, 4) array_values
Удаление ассоциативных индексов массива.
Синтаксис :
list array_values(array arr)
Функция array_values() возвращает список всех значений в ассоциативном массиве arr, т.е. превращает ассоциативный массив в простой (скалярный). $arr = array("size" => "XL", "color" => "gold");array_values($arr);// возвратит array("XL", "gold")
Очевидно, такое действие бесполезно для списков, но иногда оправданно для хешей. in_array
Осуществляет проверку массива на наличие значения.
Синтаксис :
bool in_array(mixed val, array arr)
Функция in_array() возвратит true, если в массиве arr содержится элемент со значением var. $arr = array("1", "2", "tree");if(in_array["2", $arr)) echo "2 есть";
array_count_values
Возвращает количество одинаковых значений массива.
Синтаксис :
array array_count_values(array arr)
Эта функция подсчитывает, сколько раз каждое значение встречается в массиве arr, и возвращает ассоциативный массив с ключами - элементами массива и значениями - количеством повторов этих элементов. Иными словами, функция array_count_values()
подсчитывает частоту появления значений в массиве arr.
Функция sizeof() возвращает количество элементов в массиве arr на подобие действия функции count().
count
Возвращает число элементов в массиве или объекте.
Синтаксис :
int count(mixed var)
Функция count() возвращает число элементов в массиве или объекте var. В случае, если var - скалярная переменная, то функция возвращает 1, если такая переменная существует, или 0, если такой переменной нет.
Надо отметить, что 0 возвращается и тогда, когда указан массив, не содержащий элементов.
Для проверки существования переменной лучше воспользоваться функцией isset().
В первом случае функция strtr() возвращает строку str, у которой каждый символ, присутствующий в строку from, заменяется на корреспондирующий из строки to. В случае, если строки from и to
различной длины, то лишние конечные символы длинной строки игнорируются.
Во втором случае функция strtr() возвращает строку, в которой фрагменты строки str заменяются на соответствующие индексам значения элементов массива from. При этом функция пытается заменить сначало наибольшие фрагменты исходной строки и не выполняет замену в уже модифицированных частях строки. Таким бразом, теперь мы можем выполнить несколько замен сразу: $Subs = array( "" => "Larry", "