Справочник по PHP

         

Автоподбор ширины колонок:


Автоподбор ширины колонок используется для лучшей читабельности отображенных данных. Т.е. если длина текста много больше или много меньше ширины колонки, то есть возможность "подогнать" ширину колонки под этот текст.

Для автоподбора используется метод AutoFit() объекта Columns():

<?php$xls = new COM("Excel.Application"); // Создаем новый COM-объект$xls->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:

<?php$xls = new COM("Excel.Application"); // Создаем новый COM-объект$xls->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, и для второй строки сделали автоподбор высоты. В итоге первая строка отображается некорректно (верхняя часть букв не видна), а вторая нормально.



Черчение и заполнение фигур


pdf_curveto

Черчение кривой.

Синтаксис :

void pdf_curveto(int pdf_document, double x1, double y1, double x2, double y2, double x3, double y3)

Чертит кривую Безье от текущей точки до (x3,y3), использую точки (x1,y1) и (x2,y2) как ориентирующие.

pdf_lineto



Черчение отрезка.

Синтаксис :

void pdf_lineto(int pdf_document, double x, double y)

Чертит линию от текущей точки до указанной (x,y).

pdf_circle

Черчение окружности.

Синтаксис :

void pdf_circle(int pdf_document, double x, double y, double radius)

pdf_arc

Черчение дуги.

Синтаксис :

void pdf_arc(int pdf_document, double x, double y, double radius, double start, double end)

Начальный и конечный угол задаются в start и end.

pdf_rect

Черчение прямоугольника.

Синтаксис :

void pdf_rect(int pdf_document, double x, double y, double width, double height)

Левый нижний угол задается (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

Заполнение пути цветом.

Синтаксис :

void pdf_fill(int pdf_document)

pdf_fill_stroke

Заполнение пути цветом и закрытие его.

Синтаксис :

void pdf_fill_stroke(int pdf_document)

pdf_closepath_fill_stroke

Черчение, закрашивание и закрытие пути.

Синтаксис :

void pdf_closepath_fill_stroke(int pdf_document)

pdf_endpath

Завершение пути без его закрытия.

Синтаксис :

void pdf_endpath(int pdf_document)


pdf_clip

Прикрепление всех линий к текущему пути.

Синтаксис :

void pdf_clip(int pdf_document)

pdf_setgray_fill

Установка заполнения серым цветом.

Синтаксис :

void pdf_setgray_fill(int pdf_document, double gray_value)

pdf_setgray_stroke

Установка штриховки серым цветом.

Синтаксис :

void pdf_setgray_stroke(int pdf_document, double gray_value)

pdf_setgray

Установка заполнения и штриховки серым цветом.

Синтаксис :

void pdf_setgray(int pdf_document, double gray_value)

pdf_setrgbcolor_fill

Установка заполнения цветом RGB.

Синтаксис :

void pdf_setrgbcolor_fill( int pdf_document, double red_value, double green_value, double blue_value)

pdf_setrgbcolor_stroke

Установка штриховки цветом RGB.

Синтаксис :

void pdf_setrgbcolor_stroke(int pdf_document, double red_value, double green_value, double blue_value)

pdf_setrgbcolor

Установка заполнения и штриховки цветом RGB.

Синтаксис :

void pdf_setrgbcolor(int pdf_document, double red_value, double green_value, double blue_value)

pdf_add_outline

Добавление закладки для текущей страницы.

Синтаксис :

void pdf_add_outline(int pdf_document, string text [, int parent [, int open]])

Название закладки определяется аргументом text. Она становится дочерним объектом объекта parent и по умолчанию открыта (если аргумент open

не равен 0). Возвращается идентификатор закладки, который может использоваться как родительский для других закладок.

pdf_set_transition

Установка режима перехода между страницами.

Синтаксис :

void pdf_set_transition(int pdf_document, int transition)

Используйте функцию pdf_set_parameter() с параметром "transition".

pdf_set_duration

Установка интервала между страницами.

Синтаксис :

void pdf_set_duration(int pdf_document, double duration)


Чтение и запись


fread

Читает из открытого файла определенное количество символов.

Синтаксис :

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 "<h3>Строка номер $i ($num полей):</h3>";  for($c=0; $c<$num; $c++)    print "[$c]: $data[$c]<br>";}fclose($f);



Добавление колонки:


Добавить колонку можно при помощи метода Insert() объекта EntireColumn():

<?php$xls = new COM("Excel.Application"); // Создаем новый COM-объект$xls->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():

<?php$xls = new COM("Excel.Application"); // Создаем новый COM-объект$xls->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).

<?phpfunction list_array($array) {  while (list ($key, $val) == each ($array)) {    $str .= "<b>$key:</b> $val<br>\n";  }  return $str;} echo "$HTTP_USER_AGENT<hr>";$bouser = get_browser();echo list_array ((array) $browser);?>

Содержимое возможного вывода:

Mozilla/4.5 [en] (X11: Linux 2.2.9 i586)<hr><b>browser_name_pattern:</b>Mozilla/4\.5.*<br><b>parent:</b>Netscape<br><b>platform:</b>Unknown<br><b>majorver:</b>4<br><b>minorver:</b>5<br><b>browser:</b>Netscape<br><b>version:</b>4<br><b>frames:</b>1<br><b>tables:</b>1<br><b>cookies:</b>1<br><b>backgroundsounds:</b> <br><b>vbscript:</b> <br><b>javascript:</b>1<br><b>javaapplets:</b>1<br><b>activexcontrols:</b> <br><b>beta:</b> <br><b>crawler:</b> <br><b>authenticodeupdate:</b> <br><b>msn:</b> <br>

Для того чтобы функция могла функционировать, следует правильно указать месторасположение файла 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<Location /source>  ForceType application/x-httpd-php</Location>

  Создайте в корневом web-каталоге следующий файл с именем source:

<HTML><HEAD><TITLE>Source Display</TITLE></HEAD><BODY bgcolor=#FFEEDD><?php$script = getenv ("PATH_TRANSLATED");if(!$script) {  echo "<BR><B>ERROR: Укажите имя сценария</B><BR>";} else {  if(ereg("(\.php|\.inc)$",$script)) {    echo "<H!>Листинг файла: $PATH_INFO</H1>\n<hr>\n";    if(!@highlight_file($script))      echo "Ошибка вывода файла";  } else {    echo "<H1>ERROR: Показываются только листинги PHP файлов </H1>";  }}echo "<HR>Распечатано: ".date("Y/M/d H:i:s",time());?></BODY></HTML>

highlight_string

Выделение строки цветом.

Синтаксис :

void highlight_string(string str);

Функция действует подобно 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 = pack("nvc*", 0x1234, 0x5678, 65, 66);

После выполнения приведенного кода в строке $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

Вот как можно указать точность представления чисел с плавающей точкой:

$money1 = 68.75;$money2 = 54.35;$money = $money1 + $money2;// echo $money выведет "123.1"...$formatted = sprintf ("%01.2f", $money);// echo $formatted выведет "123.10"!

Вот пример вывода целого числа, предваренного нужным количеством нулей:

$isodate=sprintf("%04d-%02d-%02d",$year,$month,$day);

sscanf

Производит интерпретацию строки согласно формату и занесение значений в переменные.

Синтаксис :

mixed sscanf(string str, string format [, string var1 ...])

Функция sscanf() является противоположностью функции printf(). Она интерпретирует строку str согласно формату format, аналогично спецификации printf(). При указании только двух аргументов полученные значения возращаются в массиве.

// получение серийного номера$serial = sscanf("SN/235-0001", "SN/%3d-%4d");echo $serial[0]*10000+$serial[1]; // выводит: 2350001// и даты изготовления$date = "January 01 2000";list($month, $day, $year) = sscanf($date, "%s %d %d");echo "Дата: $year-".substr($month,0,3)."-$day\n";// выводит: 2000-Jan-01

При указании дополнительных необязательных параметров (их следует передавать по ссылке) функция возвращает их число. Те переменные, которые не получают значений, в возвращаемом значении не учитываются.

// гененируем XML записть из строки$auth = "765\tLewis Carroll";$n = sscan($auth,"%d\t%s %s", &$id, &$first, &$last);echo "<author id="$id">  <firstname>$first</firrstname>  <surname>$last</surname></author>\n";


Форматирование текста:


Методика обращения к свойствам текста следующая:

  сначала в ранее созданном документе задаем диапазон ячеек, к которым будет применено форматирование текста;

  выделяем его;

  присваиваем переменной выделенный диапазон значений;

  при помощи объекта Font() получаем доступ к форматированию выделенного фрагмента.

<?php$xls = new COM("Excel.Application"); // Создаем новый COM-объект$xls->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() возможно использовать вместе для того, чтобы найти даты в будущем или прошлом.

$tomorrow  = mktime(0,0,0,date("m")  ,date("d")+1,date("Y"));$lastmonth = mktime(0,0,0,date("m")-1,date("d"),  date("Y"));$nextyear  = mktime(0,0,0,date("m"),  date("d"),   date("Y")+1);

localtime

Получает информацию о дате/времени.

Синтаксис :

array localtime([int timestamp [, bool is_associative]]);

Первый необязательный аргумент этой функции задает метку времени 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"

  0 - "UNIX timestamp", полученный аргумент.

print_r(getdate(time()));

Приведенный пример выведет следующее:

Array(    [seconds] => 23    [minutes] => 44    [hours] => 22    [mday] => 15    [wday] => 0    [mon] => 8    [year] => 2004    [yday] => 227    [weekday] => Sunday    [month] => August    [0] => 1092595463)

gmdate

Получение даты в форматированной строке для времени 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".

setlocale("LC_TIME", "en_US");echo strftime("%b %d %Y %H:%M:%S", mktime(20,0,0,12,31,98))."\n";echo gmstrftime("%b %d %Y %H:%M:%S", mktime(20,0,0,12,31,98))."\n";

mktime

Получает временную метку UNIX для даты.



Синтаксис :

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.

echo date( "M-d-Y", mktime(0,0,0,12,32,1997) ); // правильная датаecho date( "M-d-Y", mktime(0,0,0,13,1,1997) );  // неправильная датаecho date( "M-d-Y", mktime(0,0,0,1,1,1998) );   // неправильная дата

Выводит три одинаковых числа

gmmktime

Аналог функции time() для времени GMT.

Синтаксис :

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 на <br>\n и возвращает результат. Исходная строка не изменяется. Обратите внимание на то, что символы \r, которые присутствуют в конце строки текстовых файлов Windows, этой функцией никак не учитываются, а потому остаются на старом месте.

strip_tags

Удаляет из строки теги.

Синтаксис :

string strip_tags(string str [, string allowable_tags])

Эта функция удаляет из строки все HTML- и PHP-теги и возвращает результат.

Незавершенные или фиктивные теги вызывают ошибку.

В параметре allowable_tags можно передать теги, которые не следует удалять из строки. Они должны перечисляться вплотную друг к другу.

$st="<b>Жирный текст</b><tt>Моноширный текст</tt><a href=http://spravkaweb.ru>Ссылка</a>";echo "Исходный текст: $st";echo "<hr>После удаления тегов: ".striptags($st,"<a><b>").     "<hr>";

Запустив этот пример, мы сможем заметить, что теги <a> и <b> не были удалены (ровно как и их парные закрывающие), в то время как <tt> исчез.

get_meta_tags

Функция ищет и обрабатывает все теги <META>.

Синтаксис :

array get_meta_tags(string filename, int use_include_path)

Функция открывает файл и ищет в нем все теги <META> до тех пор, пока не встретится закрывающий тег </head>.

Если очередной тег <META> имеет вид:

<meta name="название" content="содержимое">

то пара название=>содержимое добавляется в результирующий массив, который под конец и возвращается.

Спецсимволы в значении атрибута filename заменяются на знак подчеркивания "_", а алфавитные символы преобразуются в нижний регистр.

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

Если необязательный параметр use_include_path установлен, то поиск файла осуществляется не только в текщем каталоге, но и во всех тех, которые назначены для поиска инструкциями include и require.


get_html_translation_table

Функция возвращает таблицу трансляции, которая используется функциями htmlspecialchars() и htmlentities().

Синтаксис :

string get_html_translation_table(int table [, int quote_style])

В этой функции аргумент table указывает, какую таблицу трансляции необходимо получить: HTML_SPECIALCHARS для функции htmlspecialchars()

или HTML_ENTITIES для функции htmlentities(). Описание необязательного параметра quote_style приведено в функции htmlspecialchars().

$trans = get_html_translation_table(HTML_ENTITIES);$str = "<A & B>";$encoded = strtr($str, $strans);// $encoded = "&amplt; A &amp; B &gt;"

Иногда удобно использовать функцию array_flip() для изменения направления транслитерации.

$trans = array_flip($trans);$original = strtr($encoded, $trans);

htmlspecialchars

Производит преобразование спецсимволов в HTML-представление.

Синтаксис :

string HtmlSpecialChars(string str [, int quote_style]);

Основное назначение этой функции - гарантировать, что в выводимой строке ни один участок не будет воспринят как тэг.

Заменяет в строке некоторые символы (такие как амперсанд, кавычки и знаки "больше" и "меньше") на их HTML-эквиваленты,так, чтобы они выглядели на странице "самими собой". Самое типичное применение этой функции - формирование параметра value в различных элементах формы, чтобы не было никаких проблем с кавычками, или же вывод сообщения в гостевой книге, если вставлять теги пользователю запрещено. При помощи необязательного атрибута quote_style можно указать, что делать с кавычками:

  ENT_COMPAT (по умолчанию) - разрешить трансляцию только двойных кавычек

  ENT_QUOTES - разрешить трансляцию любых кавычек

  ENT_NOQUOTES - запретить трансляцию любых кавычек

$str = htmlspecialchars("<a href=index.php>Главная</a>", ENT_QUOTES);

htmlentities

Производит конвертацию символов, имеющих 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" в "<br>\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

Производит косвенный выбор функции.

Синтаксис:

mixed call_user_func(string function_name [, mixed parameter [, mixed ...]])

Функция call_user_func()

вызывает функцию function_name и передает ей все остальные параметры parameter ...

<?phpfunction myFunc($str) {  echo $str;};call_user_func("myFunc", "Hello World");?>

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<br>";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().

<?phpfunction func() {  $num_args=func_num_args();  echo "Число аргументов у этой функции: $num_args<br>";  for($i=0;$i<$num_args;$i++)    echo "$i агрумент: ".func_get_arg($i)."<br>";}; func("2",1,"tree");?>

func_get_args

Получение аргументов функции в массиве.

Синтаксис :

array func_get_args();

Функция func_get_args() возвращает в массиве список аргументов, с которым была вызвана текущая пользовательская функция. Если функция func_get_args()

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

<?phpfunction func() {  $num_args = func_num_args();  echo "Число аргументов у этой функции: $num_args<br>";  $func_list = func_get_args();  for($i=0;$i<$num_args;$i++)    echo "$i агрумент номер $i: ".$func_list[$i]."<br>";}; func("2",1,"tree");?>

func_num_args

Возвращает число полученных аргументов в пользовательской функции.

Синтаксис :

int func_num_args();

Функция func_num_args() возвращает число аргументов, которые были переданы в текущую пользовательскую функцию.

Обычно эту функцию используют совместно с функциями func_get_arg() и func_get_args()

в пользовательских функциях, которые могут принимать неопределенное количество параметров.

<?phpfunction func() {  $num_args = func_num_args();  echo "Число аргументов у этой функции: $num_args<br>";  $func_list = func_get_args();  for($i=0;$i<$num_args;$i++)    echo "$i агрумент номер $i: ".$func_list[$i]."<br>";}; func("2",1,"tree");?>


Функции для работы с именами файлов


basename

Выделяет имя файла из пути.

Синтаксис :

string basename(string $path)

Выделяет основное имя из пути $path

Примеры:

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-документ?> <table border=1 cellpadding=1 cellspacing=0><?for($y=0; $y<16; $y++) {?>  <tr>  <?for($x=0; $x<16; $x++) {?>    <td>      <?=$Chars[$x][$y][0]?>:      <b><tt><?=$Chars[$x][$y][1]?></tt></b>    </td>  <?}?>  </tr><?}?></table>

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 "<A href=ftp://user:".rawurlencode($mypasswd).      "@ftp.my.com/x.txt>"; // передача пароля в гиперссылке

rawurldecode


Производит декодирование URL.

Синтаксис :

string rawurldecode(string str);

Эта функция возвращает строку, в которой последовательности с знаком процента (%) и следующими за ним двумя шестнадцатеричных цисла преобразует в симолы, соответствующими этому коду. Аналогична urldecode(), но не воспринимает + как пробел.

$str="foo%20bar%40baz";echo rawurldecode($str);// выведет foo bar@baz

base64_encode

Кодирует данные в кодировке MIME base64.

Синтаксис :

string base64_encode(string data);

base64_encode() возвращает data закодированные в кодировке base64. Эта кодировка разработана для того, чтобы передовать двоичные данные через транспортные слои, которые не содержат восьмой бит, такие как почтовые тела. Данные в кодировке Base64 занимают примерно на 33% больше места, чем оригинал.

base64_decode

Декодирует данные, закодированные в кодировке MIME base64.

Синтаксис :

string base64_decode(string encoded_data);

base64_decode() декодирует encoded_data и возвращает оригинал данных. Возвращаемые данные могут быть двоичными.


Функции GMP


Функции этого вида позволяют работать с целыми числами повышенной точности определенного формата используя библиотеку GNU MP.

Эта библиотека не входит в стандартный пакет PHP. Загрузить коды библиотеки и документацию по ней можно на сайте http://www.swox.com/gmp/.

Функции, приведенные в этой библиотеке, могут также работать с обычными целочисленными аргументами. В этом случае они будут автоматически преобразовываться в формат GMP. Но для увеличения производительности рекомендуется все же использовать числа формата GMP.



Функции GMP. Арифметика


gmp_add

Сложение двух чисел.

Синтаксис :

recource gmp_add(resource x, recource y)

Функция возвратит GMP-число, равное сумме аргументов x и y.

gmp_sub

Вычитание двух чисел.

Синтаксис :

recource gmp_sub(resource x, recource y)

Функция возвратит GMP-число, равное разности аргументов x и y.

gmp_mul

Умножение двух чисел.

Синтаксис :

recource gmp_mul(resource x, recource y)

Функция возвратит GMP-число, равное произведению аргументов x и y.

gmp_div

Деление двух чисел.

Синтаксис :

recource gmp_div(resource x, recource y [, int round])

Функция возвратит GMP-число, равное делению аргументов x на y. В зависимости от необязательного параметра round, результат деления будет округляться следующим образом:

  GMP_ROUND_ZERO - цифры после точки отбрасываются

  GMP_ROUND_PLUSINF - результат деления округляется в большую сторону

  GMP_ROUND_MINUSINF - результат деления округляется в меньшую сторону

Эта функция - синоним gmp_div_q().

gmp_div_q

Деление двух чисел.

Синтаксис :

recource gmp_div_q(resource x, recource y [, int round])

Функция возвратит GMP-число, равное делению аргументов x на y. В зависимости от необязательного параметра round, результат деления будет округляться следующим образом:

  GMP_ROUND_ZERO - цифры после точки отбрасываются

  GMP_ROUND_PLUSINF - результат деления округляется в большую сторону

  GMP_ROUND_MINUSINF - результат деления округляется в меньшую сторону

У этой функции есть синоним - gmp_div().

gmp_div_r

Возвращате остаток от целочисленного деления.

Синтаксис :

recource gmp_div_r(resource x, recource y [, int round])

Функция возвращает остаток от деления x на y. Знак будет наследован от аргумента x.

gmp_div_qr

Производит деление с остатком.

Синтаксис :

array gmp_div_qr(resource x, recource y [, int round])

Данная функция комбинирует в себе действие двух предыдущих функций gmp_div_q() и gmp_div_r(). Она возвращает массив, состоящий из двух элементов: под индексом [0] - целое частное, под индексом [1] - остаток деления.

$x=gmp_init("0xf3c3b5");$result=gmp_div_qr($x, "0xb1");echo "Целое: ".gmp[strval($result[0]);echo "Остаток: ".gmp[strval($result[1]);

gmp_mod

Возвращает модуль остатка деления.

Синтаксис :

resource gmp_mod(resource x, recource y)

Данная функция эквивалентна gmp_div_r(), за исключением того, что она возвращает абсолютное значение.

gmp_divexact

Производит безостаточное деление.

Синтаксис :

resource gmp_divexact(resource x, recource y)

Данная функция использует алгоритм "точного" деления. Результат будет достоверным, только если x будет нацело делим y.

gmp_cmp

Производит сравнение двух чисел.

Синтаксис :

int gmp_cmp(resource x, recource y)

Функция возвратит положительное значение, если x > y; ноль, елси x = y; отрицательное значени, если x < y.



Функции GMP. Бинарные операции


gmp_and

Логическое И (AND).

Синтаксис :

resource gmp_and(resource x, resource y)

gmp_or

Логическое ИЛИ (OR).

Синтаксис :

resource gmp_or(resource x, resource y)

gmp_xor

Логическое исключающее-ИЛИ (XOR).

Синтаксис :

resource gmp_xor(resource x, resource y)

gmp_setbin

Установка бита.

Синтаксис :

resource gmp_setbin(resource &x, int index [, bool set_clear])

Устанавливает бит в позиции index в числе x. Аргумент set_clear указывает, в какое значение устанавливать бит: 0 или 1 (по умолчанию).

gmp_clrbit

Производит сброс бита.

Синтаксис :

resource gmp_clrbit(resource &x, int index)

Устанавливает бит в позиции index в числе x в значение 0.

gmp_scan0

Производит поиск бита 0.

Синтаксис :

0int gmp_scan0(resource x, int start)

Функция gmp_scan0() ищет в числе x бит 0, начиная с позиции start, в сторону увеличения значимости разрядов. Возвращает позицию найденного бита.

gmp_scan1

Производит поиск бита 1.

Синтаксис :

1int gmp_scan1(resource x, int start)

Функция gmp_scan0() ищет в числе x бит 1, начиная с позиции start, в сторону увеличения значимости разрядов. Возвращает позицию найденного бита.

Работа с массивами



Функции GMP. Математика


gmp_fact

Вычисляет факториал.

Синтаксис :

resource gmp_fact(resourse x)

Возвращает факториал числа, заданного в параметре x.

gmp_sqrt

Вычисляет квадратный корень.

Синтаксис :

resource gmp_sqrt(resourse x)

Возвращает квадратный корень числа, заданного в параметре x.

gmp_sqrtrm

Вычисляет квадратный корень с остатком.

Синтаксис :

array gmp_sqrtrm(resourse x)

Данная функция возвращает массив, в котором элемент с индексом [0] - это квадратный корень аргумента, элемент с индексом [1] - разность между аргументом и элементом [0] в квадрате.

gmp_perfect_square

Определяет, является ли число полным квадратом.

Синтаксис :

bool gmp_perfect_square(resourse x)

Функция gmp_perfect_square() возвратит true, если x является квадратом целого числа. В противном случае вернет false.

gmp_pow

Возведение в степень.

Синтаксис :

resource gmp_pow(resourse x, int y)

Эта функция возвращает результат, равный возведения аргумента x в степень y, при условии, что y не отрицательный.

echo gmp_pow(2,3); // Выведет 8echo gmp_pow(0,0); // Выведет 1

gmp_powm

Возвращает остаток деления степени числа.

Синтаксис :

resource gmp_powm(resourse x, resource y, resource mod)

Возвращает остаток от деления (x в степени y) на mod, в случае, если y положетелен.

gmp_prob_prime

Проверка "вероятно" простого числа.

Синтаксис :

int gmp_prob_prime(resourse x [, int reps])

Эта функция возвратит 0, в случае если x сложное число, т.е. имеющее более двух целых делителей. Возвратит 1, если x, возможно, простое число. Если возвращает 2, то тогда x - наверняка простое число.

Аргумент reps определяет качество проверки. Чем большее это число, тем точнее результат. Может принимать занчения от 5 до 10 (по умолчанию).

Эта функция использует алгоритм вероятностного теста Миллера-Рабина.

gmp_gcd

Находит наибольший общий делитель.

Синтаксис :

resource gmp_gcd(resourse x, resource y)

Всегда возвращает положительный результат.


gmp_gcdext

Нахождение наибольшего общего делителя со множителями.

Синтаксис :

array gmp_gcdext(resourse x, resource y)

Функция gmp_gcdext() возвращает массив со значениями g,s,t, такими, что x*s+y*t=g=НОД(x,y), гдн НОД - наибольший общий делитель.

gmp_invert

Производит инверсию по модулю.

Синтаксис :

resource gmp_invert(resourse x, resource y)

Функция возвращает дополнение x до значения, делящегося нацело на y.Вслучае, если результат не может быть найден, возвращает false.

gmp_legendre

Возвращает число Легранжа.

Синтаксис :

int gmp_legendre(resourse x, resource p)

Функция возвращает число Легранжа. p должен быть четным положительным.

gmp_jacobi

Возвращает число Якоби.

Синтаксис :

int gmp_jacobi(resourse x, resource p)

Функция возвращает число Якоби. p должен быть четным положительным.

gmp_random

Производит генерацию случайного числа.

Синтаксис :

resource gmp_random(int limited)

limited задает длину генерируемого числа. В случае, если значение limited отрицательно, генерируется отрицательное число.

gmp_popcount

Получение популяции.

Синтаксис :

int gmp_popcount(resource x)

Функция возвращает числитель популяции.

gmp_hamdist

Вычисление дистанции.

Синтаксис :

int gmp_hamdist(resource x, resource y)

Функция возвращает дистанцию между числами x и y. Аргументы x и y должны быть неотрицательными.


Функции GMP. Значения функции GMP


gmp_init

Создает число GMP.

Синтаксис :

resource gmp_init(mixed number)

Число GMP создается из целочисленного или строкового аргумента.

В строке может быть указано число десятеричного или шестнадцатеричного формата. Если это шестнадцатеричный формат, то перед числом должен стоять префикс 0x.

$x = gmp_init(45);$y = gmp_init("46");$z = gmp_init("0xfa4b");

Данная функция не обязательна (аргументы автоматически конвертируются в формат GMP), но желательна (при использовании функции gmp_init() повышается быстродействие).

gmp_intval

Преобразование GMP-числа в целое.

Синтаксис :

int gmp_intval(resource gmpnumber)

Эта функция конвертирует GMP-число в целое в том случае, если получаемое число не превышает своего максимально допустимого размера.

gmp_strval

Преобразование GMP-числа в строку.

Синтаксис :

string gmp_strval(resource gmpnumber [, int base])

Функция возвращает число gmpnumber в строковом формате в системе счисления, заданной в необязательном параметре base. По умолчанию возвращает в десятичной системе счисления).

Параметр base может принимать значения от 2 до 36.

$x = gmp_init("0xf1a5");echo "В десятичной : ".gmp_strval($x);echo "В base-36: ".gmp_strval($x,36);

gmp_abs

Вычисляет модуль GMP-числа.

Синтаксис :

resource gmp_abs(resourse x)

Возвращает абсолютное значение числа, заданного в параметре x.

gmp_sign

Возвращает знак числа.

Синтаксис :

int gmp_sign(resource x)

Функция gmp_sign() возвратит 1, если x - положительное число, и 0 - если отрицателоное.

gmp_neg

Возвращает отрицательное значение числа.

Синтаксис :

recource gmp_neg(resource x)

Возвратит -x.



Функции IMAP


Для того, чтобы эти функции заработали вы должны скомпилировать PHP с флагом --with-imap.

Этот флаг требут,чтобы была установлена библиотека c-client. Последнюю версию можно получить по адресу ftp://ftp.cac.washington.edu/imap/.

Затем скопируйте c-client/c-client.a в /usr/local/lib или какую либо другую директорию, прописанную в пути, затемскопируйте c-client/rfc822.h, mail.h и linkage.h в /usr/local/include или другую директорию с include-файлами.

Не смотря на имя модуля, имеющиеся в нем функции позволяют выполнять также много других полезных операций, выходящих за рамки простого использования протокола IMAP. Лежащая в основе библиотека C-клиента также поддерживает NNTP, POP3 и методы доступа к локальным почтовым ящикам.

imap_append

Добавляет текстовое сообщение в указанный почтовый ящик.

Синтаксис :

int imap_append(int imap_stream, string mbox, string message, stringflags);

Возвращает true в случае успеха или false иначе.

imap_append() добавляет текстовое сообщение в указанный почтовый ящик mbox. Если указаны необязательные флаги, также записывает в почтовый ящик и флаги. При общении с сервером Cyrus IMAP нужно использовать в качестве ограничителей строки "\r\n" вместо "\n",иначе действие не выполнится.

imap_base64

Декодирует текст, закодированный с помощью BASE64.

Синтаксис :

string imap_base64(string text);

Функция imap_base64() декодирует текст в формате BASE-64. Декодированное сообщение возвращается как строка.

imap_body

Читает тело сообщения.

Синтаксис :

string imap_body(int imap_stream, int msg_number, int flags);

Функция imap_body() возвращает тело сообщения, имеющего номер п/п msg_number в текущем почтовом ящике.

Необязательные флаги это битовые маски из

FT_UID - Номер сообщения msgno является UID-ом сообщения

FT_PEEK - Не устанавливать флаг \Seen если он еще не установлен.

FT_INTERNAL - Возвращаемая строка записана во внутреннем формате и не может быть приведена к канонической форме с CRLF.


imap_check

Проверяет текущий почтовый ящик.

Синтаксис :

array imap_check(int imap_stream);

Возвращает информацию о текущем почтовом ящике. В случае неуспеха возвращает FALSE.

Функция imap_check() проверяет статус текущего почтового ящика на сервере и возвращает информацию в объекте со следующими свойствами :

Date : дата сообщения

Driver : драйвер

Mailbox : название почтового ящика

Nmsgs : количество сообщений

Recent : количество недавно пришедших сообщений

imap_close

Закрывает поток IMAP.

Синтаксис :

int imap_close(int imap_stream, int flags);

Закрывает поток imap. Необязательный флаг CL_EXPUNGE заставляет стереть помеченные на удаление сообщенияпри закрытии.

imap_createmailbox

Создает новый почтовый ящик.

Синтаксис :

int imap_createmailbox(int imap_stream, string mbox);

imap_createmailbox() создает новый почтовый ящик указанный в mbox.Возвращает true в случае успеха и false при ошибке.

imap_delete

Помечает сообщение из текущего почтового ящика на удаление.

Синтаксис :

int imap_delete(int imap_stream, int msg_number);

Возвращает true.

Возвращает true.Функция imap_delete() помечает сообщение, указанное через msg_number на удаление. Настоящее удаление сообщенийосуществляется функцией imap_expunge().

imap_deletemailbox

Удаляет почтовый ящик.

Синтаксис :

int imap_deletemailbox(int imap_stream, string mbox);

Возвращает true в случае успеха и false иначе.

imap_expunge

Удаляет все сообщения, помеченные на удаление.

Синтаксис :

int imap_expunge(int imap_stream);

imap_expunge() удаляет все сообщения помеченные на удаление с помощью imap_delete().

Возвращает true.

imap_fetchbody

Извлекает простую секцию тела сообщения.

Синтаксис :

string imap_fetchbody(int imap_stream, int msg_number, int part_number, flags flags);

Эта функция заставляет извлечь подробную секцию указанного сообщения как текстовую строку.Секция это строка целых чисел, разделенных точками, которые указывают на части тела сообщения в списке частей согласно спецификации IMAP4. Части тела не декодируются этой функцией.



Необязательным параметром к imap_fetchbody () является битовая маска из

FT_UID - msgono является

UID-ом FT_PEEK - не устанавливать флаг \Seen если он не установлен

FT_UID - возвращаемая строка записана во внутреннем формате, которое не может быть канонизированна с помощью CRLF

imap_fetchstructure

Читает структуру простого сообщения.

Синтаксис :

array imap_fetchstructure(int imap_stream, int msg_number);

array imap_fetchstructure(int imap_stream, int msg_number);Эта функция заставляет извлечь всю информацию о структуре сообщения с номером msg_number. Возвращаемая величинаявляется объектом со следующими элементами :

type, encoding, ifsubtype, subtype, ifdescription, description, ifid, id, lines, bytes, ifparameters тип, кодировка, подтип интерфейса, подтип, описание интерфейса, описание, идентификатор интерфейса, строки, байты, параметры интерфейса

Также функция возвращает массив объектов под названием parameters[]. Этот объект имеет следующиесвойства :

attribute, value

атрибут, величина

В случае сообщения из нескольих частей, функция также возвращает массив объектов всех свойств под название parts[].

imap_header

Читает заголовок сообщения.

 

Синтаксис :

object imap_header(int imap_stream, int msg_number, int fromlength, int subjectlength, int defaulthost);

Эта функция возвращает объект различных элементов заголовка

remail,date,Date,subject,Subject,in_reply_to,message_id,newsgroups, followup_to,references

toaddress (полная строка To: строка длиной до 1024 символов)

to[] (возвращает массив объектов из строки To, содержит:)

personal

adl

mailbox

host

fromaddress (полная строка From: строка длиной до 1024 символов)

from[] (возвращает массив объектов из строки From, содержит:)

personal

adl

mailbox

host

ccaddress (полная строка Cc: строка длиной до 1024 символов)

cc[] (возвращает массив объектов из строки Cc, содержит)

personal

adl

mailbox

host

bccaddress (полная строка Bcc: строка длиной до 1024 символов)

bcc[] (возвращает массив объектов из строки Bcc, содержит:)



personal

adl

mailbox

host

reply_toaddress ( полная строка Reply_to: строка длиной до 1024 символов)

reply_to[] (возвращает массив объектов из строки Reply_to, содержит:)

personal

adl

mailbox

host

senderaddress (полная строка Sender: строка длиной до 1024 символов)

sender[] (возвращает массив объектов из строки Sender, содержит:)

personal

adl

mailbox

host

return_path (полная строка Return-path: строка длиной до 1024 символов)

return_path[] (возвращает массив объектов из строки Return_path, содержит:)

personal

adl

mailbox

host

udate ( дата сообщения в формате времени unix)

fetchfrom (строка From, отформатированная до fromlength символов)

fetchsubject (строка Subject, отформатированная до subjectlength символов)

imap_headers

Возвращает заголовки всех сообщений в почтовом ящике.

Синтаксис :

array imap_headers(int imap_stream);

Возвращает строковый массив из информации по заголокам. Один элемент массива на сообщение.

imap_listmailbox

Читает список почтовых ящиков.

Синтаксис :

array imap_listmailbox(int imap_stream, string ref, string pat);

Возвращает массив, содержащий названия почтовых ящиков.

imap_listsubscribed

Перечисляет все подписанные ящики.

Синтаксис :

array imap_listsubscribed(int imap_stream, string ref, string pattern);

Возвращает массив всех почтовых ящиков на которые Вы подписаны. Аргументы ref и pattern указывают начальноеместорасположение откуда начинать поиск и шаблон, которому должны удовлетворять названия почтовых ящиков.

imap_mail_copy

Копирует указанные сообщения в почтовый ящик.

Синтаксис :

int imap_mail_copy(int imap_stream, string msglist, string mbox, int flags);

Возвращает true в случае успеха и false иначе.

Копирует почтовые сообщения указанные с помощью msglist в почтовый ящик mbox. msglist - это диапазон, а не простономера сообщений.

Флаги - это битовые маски из

CP_UID - номера в последовательности содержат

UID-ы CP_MOVE - после копирования удалить сообщения из текущего почтового ящика



imap_mail_move

Переносит указанные сообщения в почтовый ящик.

Синтаксис :

int imap_mail_move( int imap_stream, string msglist, string mbox);

Переносит почтовые сообщения указанные с помощью msglist в почтовый ящик mbox. msglist - это диапазон, а не простономера сообщений.

Возвращает true в случае успеха и false иначе.

imap_num_msg

Выдает количество сообщений в текущем почтовом ящике.

Синтаксис :

int imap_num_msg(void);

Возвращает количество сообщений в текущем почтовом ящике.

imap_num_recent

Возвращает количество недавно пришедших сообщений в текущем почтовом ящике.

Синтаксис :

int imap_num_recent(int imap_stream);

imap_open

Подключение к серверу (открытие почтового ящика).

Синтаксис :

int imap_open(string mailbox, string username, string password [, int flags]);

Функция imap_open() возвращает дескриптор почтового ящика IMAP (дескриптор подключения к серверу IMAP) или false при ошибке.

Эта функция может быть использована для открытия потоков к POP3 и NNTP серверам, но в этом случае некоторые функции будут недоступны.

Аргумент mailbox - задает имя сервера и путь к почтовому ящику. Имя сервера следует заключать в фигурные скобки "{" и "}", внутри которых должно содержаться: имя сервера (или его IP-адрес), возможно указание протокола (который начинается со слеша "/") и номера порта Для того, чтобы присоединиться к серверу IMAP на 143-й порт на локальной машине сделайте следующее:

$mbox = imap_open("{localhost:143}INBOX","user_id","password");

Для того, чтобы подсоединиться к POP3-серверу на 110-й порт на локальном сервере используйте:

$mbox = imap_open("{localhost/pop3:110}INBOX","user_id","password");

Для того, чтобы подсоединиться к NNTP-серверу на 119-й порт на локальном сервере используйте:

$nntp = imap_open("{localhost/nntp:119}comp.test","","");

Для того, чтобы подсоединиться к удаленному серверу замените "localhost" на имя или IP-адрес сервера к которомуВы хотите подсоединиться.



Опции - битовая маска из

OP_READONLY - Открыть почтовый ящик в режим "только чтение"

OP_ANONYMOUS - Не использовать или не обновлять .newsrc при использовании новостей

OP_HALFOPEN - Для IMAP и NNTP устанавливает соединение, но не открывает почтовый ящик

CL_EXPUNGE - Автоматически очищать почтовый ящик при закрытии

imap_ping

Проверяет поток IMAP на работоспособность.

Синтаксис :

int imap_ping(int imap_stream);

Возвращает true если поток еще работоспособен и false иначе.

Функция imap_ping() проверяет поток на работоспособность. Он может также проверять новую почту; это предпочтительный метод для периодической проверки новой почты и "живучести" удаленных серверов.

imap_renamemailbox

Переименовывает старый почтовый ящик в новый.

Синтаксис :

int imap_renamemailbox(int imap_stream, string old_mbox, string new_mbox);

Эта функция переименовывает старый почтовый ящик в новый.

Возвращает true в случае успеха и false иначе.

imap_reopen

Заново открывает поток IMAP на новый почтовый ящик.

Синтаксис :

int imap_reopen(string imap_stream, string mailbox, string [flags]);

Возвращает true в случае успеха и false иначе.

Эта функция заново открывает указанный поток на новый ящик.

Опции - битовая маска из

OP_READONLY - Открыть почтовый ящик в режиме только чтение

OP_ANONYMOUS - Не использовать или не обновлять .newsrc при работе с новостями

OP_HALFOPEN - Для IMAP и NNTP устанавливает связь но не открывает почтовый ящик

CL_EXPUNGE - Очищает почтовый ящик при закрытии

imap_subscribe

Подписывает на почтовый ящик.

Синтаксис :

int imap_subscribe(int imap_stream, string mbox);

Возвращает true в случае успеха и false иначе.

imap_undelete

Снимает отметку с сообщения помеченного на удаление.

Синтаксис :

int imap_undelete(int imap_stream, int msg_number);

Эта функция cнимает отметку с сообщения помеченного на удаление функцией imap_delete().

Возвращает true в случае успеха и false иначе.



imap_unsubscribe

Снимает подписку с почтового ящика.

Синтаксис :

int imap_unsubscribe(int imap_stream, string mbox);

Возвращает true в случае успеха и false иначе.

imap_qprint

Конвертирует строку формата quoted-printable в 8-битовую строку.

Синтаксис :

string imap_qprint(string string);

Возвращает 8-битовую (бинарную) строку.

imap_8bit

Конвертирует 8-битовую строку в формат quoted-printable.

Синтаксис :

string imap_8bit(string string);

Возвращает строку в формате quoted-printable.

imap_binary

Конвертирует 8-битную строку в формат base64.

Синтаксис :

string imap_binary(string string);

Возвращает строку в формате base64.

imap_scanmailbox

Читает список почтовых ящиков, проводит поиск в названиях ящиков.

Синтаксис :

array imap_scanmailbox(int imap_stream, string string);

Возвращает массив, содержащий имена почтовых ящиков, которые имеют строку string в названии.

imap_mailboxmsginfo

Получает информацию о текущем почтовом ящике.

Синтаксис :

array imap_mailboxmsginfo(int imap_stream);

Возвращает информацию о текущем почтовом ящике. FALSE в случае неудачи.

Функция imap_mailboxmsginfo() проверяет статус текущего почтового ящика на сервере и возвращает информацию в объекте со следующими свойствами:

Date : дата сообщения

Driver : драйвер

Mailbox : название почтового ящика

Nmsgs : количество сообщений

Recent : количество недавно пришедших сообщений

Unread : количество непрочитанных сообщений

Size : размер почтового ящика

imap_rfc822_write_address

Возвращает правильно отформатированный email адрес.

Синтаксис :

string imap_rfc822_write_address(string mailbox, string host, string personal);

Возвращает правильно отформатированный email адрес по данному почтовому ящику, хосту и персональной информации.

imap_rfc822_parse_adrlist

Проводит разбор адресной строки.

Синтаксис :

string imap_rfc822_parse_adrlist(string address, string default_host);

Эта функция разбирает адресную строку и для каждого адреса возвращает массив объектов.



Есть 4 типа объектов:

mailbox - название почтового ящика (имя пользователя)

host - название хоста

personal - личное имя

adl - путь к домену-источнику

imap_setflag_full

Устанавливает флаги на сообщения.

Синтаксис :

string imap_setflag_full( int stream, string sequence, string flag, string options);

Эта функция застваляет добавить указанный флаг к набору флагов сообщения в указанной последовательности.

options - это битовая маска из ST_UID

Аргументы последовательности содержат UIDы вместо номеров

imap_clearflag_full

Очищает флаги сообщения.

Синтаксис :

string imap_clearflag_full(int stream, string sequence, string flag, string options);

Эта функция заставляет удалить флаги из набора флагов сообщения в указанной последовательности.

options - это битовая маска из ST_UID

Аргументы последовательности содержат UIDы вместо номеров

imap_sort

Сортирует сообщения в текущем почтовом ящике.

Синтаксис :

string imap_sort(int stream, int criteria, int reverse, int options);

Возвращает массив номеров сообщений рассортированных по данному параметру

Rev должен быть равен 1 если нужна сортировка в обратном порядке

Критерии сортировки (должен быть указан только один): SORTDATE - по дате сообщения

SORTARRIVAL - по дате поступления

SORTFROM - по полю From

SORTSUBJECT - по теме сообщения

SORTTO - по полю To

SORTCC - по полю cc

SORTSIZE - по размеру

опции - битовая маска из

SE_UID - Возвратить UIDы вместо номеров последовательности

SE_NOPREFETCH - Не извелекать заранее найденные сообщения

imap_fetchheader

Возвращает заголовок сообщения.

Синтаксис :

string imap_fetchheader(int imap_stream, int msgno, int flags);

Эта функция заставляет извлечь полный, неотфильтрованный заголовок указанного сообщения в формате RFC 822 как текстовую строку.

Опиции:

FT_UID msgno является UID-ом

FT_INTERNAL Возвращаемая строка записана во внутреннем формате без каких-либо попыток канонизировать ее с помощью CRLF

FT_PREFETCHTEXT RFC822. Текст должен быть предварительно разобран. Это поможет избежать эстренных задержек если требуется извлечь полный текст сообщения (например, в операции "сохранить в локальном файле")

imap_uid

Эта функция возвращает UID по данному номеру сообщения в последовательности.

Синтаксис :

string imap_uid(string mailbox, int msgno);


Функции изменения регистра


strtolower

Производит преобразование символов строки в нижний регистр.

Синтаксис :

string strtolower(string str);

Преобразует строку в нижний регистр. Возвращает результат перевода.

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

$str = "HeLLo World";$str = strtolower($str);echo $str;// выведет hello world

strtoupper

Производит преобразование заданной строки в верхний регистр.

Синтаксис :

string strtoupper(string str);

Переводит строку в верхний регистр. Возвращает результат преобразования. Эта функция хорошо работает с английскими буквами, но с русскими может чудить.

$str = "Hello World";$str = strtoupper($str);echo $str;// выведет HELLO WORLD

ucfirst

Производит преобразование первого символа строки в верхний регистр.

Синтаксис :

string ucfirst(string str);

Возвращает строку, у которой первый символ заглавный.

Символы кириллицы могут быть неправильно конвертированы.

$str = "hello world";$str = ucfirst($str);echo $str;// выведет Hello world

ucwords

Производит преобразование первого символа каждого слова строки в верхний регистр.

Синтаксис :

string ucwords(string str);

Возвращает строку, у которой первый символ каждого слова в строке заглавный.

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

Символы кириллицы могут быть неправильно конвертированы.

$str = "hello world";$str = ucfirst($str);echo $str;// выведет Hello World



Функции манипулирования целыми файлами


copy

Копирует файл.

Синтаксис :

bool copy(string $src, string $dst)

Копирует файл с именем $src в файл с именем $dst. При этом, если файл $dst на момент вызова существовал, осуществляется его перезапись.

Функция возвращает true, если копирование прошло успешно, а в случае провала - false.

Функция не выполняет переименования файла, если его новое имя расположено в другой файловой системе (на другой смонтированной системе в Unix или на другом диске в Windows).

unlink

Удаление файла.

Синтаксис :

bool unlink(string $filename)

Удаляет файл с именем $filename. В случае неудачи возвращает false, иначе - true.

Надо заметить, что файл удаляется только в том случае, если число "жестких" ссылок на него стало равным 0. Правда, эта схема специфична для Unix-систем.

file

Считывает файл и разбивает его по строкам.

Синтаксис :

list file(string $filename)

Считывает файл с именем $filename целиком и возвращает массив-список, каждый элемент которого соответствует строке в прочитанном файле.

Неудобство этой функции состоит в том, что символы конца строки (обычно \n), не вырезаются из строк файла, а также не транслируются, как это делается для текстовых файлов.



Функции обработки ошибок


 

error_log

Посылка сообщения об ошибке.

Синтаксис :

int error_log(string message, int message_type [, string destination [, string extra_headers]])

Сообщение, посылаемое этой функцией, может быть направлено в журнал системных сообщений web-сервера, прот TCP или в файл.

В первом аргументе message указывается само содержание сообщения. Во втором аргументе message_type - куда оно должно быть направлено.

Назначение обозначается следующими значениями:

  0 - Сообщение заносится в системный журнал событий (файл) согласно установке параметра конфигурации error_log.

  1 - Сообщение отправляется по электронной почте, по адресу, указанному в аргументе destination. Это единственный тип сообщения, использующий четвертый параметр extra_headers, в котором можно указать дополнительные заголовки (как в функции mail()).

  2 - Сообщение посылается через подключение отладки. Это возможно только в случае, если параметр удаленной отладки был разрешен в файле конфигурации. Для этого также должен быть определен адрес хоста (имя или его IP адрес) и порт сокета, который будет принимать сообщения отладки. Это можно указать в аргументе destination

или параметрах конфигурации.

  3 - message

добавляется в конец файла destination.

if(!Ora_London($username, $password)) {  error_log("Сервер Oracle недоступен!", 0);}; if(!($foo = allocate_new_foo()) {  error_log("Нельзя выделить FOO!", 1, "operator@mydomain.ru");} // other ways of calling error_log():error_log("У нас ошибка!", 2, "127.0.0.1:7000");error_log("У нас ошибка!", 2, "localhost");error_log("У нас ошибка!", 3, "/var/tmp/my-errors.log");

 

 

 

error_reporting

Установка видов сообщаемых ошибок.

Синтаксис :

int error_reporting([int level])

Функция error_reporting() возвращает предыдущую установку типа сообщаемых ошибок. Если указан аргумент, то заново переопределяет ее. В аргументе можно указывать константу, число или битовую маску. Старайтесь использовать константы вместо численных значений, чтобы сохранить совместимость с будущими версиями PHP.

error_reporting(2039); // в PHP эквивалент E_ALL ^ E_NOTICEerror_reporting(E_ALL ^ E_NOTICE); // установка по умолчаниюerror_reporting(0); // отключить сообщения об ошибках// общие ошибки выполненияerror_reporting(E_ERROR | E_WARNING | E_PARSE);// также сообщать о неизвестных переменныхerror_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);error_reporting(E_ALL); // сообщать все ошибки


restore_error_handler

Восстановление предыдущего обработчика ошибок.

Синтаксис :

void restore_error_handler()

Эта функция устанавливает в качестве функции обработчика ошибок ту, которая была таковой до последнего вызова функции set_error_handler(). Предыдущим обработчиком может быть ранее установленный пользовательский обработчик или встроенный обработчик PHP.

trigger_error

Генерация ошибки.

Синтаксис :

void trigger_error(string error_msg [, int error_type])

Явно вызывает функцию, установленную для обработки ошибок, и обычно используется в паре с обработчиком ошибок. Функция способна генерировать только пользовательские типы ошибок ( семейство констант E_USER), и по умолчанию, если не указан тип ошибки error_type, он считается E_USER_NOTICE.

Возможно конструировать сложные конструкции генерации и обработки ошибок и исключительных ситуаций.

if(assert($divisor == 0))  trigger_error ("Нельзя делить на 0 ", E_USER_ERROR);

user_error

Синоним функции trigger_error().

Синтаксис :

void user_error(string error_msg [, int error_type])


Функции округления


abs

Возвращает модуль числа.

Синтаксис :

mixed abs(mixed $number)

Тип параметра $number может быть float или int, а ти п возвращаемого значения всегда совпадает с типом этого параметра.

$x = abs(-4);    // $x=4$x = abs(-7.45); // $x=7.45

round

Округление дробного числа до целого.

Синтаксис :

double round(double $val)

Округляет $val до ближайшего целого и возвращает результат.

$foo = round(3.4); // $foo == 3.0$foo = round(3.5); // $foo == 4.0$foo = round(3.6); // $foo == 4.0$x = round(5.3);  // $x=5$x = round(5.4);  // $x=5$x = round(5.45); // $x=5$x = round(5.5);  // $x=6

ceil

Дополнение дробного числа до следующего целого.

Синтаксис :

int ceil(float $number)

Возвращает наименьшее целое число, не меньше $number. Разумеется, передавать в $number целое число бессмысленно.

$x = ceil(5.0);  // $x=5$x = ceil(5.1);  // $x=6$x = ceil(5.9);  // $x=6

floor

Удаление дробной части числа.

Синтаксис :

int floor(float $number)

Возвращает максимальное целое число, не превосходящее $number.

$x = floor(5.1);  // $x=5$x = floor(5.9);  // $x=5

 



Функции отрезания пробелов


trim

Удаляет из заданной строки начальные и конечные пробельные символы.

Синтаксис :

string trim(string str)

Возвращает копию str, только с удаленными ведущими и концевыми пробельными символами. Под пробельными символами надо понимать "\n", "\r", "\t", "\v", "\0" и пробел.

Например, вызов trim(" test\n ") вернет строку "test".

ltrim

Удаляет из заданной строки начальные пробельные символы.

Синтаксис :

string ltrim(string str)

То же, что и trim(), только удаляет исключительно начальные пробельные символы ("\n", "\r", "\t", "\v", "\0" и пробел), а концевые не трогает.

rtrim

Удаляет из заданной строки конечные пробельные символы.

Синтаксис :

string rtrim(string str)

То же, что и trim(), только удаляет исключительно конечные пробельные символы ("\n", "\r", "\t", "\v", "\0" и пробел), а начальные не трогает.

Эта функция - синоним chop().

chop

Удаляет из заданной строки конечные пробельные символы.

Синтаксис :

string chop(string str)

Удаляет только концевые пробелы, начальные не трогает.



Функции переменных


gettype

Получает тип переменной.

Синтаксис :

string gettype(mixed var);

Возвращает тип переменной PHP var.

Возможные значения для возвращаемой строки:

"integer"

"double"

"string"

"array"

"object"

"unknown type"

intval

Возвращает целочисленное значение переменной.

Синтаксис :

int intval(mixed var, int [base]);

Возвращает целочисленное значение переменной var, используя указанное основание для перевода (по умолчанию 10). var может быть скалярного типа. Вы не можете использовать функцию intval() для массивов или объектов.

doubleval

Получает значение переменной в формате double.

Синтаксис :

double doubleval(mixed var);

Возвращает double (с плавающей точкой) значение переменной var.

var может быть скалярного типа. Вы не можете использовать doubleval() на массивах и объектах.

empty

Определяет, есть ли у переменной какое либо значение.

Синтаксис :

int empty(mixed var);

Возвращает false, если var существует и имеет не пустое или не нулевое значение; true в обратном случае.

Фактически функция проверяет, имеет ли переменнная значение, которое может быть приравнено к 0, то есть: (var==0)

$var=0;if(empty($var)) {  echo "$var - либо 0, либо не имеет значения";  if(!isset($var)) {    echo "$var не имеет значения";  };};

Заметьте, что эту функцию бесполезно использовать с аргументом, отличным от переменной, например выражение empty (Addslashes($name)) бессмысленно, т.к. здесь проверяется значение, возвращаемое функцией. Единственное, что может выявить в данном варианте функция empty(), это имеет ли выражение значение, эквивалентное true (не равное нулю), а это может быть проверено и без использования функции.

isset

Определяет, существует ли переменная.

Синтаксис :

int isset(mixed var);

Возвращает true, если var существует; false в обратном случае.

Фактически функция проверяет, имеет ли переменная значение, идентичное null, то есть: (var===null). Отметьте различие между равенством и идентичностью.


Если переменная была удалена функцией unset(), она больше не будет определяться функцией isset().

$a = "test";echo isset($a); // trueunset($a);echo isset($a); // false

settype

Устанавливает тип переменной.

Синтаксис :

int settype(string var, string type);

Устанавливает тип переменнойvar на type.

Возможные значения type :

"integer"

"double""

"string"

"array""

"object"

Возвращает true, при успехе; false в обратном случае.

strval

Получает строковое значение переменной.

Синтаксис :

string strval(mixed var);

Получает строковое значение var.

var может быть любого скалярного типа. Вы не можете использовать strval() на массивах или объектах.

unset

Удаляет указанную переменную.

Синтаксис :

int unset(mixed var);

unset() уничтожает указанную переменную и возвращает true.

Пример

:

unset( $foo );

unset( $bar["quux"] );


Функции SNMP


 

snmpget

Получает объект SNMP.

Синтаксис :

int snmpget(string hostname, string community, string object_id);

Возвращает значание SNMP объекта при успехе и false при ошибке.

Функция snmpget() используется для чтения значения SNMP объекта, указанного в object_id.

SNMP агент определяется именем хоста hostname и группа чтения определяется параметром community.

snmpget("127.0.0.1", "public", "system.SysContact.0")

snmpwalk

Получает все SNMP объекты у агента.

Синтаксис :

array snmpwalk(string hostname, string community, string object_id);

Возвращает массив значений SNMP объектов начиная с object_id и false при ошибке.

Функция snmpwalk() используется для чтения всех значений у SNMP агента, определяемого параметром hostname.

Community определяет группу чтения для агента.

Нулевой object_id берется как корень дерева SNMP объектов и все объекты под этим деревом возвращаются как массив.

Если object_id указан, то возвращаются все SNMP объекты ниже этого объекта.

$a = snmpwalk("127.0.0.1", "public", "");

Указанный выше вызов функции вернет все SNMP объекты из SNMP агента, напущенного на локальном хосте.

По всем значениям можно пройти с помощью цикла :

for($i=0; $i<count($a); $i++) {    echo $a[$i];}



Функции сравнения


strcmp

Сравнивает строки.

Синтаксис :

int strcmp(string str1, string str2)

Эта функция сравнивает две строки посимвольно (точнее, бобайтово) и возвращает:

0 - если строки полностью совпадают;

-1 - если строка str1 лексикографически меньше str2;

1 - если, наоборот, str1 "больше" str2.

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

strncmp

Сравнивает начала строк.

Синтаксис :

int strncmp(string str1, string str2, int len)

Эта функция отличается от strcmp() тем, что сравнивает не все слово целиком, а первые len байтов. В случае, если len меньше длины наименьшей из строк, то строки сравниваются целиком.

Эта функция сравнивает две строки посимвольно (точнее, бобайтово) и возвращает:

0 - если строки полностью совпадают;

-1 - если строка str1 лексикографически меньше str2;

1 - если, наоборот, str1 "больше" str2.

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

strcasecmp

Сравнивает строки без учета регистра.

Синтаксис :

int strcasecmp(string str1, string str2)

То же самое, что и strcmp(), только при работе не учитывается регистр букв.

$str1 = "Привет!";$str2 = "привет!";if(!strcesecmp($str1, $str2))  echo "$str1 == $str2 при сравнении строк без учета регистра";

strncasecmp

Сравнивает начала строк без учета регистра.

Синтаксис :

int strncasecmp(string str1, string str2, int len)

Функция strncasecmp() является комбинацией функций strcasecmp() и strncmp().

strnatcmp

Производит "естественное" сравнение строк.

Синтаксис :

int strnatcmp(string str1, string str2)

Данная функция имитирует сравнение строк, которое использовал бы человек.

$arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");echo "Обычная сортировка\n";usort($arr1, "strcmp");print_r($arr1);echo "\nЕстенственная сортировка\n";usort($arr2, "strnatcmp");print_r($arr2);


Данный скприпт выведет следующее:

Обычная сортировкаArray(    [0] => img1.png    [1] => img10.png    [2] => img12.png    [3] => img2.png) Естественная сортировкаArray(    [0] => img1.png    [1] => img2.png    [2] => img10.png    [3] => img12.png)

strnatcasecmp

Производит "естественное" сравнение строк без учета регистра.

Синтаксис :

int strnatcasecmp(string str1, string str2)

То же, что и strnatcmp(), только игнорирует регистр.

similar_text

Производит определение схожести двух строк.

Синтаксис :

int similar_text(string firsrt, string second [, double percent])

Функция similar_text() вычисляет схожесть двух строк по алгоритму, описанному Оливером (Oliver [1993]). Но вместо стека (как в псевдокоде Оливера) она использует рекурсивные вызовы.

Сложность алгоритма делает функцию медленной, и ее скорость пропорциональна (N^3), где N - длина наибольшей строки.

Функция возвращает число символов, совпавших в обеих строках. При передаче по ссылке третьего необязательного параметра в нем сохраняется процент совпадения строк.

levenshtein

Определение различия Левенштейна двух строк.

Синтаксис :

int levenshtein(string str1, string str2)

int levenshtein(string str1, string str2, int cost_ins, int cost_rep, int cost_del)

int levenshtein(string str1, string str2, function cost)

"Различие Левенштейна" - это минимальное чило символов, которое требовалось бы заменить, вставить или удалить для того, чтобы превратить строку str1 в str2. Сложность алгоритма пропорциональна произведению длин строк str1 и str2, что делает функцию более быстродействующей, чем similar_text().

Первая форма функции возвращает число необходимых операций над символами строк для трансформации str1 в str2.

Вторая форама имеет три дополнительных параметра: стоимость операции вставки, замены и удаления, что делает ее более адаптированной для вычисления, но при этом менее быстродействующей. Возвращается интегральный показатель сложности трансформации.

Третий вариант позволяет указать функцию, используемую для расчета сложности трансформации. Функция cost вызывается со следующими аргументами:

  применяемая операция (вставить, изменить, удалить): "I*quot;, "R", "D";

  фактический символ первой строки

  фактический символ второй строки

  позиция строки 1

  позиция строки 2

  оставшаяся длина строки 1

  оставшаяся длина строки 2

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

Если длина одной из строк более 255 символов, функция levenshtein()

возвращает -1, но такая длина более чем достаточна.


Функции управления сценарием


set_time_limit

Установка предельного времени исполнения сценария.

Синтаксис :

void set_time_limit(int seconds)

При запуске сценария PHP запускает системный таймер, и если время (выделенное сценарию для выполнения) истекает, а сценарий еще не завершился, PHP принудительно завершает сценарий (генерируя фатальную ошибку исполнения). Это не допускпет скопления большого количества сценариев, расходующих ресурсы сервера, но, повидимому, "зависших" (например, если в них обнаружился бесконечный цикл или они пытаются дождаться подключения к неотвечающему серверу).

По умолчанию допустимое время исполнения сценария устанавливается в файле конфигурации параметром max_execution_time (обычно оно равно 30 с). Но для текущего сценария это время можно изменить вызовом данной функции, указав время в секундах в ее аргументе. Если указывается значение 0, то тогда временное ограничение снимается.

Отсчет времени начинается от момента вызова функции. Например, если сценарий уже выполнялся в течении 15 секунд, а затем вызывается функция set_time_limit(20), то общее максимальное время исполнения сценария становится равным 35 секундам.

Если сценарий выполняется в безопасном режиме (с установленным параметром safe mode), то тогда вызов этой функции игнорируется и используется значение из файла конфигурации.

sleep

Задержка выполнения сценария.

Синтаксис :

void sleep(int seconds);

Фукция sleep() выполняет задержку выполненя сценария в секундах (seconds).

usleep

Задержка выполнения сценария в микросекундах.

Синтаксис :

void usleep(int micro_seconds);

Задержка выполнения сценария в микросекундах (micro_seconds).

Эта функция не работает в Windows.

die

Вывод сообщения и завершение текущего сценария.

Синтаксис :

void die(string message);

Эта функция выводит сообщение и прекращает выполнение текущего скрипта. Не возвращает значение.

<?php$filename = '/path/to/data-file';$file = fopen($filename, 'r') or die "unable to open file ($filename)";?>


exit

Завершает текущий сценарий.

Синтаксис :

void exit(void);

Эта функция завершает текущий сценарий. Не возвращает значение.

assert

Проверка истинности значения.

Синтаксис :

int assert(string|bool assertion);

В качестве аргумента функции может быть указано значение или строка, содержащая код PHP (как в функции eval()). Функция проверяет, является ли значение (или выражение) равным false, и, если это так, выполняет определенные действия.

Поведение функции определяется установками в файле конфигурации или при вызове функции assert_options().

Обычно эта функция используется исключительно в целях отладки, для проверки тех значений, которые всегда должны быть истинны (например: подключение модуля, свободное пространство на диске и т.д.).

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

<?phpfunction handler() {  echo "\n* Failed * \n";} assert("\$a='1';");echo "a: $a \n";assert(0);// завершать сценарийecho assert_options(ASSERT_BAIL, 1);// вызвать обработчикassert_options(ASSERT_CALLBACK, "handler");// не выдавать сообщений PHP@assert(--$a);// эта строка не будет выполненаecho "\n ... \n"

Приведенный пример выведет:

a: 1

Warning: Assertion failed in file.php on line 20

0

* Failed *

assert_options

Определение параметров assert.

Синтаксис :

mixed assert_options(int parameter [, mixed value])

Эта функция позволяет определить поведение конструкции assert(). Возвращается предыдущее значение параметра (или значение false при ошибке), указанного в первом аргументе одной из следующих констант:



Параметр



ini-параметр



Умолчание



Описание



ASSERT_ACTIVE



asser.active



1



Разрешить указание кода в assert().



ASSERT_WARNING



assert.warning



1



Выдавать предупреждение PHP.



ASSERT_BAIL



assert.bail



0



Завершать выполнение, если "неистинно".



ASSERT_QUIET_EVAL



assert.quiet_eval



0



Не выдавать сообщений.



ASSERT_CALLBACK



assert_callback



(null)



Установить функцию в качестве обработчика "неистинных" assert().

<


Если значение необходимо переопределить, его указывают во втором аргументе.

eval

Производит выполнение строки содержащей PHP код.

Синтаксис :

void eval(string code_str);

Функция eval() производит выполнение строки, заданной в code_str

содержащей PHP код. Кстати, это может пригодиться для сохранения кода в текстовом поле базы данных для более позднего выполнения. Не забывайте, что указанный в строке код должен быть синтаксически правильным (например, должны присутствовать точки с запятой после каждой команды и т.п.), в противном случае сценарий будет завершен в этой строке с ошибкой. Учитывайте также, что те значения переменных, которые будут установлены в данной строке, будут использоваться в оставшейся части сценария.

При изменении переменных значений в eval() эти переменные будут изменены и в основных данных.

Если в строке указан оператор return, то тогда выполнение указанного кода будет досрочно завершено и возвращенное значение можно будет получить как значение, возвращаемое самой функции.

<?php$string = 'cup';$name = 'coffee';$str = 'This is a $string with my $name in it.

';echo $str;eval( "\$str = \"$str\";" );echo $str;?>

Результатом выполнения этого кода будет:

This is a $string with my $name in it.

This is a cup with my coffee in it.


Функции управления выводом


ob_start

Включение буферизации вывода.

Синтаксис :

void ob_start([string output_callback])

После вызова этой функции включается буферизация вывода и, пока она активна, никакие из выводящихся данных не будут посланы браузеру, а будут сохраняться во внутреннем буфере PHP.

Содержимое буфера может быть скопировано в строковую переменную функцией ob_get_contents(). Для вывода содержимого из буфера используется функция ob_end_flush(). Удалить содержимое буфера позволяет функция ob_end_clean().

В аргументе output_callback можно указать функцию, которая будет автоматически вызываться при выводе содержимого буфера. Обычно это используется для модификации содержимого буфера перед выводом (например, сжатия). Тогда при вызове функции ob_end_flush() в указанную функцию будет передаваться содержимое буфера, а то, что она возвратит, будет выведено (заметьте, сама функция не должна ничего выводить).

Буферизация может быть вложенной, и тогда она обрабатывается соответственно вложенности; и содержимое, выводимое из буфера нижнего уровня, будет включаться в буфер верхнего уровня. Не забывайте, что для вывода всего буферизованного содержимого необходимо вызывать функцию ob_end_flush() столько же раз, сколько была вызвана ob_start().

<?phpfunction c($str) { // получает содержимое буфера  return nl2br($str); // возвращает содержимое буфера}function d($str) { // получает содержимое буфера  return strtoupper($str); // возвращает содержимое буфера}?><?phpob_start("c");?> Тут различный текст... <?php// преобразовывать текст длее в верхний регистрob_start("d");?> еще что-то... <?phpob_end_flush();?> ....... <?phpob_end_flush();?>

ob_get_contents

Получение содержимого буфера вывода.

Синтаксис :

string ob_get_contents()

Если буферизация неактивна, возвращается false.

ob_get_length

Получение длины данных в буфере вывода.

Синтаксис :

string ob_get_length()

Если буферизация неактивна, возвращается false.


ob_end_flush

Вывод содержимого буфера.

Синтаксис :

void ob_end_flush(void)

После вывода буфер текущего уровня очищается, поэтому вызывайте функцию ob_get_contents() заранее, если необходимо получить его содержимое.

flush

Вывод всего содержимого буфера.

Синтаксис :

void flush(void);

Функция воздействует только на буферизацию PHP и не может контролировать схему буферизации web-сервера или браузера.

Некоторые серверы, в особенности под Win32, буферизируют выводящиеся сценарием данные до того, как сценарий завершится и данные будут отосланы браузеру.

Браузер, в свою очередь, также может буферизировать получаемые данные до их отображения. Netscape, например, буферизирует текст до получения символа завершения строки или открывающего тега, а для таблиц - до получения тега </table> таблицы верхнего уровня.

ob_end_clean

Очистка буфера.

Синтаксис :

void ob_end_clean(void);

Вызов функции отключает буферизацию на текущем уровне.

ob_implicit_flush

Установление режима буферизации.

Синтаксис :

void ob_implicit_flush([int flag]);

Если в аргументе указано ненулевое значение или оно не указано, то при осуществлении каждой операции вывода будет неявно вызыватся функция flush().

Надо отметить, что часто эта функция работает курьезно; например, если в конце сценария вызвать функцию ob_end_clean(), то сценарий не выведет ничего, если вывод из буфера не производился явно другими функциями.


Функции URL


number_format

Форматирование числа.

Синтаксис :

number_format($number, $decimals, $dec_point=".", $thousands_sep=",");

Эта функция форматирует число с плавающей точкой с разделением его на триады с указанной точностью. Она может быть вызвана с двумя или четырьмя аргументами, но не с тремя! Параметр $decimals задает, сколько цифр после запятой должно быть у числа в выходной строке. Параметр $dec_point

представляет собой разделитель целой и дробной частей, а параметр $thousands_sep

- разделитель триад в числе (если указать на его месте пустую строку, то триады не отделяются друг от друга).



Функции Vmailmgr


Эти функции требуют пакетов QMAIL (www.qmail.org) и vmailmgr Bruce Guenter http://www.qcc.sk.ca/~bguenter/distrib/vmailmgr/

Для всех функций следующие две переменные определяются как: строка vdomain - имя домена вашего виртуального домена (vdomain.com) , строка basepwd - пароль для "real" пользователя, который поддерживает виртуальных пользователей.

Только до 8 символов распознаются в пароле для виртуальных пользователей.

Возвращается статус для всех функциональных значений ответа в response.h

O ok

1 плохой

2 ошибка

3 ошибка соединения

<?phpdl("php3_vmailmgr.so"); //load the shared library$vdomain="vdomain.com";$basepwd="password";?>

vm_adduser

Добавляет нового виртуального пользователя с паролем.

Синтаксис :

int vm_adduser(string vdomain, string basepwd, string newusername, string newuserpassword);

Добавляет нового виртуального пользователя с паролем. newusername - это имя почтового login-а и newuserpassword - это пароль для это пользователя.

vm_addalias

Добавляет новый псевдоним для виртуального пользователя.

Синтаксис :

int vm_addalias(string vdomain, string basepwd, string username, string alias);

Добавляет псевдоним виртуальному пользователю. username - это имя почтового login-а и alias - это псевдоним для этого пользователя.

vm_passwd

Изменяет пароль виртуальных пользователей.

Синтаксис :

int vm_passwd(string vdomain, string username, string password, string newpassword);

Изменяет пароль виртуальных пользователей. username - это имя почтового login-а, password - старый пароль пользователя, и newpassword - новый пароль.

vm_delalias

Удаляет всевдоним.

Синтаксис :

int vm_delalias(string vdomain, string basepwd, string alias);

vm_deluser

Удаляет псевдоним виртуального пользователя.

Синтаксис :

int vm_deluser (string vdomain, string username);



Функции запуска программ


escapeshellcmd

Убирает shell метасимволы.

Синтаксис :

string escapeshellcmd(string command);

Убирает любые символы в строке, которые могут быть использованы в командном интерпретаторе как произвольные команды. Эту функцию нужно использовать, что бы убедится, что все ваши данные введены правильно, и эту функцию лучше всего вставлять в функции exec() или system(). Стандартное использование этой функции выглядит так:

system(EscapeShellCmd($cmd))

exec

Запуск внешней программы.

Синтаксис :

string exec(string command [, string array [, int return_var]]);

Функция exec() скрыто от пользователя запускает программу из строки command, весь стандартный вывод отключен. Возвращает последнюю строку результата выполнения программы.

Если параметр array установлен, то указанный массив будет заполнен выводом из программы. Помните, если массив уже содержит данные, то exec() добавляет свои данные в конец массива. Для очистки массива можно использовать функцию unset().

Если параметр return_var установлен наряду с параметром array, то в него записывается результат выполнения команды.

<?php$se = "dir c:\\";$s0 = exec($se, $sa, $sr);echo "При запуске команды "$se" последняя выведенная строка была:\n",    $s0,"\n Код возврата ($sr) \nА это все что было выведено: ";print_r($sa);?>

Если требуется запустить программу в фоновом режиме (на длительное время), то поток ее вывода должен быть перенаправлен в файл (или иной поток вывода); иначе по истечении допустимого времени исполнения сценария (ожидания завершения внешней программы) он будет принудительно завершен с ошибкой.

system

Запуск внешней программы с выводом результата.

Синтаксис :

string system(string command, int [return_var]);

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

Вызов System() также пробует автоматически вставить в буфер вывода web сервера после каждой строки вывода, если PHP запущен как модель сервера.

passthru

Запускает внешнюю программу и выводит данные напрямую.

Синтаксис :

string passthru(string command [, int return_var]);

Функция passthru() похожа на функцию exec() для запуска command. Если параметр return_var установлен, то результат Unix команды помещается здесь. Эта функция должна использоваться вместо exec() или system()

тогда, когда вывод из Unix команды является двоичными данными, которые должны быть переданы непосредственно обратно в окно просмотра(browser). Это можно использовать, например, для запуска утилиты pbmplus для вывода непосредственно потока изображения. Установка типа image/gif и вызов программы pbmplus, чтобы вывести gif-рисунок, вы можете создавать PHP скрипты, которые выводят изображения непосредственно.



Графические примитивы


imageSetPixel

Рисует пиксель.

Синтаксис :

int imageSetPixel(int im, int x, int y, int color)

Выводит один пиксель цвета color в изображении im, расположенный в точке (x, y).

imageLine

Рисует сплошную тонкую линию.

Синтаксис :

int imageLine(int im, int x1, int y1, int x2, int y2, int color)

Эта функция рисует сплошную тонкую линию в изображении im, проходящую через точки (x1, y1) и (x2, y2), цветом color. Линия получается слабо связанной.

<?php function imagelinethick($image, $x1, $y1, $x2, $y2, $color, $thick = 1) {    /* this way it works well only for orthogonal lines    imagesetthickness($image, $thick);    return imageline($image, $x1, $y1, $x2, $y2, $color);    */    if ($thick == 1) {        return imageline($image, $x1, $y1, $x2, $y2, $color);    }    $t = $thick / 2 - 0.5;    if ($x1 == $x2 || $y1 == $y2) {        return imagefilledrectangle($image,          round(min($x1, $x2) - $t),         round(min($y1, $y2) - $t),          round(max($x1, $x2) + $t),          round(max($y1, $y2) + $t), $color);    }    $k = ($y2 - $y1) / ($x2 - $x1); //y = kx + q    $a = $t / sqrt(1 + pow($k, 2));    $points = array(        round($x1 - (1+$k)*$a), round($y1 + (1-$k)*$a),        round($x1 - (1-$k)*$a), round($y1 - (1+$k)*$a),        round($x2 + (1+$k)*$a), round($y2 - (1-$k)*$a),        round($x2 + (1-$k)*$a), round($y2 + (1+$k)*$a),    );        imagefilledpolygon($image, $points, 4, $color);    return imagepolygon($image, $points, 4, $color);};?>

imageDashedLine

Рисует пунктирную линию.

Синтаксис :

int imageDashedLine(int im, int x1, int y1, int x2, int y2, int color)

Эта функция работает почти так же, как и imageLine(), только рисует не сплошную, а пунктирную линию. К сожалению, ни размер, ни шаг штрихов задавать нельзя, так что, если вам обязательна нужна пунктирная линия произвольной фактуры, придется заняться математическими расчетами и использовать imageLine().

imageRectangle

Рисует прямоугольник.

Синтаксис :

int imageRectangle(int im, int x1, int y1, int x2, int y2, int color)


Эта функция рисует в изображении im прямоугольник с границей толщиной 1 пиксель цветом color.

Левый верхний угол задается (x1, y1), а правый нижний - (x2, y2).

imageFilledRectangle

Зарисовка прямоугольной области.

Синтаксис :

int imageFilledRectangle( int im, int x1, int y1, int x2, int y2, int color)

Эта функция рисует закрашенный прямоугольник в изображении, заданном идентификатором im, цветом color (полученным, например, при помощи функции imageColorAllocate()). Координаты (x1, y1) и (x2, y2) задают координаты верхнего левого и правого нижнего углов, соответственно (отсчет, как обычно, начинается с верхнего угла и идет слева направо и сверху вниз).

Эта функция часто применяется для того, чтобы целиком закрасить только что созданный рисунок, например, прозрачным цветом:

<?php$im=imageCreate(100,100);$color=imageColorAllocate($i,0,0,0);imageColorTransparent($im,$color);imageFilledRectangle($im,0,0,imageSX($im)-1,imageSY($im)-1,$color);// дальше работаем с изначально прозрачным фоном?>

imageArc

Рисование части эллипса.

Синтаксис :

int imageArc(int im, int cx, int cy, int w, int h, int s, int e, int color)

Эта функция рисует в изображении im дугу сектора эллипса от угла s до e (углы указываются в градусах против часовой стрелки, отсчитываемых от горизонтали). Эллипс рисуется такого размера, чтобы вписываться в прямоугольник (w, h), где w и h задают его ширину и высоту. cx и cy - координаты центра эллипса. Сама фигура не закрашивается, обводится только ее контур, для чего используется цвет color.

<?php// создаем изображение размером 200x200$img = imagecreate(200, 200);// задаем цвет окружности$white = imagecolorallocate($img, 255, 255, 255);// рисуем окружностьimagearc($img, 100, 100, 150, 150, 0, 360, $white);// вывод рисунка в браузерheader("Content-type: image/png");imagepng($img);// закрытие рисункаimagedestroy($img);?>

imageFill

Заливка цветом ограниченной области.

Синтаксис :

int imageFill(int im, int x, int y, int color)



Эта функция выполняет сплошную заливку одноцветной области, содержащей точку с координатами (x, y) цветом color. Нужно замерить, что современные алгоритмы заполнения работают довольно эффективно, так что не стоит особо заботиться о скорости ее работы. Будут закрашены только те точки, к которым можно проложить "одноцветный сильно связанный путь" из точки x, y.

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

imageFillToBorder

Заливка области, ограниченной бордюром.

Синтаксис :

int imageFillToBorder(int im, int x, int y, int border, int color)

Эта функция очень похожа на imageFill(), только она выполняет закраску цветом color не одноцветных точек, а любых, но до тех пор, пока не будет достигнута граница цвета border.

imagePolygon

Рисует многоугольник с заданными вершинами.

Синтаксис :

int imagePolygon(int im, array points, int num_points, int color)

Эта функция рисует в изображении im многоугольник, заданный своими вершинами. Координаты углов передаются в массиве points, причем $points[0]=x0, $points[1]=y0, $points[2]=x1, $points[3]=y1 и т.д.

Параметр num_points указывает общее число вершин - на тот случай, если в массиве их больше, чем нужно нарисовать. Многоугольник не закрашивается - только рисуется его граница цветом color.

<?php// создаем изображение 400x300$image = imagecreate(400, 300); // устанавливаем цвет бордюра многоугольника$col_poly = imagecolorallocate($image, 255, 255, 255); // рисуем многоугольникimagepolygon($image,              array (                    0, 0,                    100, 200,                    300, 200             ),             3, $col_poly); // вывод картинки в браузерheader("Content-type: image/png");imagepng($image);?>

imageFilledPolygon

Рисует закрашенный многоугольник с заданными вершинами.

Синтаксис :

int imageFilledPolygon(int im, array points, int num_points, int color)

Эта функция делает практически то же самое, что и imagePolygon(), за исключением одного очень важного свойства: полученный многоугольник целиком заливается цветом color.

При этом правильно обрабатываются вогнутые части фигуры, если она не выпукла.

<?php// задаем массив с координатами углов$values = array(  0  => 40,    // x1  1  => 50,    // y1  2  => 20,    // x2  3  => 240,   // y2  4  => 60,    // x3  5  => 60,    // y3  6  => 240,   // x4  7  => 20,    // y4  8  => 50,    // x5  9  => 40,    // y5  10 => 10,    // x6  11 => 10,    // y6); // создаем картинку 250x250$im = imagecreate(250, 250); // задаем цвет заполнения многоугольника$blue = imagecolorallocate($im, 0, 0, 255); // рисуем многоугольникimagefilledpolygon($im, $values, 6, $blue ); // вывод каринки в браузер и ее закрытиеheader('Content-type: image/png');imagepng($im);imagedestroy($im);?>


Идентификатор сессии


Итак, идентификатор сессии является именем временного хранилища, которое будет использовано для хранения данных сессии между запусками сценария. Один SID - одно хранилище. Нет SID, нет и хранилища, и наоботот.

так как же соотностится идентификатор и имя группы? Имя - это всего лишь собирательное название для нескольких сессий (то есть, для многих SID), запущенных разными пользователями. Один и тот же клиент никогда не будет иметь два различных SID в пределах одного имени группы. Но его браузер вполне может работать с несколькими SID, расположенными логически в разных "пространствах имен".

Итак, все SID уникальны и однозначно определяют сессию на компьютере, выполняющем сценарий - независимо от имени сессии. Имя же задает пространство имен, в которое будут сгруппированны сессии, запущенные разными пользователями. Один клиент может иметь сразу несколько активных пространств имен (то есть несколько имен групп сессий).

session_id

Эта функция возвращает текущий идентификатор сессии SID.

Синтаксис :

string session_id([string $sid])

Если задан параметр $sid, то у активной сессии изменяется идентификатор на $sid.

Вызвав session_id() до session_start(), мы можем подключиться к любой (в том числе и к чужой) сессии на сервере, если знаем ее идентификатор. Мы можем также создать сессию с угодным нам идентификатором, при этом автоматически установив его в Cookies пользователя.



Имя группы сессии


Надо отметить, что на одном и том же сайте могут существовать сразу несколько сценариев, которые нуждаются в услугах поддержки сессий PHP. Они "ничего не знают" друг о друге, поэтому временные хранилища для сессий должны выбираться не только на основе идентификатора пользователя, но и на основе того, какой из сценариев запросил обслуживание сессии.

Для наглядности рассмотрим пример:

Пусть разработчик А написал сценарий счетчика. Он использует переменную $count, и не имеет никаких проблем. До тех пор, пока разработчик В, ничего не знающий о сценарии А, не создал систему статистики, которая тоже использует сессии. Самое ужасное, что он также регистрирует переменную $count, не зная о том, что она уже занята. В результате, как всегда, страдает пользователь: запустив сначало сценарий разработчика В, а потом - А, он видит, что данные счетчиков перемешались.

Нам нужно как-то разграничить сессии, принадлежащие одному сценарию, от сессии, принадлежащих другому. К счастью, разработчики PHP предусмотрели такое положение вещей. Мы можем давать группам сессии непересекающиеся имена, и сценарий, знающий имя своей группы сессии, сможет получить к ней доступ. Вот теперь-то разработчики А и В могут оградить свои сценарии от проблем с пересечением имен переменных. Достаточно в первой программе указать PHP, что мы хотим использовать группу с именем, например, sesA, а во второй - sesB.

session_name

Эта функция устанавливает или возвращает имя группы сессии, которая будет использоваться PHP для хранения зарегестрированных переменных.

Синтаксис :

string session_name([string $newname])

Если $newname не задан, то возвращается текущее имя. Если же этот параметр указан, то имя группы будет изменено на $newname, при этом функция вернет предыдущее имя.

Отметим, что session_name() лишь сменяет имя текущей группы и сессии, но не создает новую сессию и временное хранилище. Это значит, что мы должны в большинстве случаев вызывать session_name(имя_группы) еще до ее инициализации - вызова session_start(), в противном случае мы получим совсем не то, что ожидали.

Если функция session_name() не была вызвана по инициализации, PHP будет использовать имя по умолчанию - PHPSESID.

Пример:

<?session_name("CounterScript"session_start();session_register("count");$count=@$count+1;?>В текущей сессии вы открыли эту страницу <?=$count?> раз(а).



Информационные функции


phpinfo

Выводит текущее состояние всех параметров PHP.

Синтаксис :

int phpinfo([int what])

Для сокращения объема выводимой информации можно указать один из следующих разделов what (если он не указывается, то подразумевается INFO_ALL):

  INFO_GENERAL

  INFO_CREDITS

  INFO_CONFIGURATION

  INFO_MODULES

  INFO_ENVIRONMENT

  INFO_VARIABLES

  INFO_LICENSE

  INFO_ALL

Эта функция,которая в общем-то не должна появляться в законченной программе, выводит в броузер большое количество различной информации, касающейся настроек PHP и параметров вызова сценария. Именно, в стандартный выходной поток (то есть в браузер пользователя) печатается:

  версия PHP;

  опции, которые были установлены при компиляции PHP;

  информация о дополнительных модулях;

  переменные окружения, в том числе и установленные сервером при получении запроса от пользователя на вызов сценария;

  версия операционной системы;

  состояние основных и локальных настроек интерпретатора;

  HTTP-заголовки;

  лицензия PHP.

Функция phpinfo() в основном применяется при первоначальной установке PHP для проверки его работоспособности (уж больно много она выдает информации).

Проверить работу этой функции можно нажав эту ссылку.

phpversion

Возвращает текущую версию PHP.

Синтаксис :

string phpversion();

Возвращает строку, содержащую название версии интерпретатора PHP.

echo phpversion();

Вот что примерно должно получиться:

4.3.6

phpcredits

HTML-распечатка разработчиков PHP.

Синтаксис :

void phpcredits(inf flag);

Выводит информацию о создателях и их вкладе в разработку пакета PHP.

phpcredits(CREDITS_GENERAL);

Флаги можно комбинировать следующим образом:

phpcredits(CREDITS_GROUP + CREDITS_DOCS + CREDITS_FULLPAGE);

Далее приведу список доступных флагов:

  CREDITS_ALL - Полный HTML-листинг.

  CREDITS_DOCS - Список разработчиков документации.

  CREDITS_FULLPAGE - Обычно используется в комбинации с другими флагами. Выбирает вариант, подготовленный к распечатке.

  CREDITS_GENERAL - Общая разработка языка PHP 4.0 и SAPI


  CREDITS_GROUP - Список разработчиков ядра.

  CREDITS_MODULES - Список модулей расширения и их авторов.

  CREDITS_SAPI - Список разработчиков PHP модуля API сервера.

php_sapi_name

Получение типа интерфейса между Web-сервером и PHP.

Синтаксис :

string php_sapi_name();

Возвращает строку, содержащую строчными буквами тип интерфейса. Для CGI PHP, это будет строка "cgi", для mod_php под Apache - "apache" и т.п.

$sapi_type = php_sapi_name();if($sapi_type == "cgi")  echo "Это CGI PHP\n";else  echo "Это не CGI PHP а $sapi_type";

Вот что получиться для нашего случая:

Это не CGI PHP а cgi-fcgi

php_uname

Определение операционной системы.

Синтаксис :

string php_uname();

Возвращает строку, содержащую название операционной системы, например "Windows NT MYCOMP 5.1 build 2600".

if(substr(php_uname(),0,7) != "Windows") {  die("Этот сценарий должен выполняться в Windows.");}

ini_set

Изменение параметра конфигурации.

Синтаксис :

string ini_set(string varname, string newvalue);

Устанавливает для указанного параметра varname значение newvalue. При успехе возвращает прежнее значение, при ошибке - false.

ini_alter

Тоже, что и ini_set().

Синтаксис :

string ini_alter(string varname, string newvalue);

ini_get

Эта функция получает значения параметров конфигурации.

Синтаксис :

string ini_get(string varname);

Возвращает текущее значение парамерта конфигурации, заданное в переменной varname.

Данная функция позволяет получить все доступные в PHP парамеры.

В случае ошибки возвращает false.

ini_restore

Производит восстановление парамерта конфигурации.

Синтаксис :

string ini_restore(string varname);

Устанавливает значение параметра конфигурации varname в первоначальное.

echo ini_set("precision",20).ini_get("precision").      ini_restore("precision").ini_get("precision");// Выведет 14 20 14



get_cfg_var

Получает значения параметра непосредственно из файла php.ini.

Синтаксис :

string get_cfg_var(string varname);

Надо отметить, что в отличии от функции ini_get(), которая возвращает текущее значение параметра, функция get_cfg_var() возвращает значение параметра, которое установлено в файле конфигурации php.ini. Также эта функция не возвращает другие параметры (например, из конфигурации самого сервера).

getenv

Функция возвращает значение переменной окружения.

Синтаксис :

string getenv(string varname);

$ip = getenv("REMOTE_ADDR");echo "Ваш IP-адрес: $ip";

Вот что получиться в результате работы:

Ваш IP-адрес: 127.0.0.1

Список переменных окружения можно посмотреть в Приложения->Переменные окружения, или при помощи функции phpinfo().

Эта функция не работает в модуле PHP ISAPI.

putenv

Устанавливает переменную окружения.

Синтаксис :

void putenv(string setting);

putenv("UNIQID=$uniquid");

get_magic_quotes_gpc

Получает текущее значение параметра magic_quotes_gpc.

Синтаксис :

long get_magic_quotes_gpc();

Эта функция возвратит 0 для Off и 1 для On.

get_magic_quotes_runtime

Предназначена для получения текущего значения патаметра magic_quotes_runtime.

Синтаксис :

long get_magic_quotes_runtime();

Эта функция возвратит 0 для Off и 1 для On.

set_magic_quotes_runtime

Предназначена для установки текущего значения патаметра magic_quotes_runtime.

Синтаксис :

long set_magic_quotes_runtime(int new_setting);

Для установки magic_quotes_runtime в Off задайте параметр new_setting равным 0, а для установки в On равным 1.

php_logo_guid

Функция получения GUID логотипа PHP.

Синтаксис :

string php_logo_guid();

Строка

echo php_logo_guid();

возвратит

PHPE9568F34-D428-11d2-A769-00AA001ACF42

zend_logo_guid

Функция получения GUID логотипа Zend.

Синтаксис :

string zend_logo_guid();

Строка

echo zend_logo_guid();

возвратит

PHPE9568F35-D428-11d2-A769-00AA001ACF42

Часть 5. Взаимодействие с базами данных


Инициализация сессии и регистрация переменных


session_start

Эта функция инициализирует механизм сессий для текущего пользователя, запустившего сценарий.

Синтаксис :

void session_start()

  Если посетитель запускает программу впервые, у него устанавливается Cookies с уникальным идентификатором, и создается временное хранилище, ассоциированное с этим идентификатором.

  Определяется, какое хранилище связано с текущим идентификатором пользователя.

  Если в хранилище имеются какие-то переменные, их значения восстанавливаются. Точнее, создаются глобальные переменные, которые были сохранены в сессии при предыдущем завершении сценария.

Надо заметить, что если вы поставили в настройках PHP режим session.auto_start=1, то функция инициализации вызывается автоматически при запуске сценария. Так же надо следить за тем, чтобы до нашей функции не было никакого вывода в браузер - иначе PHP не сможет установить SID для пользователя.

Функция всегда возвращает true.

session_register

Указывает PHP на то, что ту или иную переменную нужно сохранить в сессии.

Синтаксис :

bool session_register(mixed name [, mixed name1, ...])

Функция принимает в параметрах одно или несколько имен переменных (имена задаются в скобках, без знака $ слева), регистрируют их в текущей запущенной сессии и возвращает true, если регистрация прошла успешно.

Повторная запись одной переменной в сессии не приведет к ошибке.

<?session_start();session_register("count");$count=@$count+1;?><h2>Счетчик</h2>В текущей сессии работы с браузером вы открыли эту страницу<?=$count?> раз(а). Закройте браузер, чтобы обнулить счетчик.</body>



Как вставить в письмо картинку


Допустим, у нас задача - вставить в письмо, отправляемое с сайта пользователю, свой баннер (кнопку).

Сделать это можно двумя способами:

Первый - в HTML-коде письма указываем адрес картинки как на простой страничке <IMG src="http://spravkaweb.ru/img/88x31.gif">

В этом случае, если пользователь читает ваше письмо online, картинка благополучно загрузится с указанного сервера и отобразится в письме. Но если пользователь не в online, картинка загрузиться не сможет.

Второй способ - это поместить картинку в само письмо как прикрепленный файл (более подробно о прикреплении файлов к письму читайте здесь), присвоить этому файлу уникальный идентификатор, а затем в теле письма при указании адреса картинки сослаться на этот идентификатор.

Таким образом, в письмо можно вставлять не только изображения, но и flash-ролики, музыку, элементы ActiveX.

Конечно, при этом размер письма увеличится, но зато мы будем уверены, что пользователь точно увидит вставляемую картинку (если конечно в его почтовой программе не отключено отображение изображений).

Чтобы присвоить идентификатор картинке, надо в разделе письма, где она располагается, поместить следующий заголовок:

Content-ID: <идентификатор>

где идентификатор является строкой, которая будет уникальной для данного письма (по примеру параметра boundary заголовка Content-Type).

Теперь в самом письме можно в адресе картинки подставлять ее идентификатор.

<IMG src="cid:идентификатор">

Почтовая программа проанализирует его, извлечет из соответствующей секции картинку и покажет ее.

Вот как может выглядеть письмо:

Date: Sat, 13 Mar 2004 09:56:31 -0300Subject: Отправка изображенияFrom: "Evgen" <admin@spravkaweb.ru>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 <h3>Привет</h3>Это проба отправки письма с прикрепленной картинкой.<BR>А вот и сама картинка:<BR><img src="cid:spravkaweb_img_1"> --spravkaweb-1234Content-Type: image/jpeg; name="5.jpg"Content-Transfer-Encoding:base64Content-ID: <spravkaweb_img_1> /9j/4AAQSkZJRgABAQAAAQABAAD/2wBD ....--spravkaweb-1234--


Как и в случае с прикрепляемыми файлами, если нам заранее неизвестно, какой тип картинки будет прикреплен, заголовку Content-Type можно присвоить значение application/octet-stream.

Для закрепления этой темы напишем программу, которая отправляет письмо с картинкой:

<?php/*Зададим в переменной $file_name путь до вставляемой картинки.В нашем случае она находится в том же каталоге, что и файл отправки письма. Но вместо этого сюда можно подставитьфайл, полученный сценарием из <INPUT type=file name=file_name>.*/$file_name="5.jpg";$subj="Отправка изображения";$bound="spravkaweb-1234";$headers="From: \"Evgen\" <admin@spravkaweb.ru>\n";$headers.="To: admin@localhost.ru\n";$headers.="Subject: $subj\n";$headers.="Mime-Version: 1.0\n";$headers.="Content-Type: multipart/alternative; boundary=\"$bound\"\n";$body="--$bound\n";$body.="Content-type: text/html; charset=\"windows-1251\"\n";$body.="Content-Transfer-Encoding: 8bit\n\n";$body.="<h3>Привет</h3>Это проба отправки письма с прикрепленной картинкой.<BR>А вот и сама картинка:<BR><img src=\"cid:spravkaweb_img_1\">";$body.="\n\n--$bound\n";$body.="Content-Type: image/jpeg; name=\"".basename($file_name)."\"\n";$body.="Content-Transfer-Encoding:base64\n";$body.="Content-ID: <spravkaweb_img_1>\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-ролики, звук, и другие элементы, которые должны подгружаться к странице из файлов.