Продавай мобильный контент со своего сайта

Учебник по основам PHP

Содержание

  • Введение
  • Синтаксис языка и операторы
  • Функции работы с данными
  • Файлы и сети
  • Управляющие функции
  • Взаимодействие с базами данных
  • Графика, Flash, pdf
  • Комплексная обработка данных


Введение

  • Основные сведения о РНР
  • Структура книги
  • Установка и компиляция РНР
  • Установка РНР в Windows
  • Компиляция для Windows

Основные сведения о РНР

Изначально аббревиатура РПР означала Preprocessor of Home Pages — препроцессор домашних страниц. Это язык внедряемых в HTML-страницы сценариев, исполняемых на сервере. По большей части его синтаксис заимствован из таких языков, как С, Perl, Java, и при этом добавлена масса возможностей, которых этим языкам недостает. Проще говоря, синтаксис РНР — это разумная альтернатива и строгости С, и «беспредельности» Perl.

РНР наделен практически полным набором функциональности, о которой (до появления РНР) мог только мечтать web-программист. Его цель — позволить максимально быстро создавать динамически генерируемые web-страницы. С полным основанием можно заявить, что изучение и использование РНР будет выгодно как начинающим, так и профессиональным программистам.

Основными конкурентами РНР являются технологии JSP (Java Server Pages и Java Scriptlets), ASP (Active Server Pages), Perl, SSI (Server Side Includes), Cold Fusion Server Pages. Рассмотрим те недостатки, которые присущи указанным технологиям. JSP — достаточно сложный для изучения и использования язык. ASP, основанный на синтаксисе VBScript (Visual Basic), имеет всего несколько десятков собственных функций и поэтому вынужден использовать СОМ-объекты; кроме того, он ориентирован исключительно на работу под Windows. Perl — язык головоломный, и его вольности затрудняют его понимание. SSI позволяет всего лишь компоновать HTML-страницу из нескольких файлов. CF — коммерческий продукт, что является его основным недостатком.

Основные достоинства РНР: бесплатен; постоянно совершенствуется; работает на UNIX и Windows платформах; допускает работу с большинством СУБД; имеет широкий набор функций (более 3 тыс.); допускает объектно-ориентированное программирование; способен использовать протоколы HTTP, FTP, ШАР, SNMP, NNTP, POPS, net sockets 11 другие; позволяет выполнять все операции, что и перечисленные его конкуренты, и даже работать с файлами графики. Можно также запускать PHP-скрипты как интерпретируемые файлы и компилировать исполняемые приложения (в том числе с поддержкой графического интерфейса GTK).

Если вы обнаружите, что РНР не способен на что-то (или работает не так, как вам хотелось бы), никто не будет препятствовать вам вносить в исходный код РНР (написанный на С) желаемые изменения. РНР является программным продуктом с открытым исходным кодом, и внесение в него улучшений и дополнений путем создания собственных модулей расширения всегда приветствуется.

Краткая история РНР

РНР изобретен Расмусом Лердорфом в конце 1994 года. Первая версия выпущена в 1995 году под именем «Инструментарий Персональных Домашних Страниц», затем она была переработана и названа PHP/FI Version 2 (FI — модуль обработки данных для форм). Также была добавлена поддержка баз д'анных mSQL. С этого момента в разработке стали принимать участие добровольцы.

Статистика используемости РНР приблизительна, но, согласно исследованию, проведенному Netcraft, в начале 2001 года РНР использовался на более чем 5 300 000 сайтах по всему миру. Для сравнения: в это время число IIS серверов было примерно таким же (5 млн). Разработка интерпретатора РНР приняла форму организованного командного процесса, ядро интерпретатора разрабатывает компания Zcnd.com. При этом РНР распространяется свободно: его последнюю версию можно загрузить с сайта PHP.net. Модули РНР поставляются в комплекте с сервером Apache, в комплектах систем Linux.

Версии РНР

В конце 2000 года была выпущена версия РНР 4.0.4, в апреле 2001 -4.0.5, а в июне — 4.0.6. Промежуточные версии РНР можно загрузить с серверов CVS. В каждой новой версии появляются новые модули, расширяющие и улучшающие возможности РНР.

Полное руководство РНР доступно на нескольких языках в шести вариантах: документация на сайте PHP.net с аннотациями (>80 Мбайт); один HTML-файл (>3 Мбайт), набор маленьких связанных HTML-страниц (несколько тысяч), UNIX man-файл, скомпилированный Windows HLP-файл (в формате chm) и документация в виде книги PDF. Издательством «Питер» выпущено две книги (одну из которых вы держите в руках), к концу года планируется издать еще две книги.

Данная книга представляет собой краткий справочник, перед которым ставилась задача в наиболее сжатой и ясной форме изложить максимум самой необходимой информации. Подразумевается, что читатель знаком с программированием и web-технологиями. Все описания относятся к версиям РНР 4.0.4—4.0.6.

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

Дополнительное ПО

Для того чтобы исполнять серверные сценарии, необходим, естественно, сам web-сервер — это может быть PWS или Apache для Windows 95/98, IIS для Windows NT/2000 Server, Apache для UNIX/Linux или какой-либо другой, — а также любой браузер для просмотра результатов исполнения сценария. Но возможен и вариант запуска сценария из командной строки, с помощью CGI интерпретатора php.exe в консольном окне MS-DOS, при этом ни браузер, ни сервер не требуются.

Используя библиотеку PHP-GTK, можно создавать на РНР приложения с графическим интерфейсом, применяя РНР как улучшенную альтернативу Visual Basic, но стоит отметить, что графический интерфейс имеет ярко выраженный Unix-стиль. С сайта www.deskcode. com можно загрузить компилятор РНР, генерирующий исполняемые (.ехе) файлы для Windows (приложению требуется наличие библиотеки php4ts.dll и других используемых модулей).

Поскольку одной из наиболее широко используемых возможностей РНР является работа с базами данных, полезно установить сервер БД, например MySQL или любой другой (PostgreSQJL, InterBase, MS SQL). Нелишней может оказаться и установка драйверов ODBC для имеющихся баз данных.

Существенную помощь окажет редактор PHP-кода. Достаточно удобна среда разработчика PHPEd, которую можно бесплатно загрузить с сайта http://www.soysal.com/PHPEd/. Знакомый всем HomeSite 4.5 (www.allaire.com) также позволяет работать с синтаксисом РНР.

Полезные информационные ресурсы

Как уже отмечено, большая часть информации по РНР доступна в англоязычном варианте. Если это вас не смущает, то можете воспользоваться сайтами PHPBuilder.com, PHPWizard.com, WebMonkcy (lycos.com), Zend.com, PHPClub.ru, которые содержат большой объем статей и учебных руководств по программированию.

На РНР созданы даже целые web-порталы, которые можно интерактивно реконфигурировать, например PHPNuke (исходные РНР-коды можно загрузить с сайта PHPNuke.com). Хотя объем кода таких проектов достаточно велик (несколько Мбайт), наличие перед глазами подобных примеров готовых разработок способно воодушевить вас на не меньшие достижения.

Для понимания некоторых разделов, возможно, потребуется воспользоваться файлами из архива RFC (Request for Comments — запросы на комментарий). Это сборник объяснений спецификаций сетевых и Интернет-технологий, состоящий из более чем 2000 файлов. Например, RFC 1180 - учебник по TCP/IP, RFC 1208 - толковый словарь сетевых терминов, RFC 821 — SMTP протокол, RFC 1939 — протокол POPS. Этот архив доступен, на множестве серверов, в том числе на rs.internic.net (официальный сервер), http://www.faqs.org/rfcs.

Структура книги

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

Часть 1 — «Синтаксис языка и операторы» — описывает синтаксис и использование РНР.

Часть 2 — «Функции работы с данными» — рассматривает основные функции РНР, которые позволяют вам работать со встроенными типами данных: числами, массивами, строками.

Часть 3 — «Файлы и сети» — описывает способы, имеющиеся в РНР для доступа к файлам, как локальным, так и удаленным; возможности использования сетевых протоколов и работу с архивированными файлами.

Часть 4 — «Управляющие функции» — рассматривает управление функционированием РНР и его коммуникационными возможностями при работе с клиентом и другими приложениями.

Часть 5 — «Взаимодействие с базами данных» — рассматривает схему работы с серверами и файлами БД.

Часть 6 — «Графика, Flash, pdf» — описывает возможности РНР по созданию графических файлов для web: картинок, анимаций, документов.

Часть 7 — «Комплексная обработка данных» — описывает дополнительные возможности РНР по сложной обработке символьных данных (XML и сходные технологии).

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

Поскольку язык РНР и его модули расширения находятся в процессе непрерывной доработки и улучшения, используемая вами версия РНР может работать несколько отличным образом от того, как это описано в книге. Все примеры, приведенные в книге, были протестированы с РНР версий 4.0.4, 4.0.5, 4.0.6; но все же я настоятельно рекомендую читателям проверять достоверность документации, потому что даже официальное руководство во многих аспектах неполно (или иногда ошибочно) отражает реальные возможности РНР.

В книгу было включено рассмотрение большей части возможностей РНР; в ней описывается 1500 функций. Тем не менее на момент выхода книги, в РНР имелось около 3000 функций. Конечно, вам едва ли придется использовать более трети всего того, что позволяет РНР; именно по этой практической причине в книге не описаны редко используемые и специфические возможности РНР: Hyperwave, ICAP, LDAP, MCAL, MCrypt, Mhash, mnoGoSearch, Scsam DB, SNMP, YAZ, YP/NIS. He забывайте также, что в дальнейшем возможности РНР будут расширены еще больше.

Установка и компиляция РНР

На сайте http://www.php.net/ можно найти несколько установочных пакетов РНР. Для систем Windows предлагаются варианты: готовый пакет CGI с автоматической установкой и полный скомпилированный пакет CGI/ISAPI с дополнительными библиотеками, требующий ручной настройки. Также можно загрузить пакет исходных кодов и скомпилировать весь пакет самостоятельно. Для систем UNIX/Linux обычно приходится перекомпилировать РНР, так как версии операционных систем сильно различаются (возможно, придется дозагру-жать дополнительные библиотеки).

Вопрос о том, имеет ли смысл компилировать РНР самому или стоит воспользоваться готовым пакетом, решает сам программист. Основными мотивами для собственноручной компиляции могут быть: неудовлетворительная конфигурация предлагаемого готового пакета, которую нельзя изменить с помощью редактирования файла php.ini (см. ниже), и желание поупражняться с компилированием.

Для большинства web-серверов можно установить РНР либо в виде серверного модуля ISAPI, либо в виде запускаемого серверного CGI-приложения. CGI-приложение запускается сервером каждый раз, когда необходимо исполнить сценарий, а по завершении сценария РНР выгружается из памяти. ISAPI-модуль загружается один раз при запуске web-сервера и остается в памяти все время, пока работает сервер. Поэтому, чтобы после редактирования файла конфигурации php.ini изменения вступили в силу, необходимо перезапустить сервер. РНР в виде CGI-приложения не позволяет выполнять ряд функций, например использовать устойчивые подключения к серверам баз данных.

Установка и компиляция РНР в UNIX, параметры компиляции

Операционные системы семейства UNIX сильно различаются между собой, поэтому подробного описания в данной книге не приводится. Единственное, что роднит между собой различные UNIX-системы при компиляции РНР, — это параметры компиляции; с их помощью указывается, какие из PHP-модулей необходимо прикомпилировать к основному модулю РНР. Они приводятся ниже. Для тех параметров, которые имеют аргумент DIR, можно указать путь каталога, в котором была установлена используемая библиотека. В скобках указано значение параметра по умолчанию. Дополнительная информация по установке и конфигурированию модулей приводится в соответствующих главах.

Базы данных

  • with-adabas[=DIR] — включить поддержку Adabas D (/usr/local).
  • enable-dba=shared — использовать DBA как совместно используемый модуль.
  • enable-dbase — включить поддержку dbase. Внешние библиотеки не требуются.
  • with-db2[=DIR] — включить поддержку Berkeley DB2.
  • with-db3[=DIR] — включить поддержку Berkeley DB3.
  • with-dbm[=DIR] — включить поддержку DBM.
  • with-dbmaker[=DIR] — включить поддержку DBMaker (зависит от версии, например /home/dbmaker/3.6).
  • with-empress[=DIR] — включить поддержку Empress (значение системной переменной $EMPRESSPATH).
  • enable-filepro — включить встроенную поддержку filcPro. Внешние библиотеки не требуются.
  • with-gdbm[=DIR] — включить поддержку GDBM.
  • with-hyperwave — включить поддержку Hyperwave.
  • with-ibm-db2[=DIR] — включить поддержку IBM DB2 (/home/ db2instl/sqllib).
  • with-informix[=DIR] — включить поддержку Informix (умолчаний нет).
  • with-ingres[=DIR] — включить поддержку Ingres II (/II/ingres).
  • with-interbase[=DIR] — включить поддержку InterBase (/usr/interbase).
  • with-ldap[=DIR] — включить поддержку LDAP — службы каталогов Lightweight Directory Access Protocol (/usr/Local/Ldap). См. также: RFC1777 и RFC1778.
  • with-msql[=DIR] — включить поддержку mSQL (/usr/loCdl/Hughes).
  • with-mysql[=DIR] — включить поддержку MySQL (параметр включен по умолчанию).
  • with-ndbm[=DIR] - NDBM.
  • with-oci8[=DIR] - включить поддержку Oraclc-oci8 ($ORACLE_HOME).
  • with-orade[=DIR] — включить поддержку Oracle-oci7 ($ORACLE_HOME).
  • with-pgsql[=DIR] — включить поддержку PostgrcSQL (/usr/local/ pgsql).
  • with-solid[=DIR] — включить поддержку Solid (/usr/local/solid).
  • with-sybase-ct[=DIR] — включить поддержку Sybase-CT (/home/ Sybase).
  • with-sybase[=DIR] — включить поддержку Sybase-DB (/home/Sybase).
  • with-openlink[=DIR] - - включить поддержку OpenLink ODBC (/usr/local/openlink).
  • with-iodbc[=DIR] — включить поддержку iODBC (/usr/local).
  • with-custom-odbc[=DIR] — включить поддержку пользовательской библиотеки ODBC (/usr/local). Перед запуском сценария configure необходимо присвоить значение переменной CUSTOM_ODBC__LIBS, а также проверить, чтобы файл odbc.h был доступен.
  • with-unixODBC[=DIR] — включить поддержку unixODBC support (/usr/local).
  • with-velocis[=DIR]— включить поддержку Velocis (/usr/local/ velocis). < /FONT>

Ecommerce

  • with-ccvs[=DIR] — разрешить поддержку CCVS для РИР4.
  • with-cybercash[=DIR] — включить поддержку CyberCash.
  • with-pfpro[=DIR]— включить поддержку Verisign Payflow Pro. < /FONT>

Графика

  • enable-freetype-4bit-antialias-hack — включить поддержку FreeType2 (экспериментальная).
  • with-gd[=DIR] — включить поддержку GD.
  • without-gd — запретить поддержку GD.
  • with-jpeg-dir[=DIR] — каталог библиотеки jpeg для pdflib 3.x.
  • with-png-dir[=DIR] — каталог библиотеки png для pdflib 3.x.
  • with-tllib[=DIR] — включить поддержку Tllib.
  • with-tiff-dir[=DIR] — каталог библиотеки tiff для pdflib 3.x.
  • with-ttf[=DIR] — включить поддержку FreeType.
  • with-xpm-dir[=DIR]— каталог библиотеки хрт для gd-1.8+. < /FONT>

Разнообразные параметры

  • disable-libtool-lock — не использовать блокировку библиотек при компиляции.
  • disable-pear — не устанавливать PEAR.
  • disable-pic — не использовать PIC для общих объектов.
  • disable-posix — не использовать функции POSIX.
  • disable-session — запретить поддержку сессий.
  • enable-bcmath — компилировать с поддержкой функций be math. См. также: README-BCMATH.
  • enable-c9x-inline — использовать семантику C9x-inline.
  • enable-calendar — использовать преобразования calendar.
  • enable-debug — компилировать в режиме для отладки.
  • enable-discard-path — позволяет разместить PHP CGI вне web-каталогов.
  • enable-dmalloc — разрешить поддержку dmalloc.
  • enable-exif — разрешить поддержку exif.
  • enable-experimental-zts — экспериментальная компиляция.
  • enable-fast-install[=PKGS] — оптимизировать для быстрой установки (по ум.)
  • enable-force-cgi-redirect — разрешить проверку безопасности для внутренних переадресаций сервера. Используйте для CGI версии Apache.
  • enable-inline-optimization — используйте с gcc при наличии большого объема памяти.
  • enable-libgcc — явное подключение библиотеки libgcc.
  • enable-maintainer-mode — компилировать для определенного установщика, игнорируя тс параметры, которые ему непонятны.
  • enable-memory-limit — ограничение памяти при компиляции (по умолчанию — нет).
  • enable-safe-mode — разрешить безопасный режим по умолчанию.
  • enable-satellite — поддерживать CORBA через Satellite (необходим ORBit).
  • enable-shared[=PKGS] — компилировать динамические библиотеки (по умолчанию).
  • enable-sigchild — разрешить собственный для РНР обработчик SIGCHLD.
  • enable-static[=PKGS] — компилировать статические библиотеки (по умолчанию).
  • enable-sysvsem — включить поддержку семафоров System V.
  • enable-sysvshm — включить поддержку System V shared memory.
  • enable-trans-sid — автоматически передавать идентификатор сессии.
  • with-cdb[=DIR] — включить поддержку СОВ.
  • with-config-file-path=PATH — установить каталог размещения php.ini (/usr/local/lib).
  • with-cpdflib[=DIR] — включить поддержку cpdflib (необходима cpdflib >= 2) (/usr).
  • with-esoob[=DIR] — включить поддержку Easysoft OOB (/usr/Local/ easysoft/oob/dient).
  • with-exec-dir[=DIR] — в безопасном режиме разрешать запуск сценариев только из указанного каталога (/usr/locat/php/bin).
  • with-fdftk[=DIR] — включить поддержку fdftk (/usr/local).
  • with-gnu-ld — считать, что компилятор С использует GNU Id (no умолчанию — нет).
  • with-icap[=DIR] - поддерживать ЮАР.
  • with-imap[=DIR] — включить поддержку ШАР. DIR — каталог размещения ШАР include и файла c-client.a.
  • with-java[=DIR] — включить поддержку Java. DIR — каталог установки JDK. Модуль должен быть скомпилирован как общий.
  • with-kerberos[=DIR] — включить поддержку Kerberos в ШАР.
  • with-mcal[=DIR] — включить поддержку MCAL.
  • with-mcrypt[=DIR] — включить поддержку mcrypt.
  • with-mhash[=DIR] — включить поддержку mhash.
  • with-mm[=DIR] — использовать поддержку mm для хранения данных сессий.
  • with-mod_charset — разрешить таблицы трансляции для mod_charset (Rus Apache).
  • with-pdflib[=DIR] — поддерживать pdflib 3.x (/usr/local).
  • with-readline[=DIR] — поддерживать readlinc.
  • with-regex=TYPE — тин библиотеки regex: system, apache, php.
  • with-servlet[=DIR] — поддерживать сервлеты. DIR — каталог JSDK. Модуль Java должен быть совместным.
  • with-swf[=DIR] — включить поддержку swf.
  • with-tsrm-pth[=pth-config] — использовать GNU Pth.
  • with-tsrm-pthreads — использовать POSIX threads (по умолчанию)
  • with-zlib-dir[=DIR] — каталог zlib для pdflib 3.x или просто поддержки zlib.
  • with-zlib[= DIR] — включить поддержку zlib (необходима zlib >= 1.0.9) (/usr).
  • without-pcre-regex — не включать поддержку регулярных выражений.

Сети

  • with-curl[=DIR] — включить поддержку CURL.
  • enable-ftp — включить поддержку FTP.
  • with-openssl[=DIR] — включить поддержку OpenSSL в SNMP.
  • with-snmp[=DIR] — включить поддержку SNMP.
  • enable-ucd-snmp-hack — разрешить UCD SNMP.
  • enable-sockets — включить поддержку сетевого интерфейса sockets.
  • with-yaz[=DIR] - включить поддержку YAZ (ANSI/NISO Z39.50).
  • enable-yp — включить поддержку YP.
  • enable-magic-quotes — разрешить magic quotes по умолчанию.
  • disable-short-tags — запретить использование сокращенных тегов

Сервер

  • with-aolserver-src=DIR — размещение дистрибутива AOLserver.
  • with-aolserver=DIR - компилировать PHP для AOLserver.
  • with-apache[=DIR] - - компилировать PHP как модуль Apache (/usr/local/etc/httpd).
  • with-apxs[=FILE] — компилировать PHP как модуль Apache (используя apxs).
  • enable-versioning — экспортировать только необходимые символы. См. также файл INSTALL.
  • with-fhttpd[=DIR] — компилировать PHP как модуль fhttpd (/usr/ local/src/fhttpd).
  • with-nsapi=DIR — компилировать PHP как модуль Netscape.
  • with-phttpd=DIR — компилировать PHP как модуль phttpd.
  • with-pi3web=DIR — компилировать PHP как модуль PiSWeb.
  • with-roxen=DIR — компилировать PHP как модуль Pike (/usr/ local/roxen/server).
  • enable-roxen-zts — компилировать PHP как модуль Roxen.
  • with-thttpd=SRCDIR — компилировать PHP как модуль thttpd.
  • with-zeus=DIR— компилировать PHP как модуль ISAPI для использования с сервером Zeus. < /FONT>

Текстово-языковые возможности

  • with-aspell[=DIR] — включить поддержку ASPELL.
  • with-gettext[=DIR] — включить поддержку GNU gettext (/usr/ local).
  • with-pspell[=DIR] — включить поддержку PSPELL.
  • with-recode[=DIR]— включить поддержку recode. < /FONT>

XML

  • with-dom[=DIR] — разрешить использование DOM (требуется libxml >= 2.0) (/usr).
  • enable-sablot-errors-descriptive — разрешить выдачу описаний ошибок.
  • with-sablot[=DIR] — разрешить использование Sablotron.
  • enabte-wddx — разрешить использование WDDX.
  • disable-xml — запретить поддержку XML с использованием встроенной библиотеки expat.

Установка РНР в Windows

Далее описываются установка и конфигурирование РНР для web-серверов в системах Windows 9x/NT, в частности:

  • Personal Web Server (PWS);
  • Internet Information Server (IIS) 6, 4, 5;
  • Apache 1.3.x.

Автор рекомендует использовать web-сервер Apache по причине того, что он работает на всех системах, и именно при его использовании РНР может проявить все свои возможности. Также РНР можно установить и для ряда других серверов (инструкции не приводятся).

Windows Installshield

Программа установки РНР (которую можно загрузить с сайта http:// www.php.net/) автоматически устанавливает CGI-версию РНР для Apache, IIS или PWS (и других серверов) и самостоятельно настраивает сервер. Процедура установки достаточно понятна и удобна.

Общие шаги установки

Эту процедуру следует проделать для всех серверов, работающих в Windows, если установка производится вручную (а не используется установщик).

  • Разархивируйте дистрибутив РНР в любой каталог, например С:\РНР\.
  • Скопируйте файл php.ini-dist в каталог Windows (обычно это c:\windows или c:\winnt).
  • Отредактируйте файл конфигурации php.ini:
    • Установите каталог модулей расширения extension_dir (путь к файлам php_*.dll), например: c:\php.
    • Выберите те модули РНР, которые должны загружаться при запуске интерпретатора, и раскомментируйте их строки extension= php_*.dTI. Модули также можно загружать динамически командой сценария: dl("php_*.dll");. Некоторым модулям требуются дополнительные библиотеки, часть которых находится в каталоге dlls дистрибутива (если их там нет, обратитесь на страницу http://www.php.net/FAQ.php, чтобы узнать, как их можно найти); их следует скопировать в тот каталог, где система может их найти, или добавить путь к ним в переменную PATH.
    • Для PWS и IIS можно указать путь к файлу browscap.ini: c:\windows\system\1netsrv\browscap.ini для Windows 95/98 и C:\winnt\system32\inetsrv\browscap.ini для NT Server.

Модули DLL PHP имеют префикс php_, что позволяет различать их и используемые ими библиотеки.

Windows 95/98/NT и PWS/IIS 3

Рекомендуется настраивать эти серверы установкой файла php_iis_ reg.inf, pws-php4isapi.reg или pws-php4cgi.reg, входящего в дистрибутив, предварительно его отредактировав и указав реальные каталоги. В противном случае придется редактировать реестр (будьте осторожны, рекомендуется сделать копию реестра).

  • Запустите Rcgcdit.
  • Перейдите в раздел HKEY_LOCAL_MACHINE/System/CurrentControlSet/ Services/W3Svc/Parameters/ScriptMap,
  • Создайте в нем строковый параметр — расширение php-сценари-ев, например: .php. Присвойте ему путь к php.exe в виде: c:\php\ php.exe %s %s.
  • Повторите этот шаг для каждого расширения, которое будут иметь сценарии.
  • Теперь перейдите в раздел HKEY_CLASSES_ROOT. Создайте раздел с именем из предыдущего шага, например: .php.
  • Присвойте значение по умолчанию ("default value"): phpfile.
  • Повторите шаг для каждого расширения PHP-сценариев, как и ранее.
  • Создайте раздел phpfile в разделе HKEY_CLASSES_ROOT со значением ц,, умолчанию: «PHP Script».
  • Создайте в этом разделе раздел «Shell», в нем «open», а в нем «command».
  • Присвоите разделу значение по умолчанию — путь к файлу php.exe, например; c:\php\php.exe -q %1 (не забывайте про *1).
  • Закройте Regedit. Если используется PWS, то перезагрузите Windows.

Пользователи us 3 могут также использовать программу конфигурирования http://www.genusa.com/iis/iiscfg.html. PWS 4 позволяет использовать Рнр в виде модуля ISAT4.

Windows NT и IIS 4/5

  • Откройте Диспетчер служб Интернета (консоль ММС — Internet Service Manager нз раздела Программы > Администрирование) и выберите тот сериер WCD| который необходимо конфигурировать.
  • Откройте панель свойств, вкладку Домашний каталог (Home Directory), Виртуальные каталоги (Virtual Directory) или Directory.
  • Нажмите кнопку Конфигурирование, затем выберите вкладку Арр Mappings.
  • Для CGI ьерсии. Нажмите кнопку Добавить, введите расширение (Extension) файлов РНР, и укажите путь к интерпретатору (Executable) c:\path-to-php-dir\php.exe %s %s. Не забудьте про *s *s в конце.
  • Для ISAPI версии. Имя интерпретатора должно быть c:\path-to-php-dir\php4isapi.dn.
  • Повторите шаг для каждого из расширений.
  • Для CGI Версии. Установите требуемую политику безопасности для php.exe.
  • Для ISAPJ версии. Перезапустите web-сервер, чтобы загрузить php4isapi.dll.

Windows 9x/NT и Apache 1.3.x

Рекомендуется ознакомиться с документацией Apache.

Добавьте или измените имеющиеся (обычно они закомментированы) директивы в файле конфигурации httpd.conf (или srm.conf) для запуска версии CGI PHP.

  • Каталог PHP: ScriptAlias /php/ "c:/path-to-php-d1r/".
  • Расширения PHP-сценариев: AddType application/x-httpd-php .php .phtml.
  • Запуск интерпретатора: Action application/x-httpd-php "/php/php.exe".

Если необходимо запускать PHP как ISAPI-модуль сервера, необходимо скопировать файл php4ts.dll в каталог windows/system (для Windows 9х/Ме) или winnt/system32 (для Windows NT/2000). А затем добавить в файл конфигурации httpd.conf следующие строки:

  • LoadModule php4_modu1e с:/php/sapi/php4apache.dll
  • AddType application/x-httpd-php .php .phtml

Заметьте, что в Win-Apache вес обратные слеши должны писаться как прямые, например: c:/directory/file.ext вместо c:\directory\ file.ext.

Компиляция для Windows

Что для этого требуется?

  1. Для компиляции должен быть установлен Microsoft Visual C++ версии 6 (возможно и 5, но не рекомендуется).
  2. Необходим комплект эмулятора утилит GNU для Windows Cyg-win, который можно загрузить со многих сайтов (например: http:// sources, redhat.com/cygwin/download.html).
  3. С сайта РНР следует загрузить набор файлов в архиве http://www. php.net/extra/win32build.zip.
  4. А также библиотеку работы с именами DNS http://www.php.net/ extra/bindlib_w32.zip. Это замена библиотеки resolv.lib из архива win32build.zip.
  5. Для распаковки архивов, естественно, нужен разархиватор unzip.
  6. И конечно, необходим сам пакет исходных кодов РНР. Его можно загрузить с сервера РНР CVS (см. инструкции на странице http:// www.php.net/anoncvs.php). Но не стоит забывать, что там размещается версия, находящаяся на стадии разработки и отладки, и она может работать нестабильно. Пакет стабильной версии можно в архиве скачать с адреса: http://www.php.net/downloads.php, а промежуточные версии — с адреса: http://snaps.php.net/.

Подготовка к компиляции

Установите Cygwin, запустив setup.exe. Выберите установочный каталог, например C:\cygnus. Обычно установка успешно выполняется в автоматическом режиме.

Создайте каталог, в котором вы будете проводить компиляцию (например: C:\PHP-win32build). Разархивнрупте в нее пакет исходных кодов РНР. Скопируйте туда распакованный архив win32build.zip.

Запустите Microsoft Visual C++, выберите пункт Options меню Tools. В диалоговой панели выберите вкладку directories. Последовательно установите для каждого пункта раскрывающегося списка: Executables, Includes и Library files соответственно каталоги: cygwin\bin, win32build\ include и win32build\lib (для добавления пункта выделите пустую строку в конце списка и введите путь). Обычно каталоги имеют следующие имена: c:\cygnus\bin, c:\php-win32build\include, c:\php-win32build\lib. Нажмите ОК.

Создайте другой каталог и распакуйте туда bindlib_w32.zip. В VC++ выберите bindlib.dsw (Файл > Open Workspace). Выберите один из вариантов компиляции (Build > Set Active Configuration): отладочный (bindlib — Win32 Debug) или нет (bindlib — Win32 Release). Скомпилируйте библиотеку (Build > Rebuild All)1. Скопируйте полученный файл resolv.lib (из каталога Debug или Release), заменяя им имеющийся в дистрибутиве (в каталоге С:\ PHP-win32build\lib).

Компиляция

Чтобы скомпилировать CGI-всрсию РНР, откройте в VC++ проект win32\php4ts.dsw (Файл > Open Workspace). Выберите вариант компиляции (Build > Set Active Configuration), например php4ts — Win32 Release_TS. Скомпилируйте файлы php.exe и php4ts.dll (Build > Rebuild All или Build > Build php.exe).

Возможно, у вас возникнет следующая ошибка: при попытке открытия в VC++ файла Tsrm.dsw будет выдано сообщение о том, что файл имеет неправильный формат или поврежден. Это происходит из-за различия в форматах текстовых файлов Unix и Windows: в Unix завершение строк помечается символом «\п>>, а в Windows двумя символами — «\г\п». Исправить это легко — откройте файл Tsrm.dsw в MS Word и сохраните его под тем же именем (в результате чего будут автоматически преобразованы символы-завершители).

Подобным образом можно скомпилировать РНР в виде модуля для web-сервера Microsoft IIS или какого-либо другого (просто измените вариант компиляции).

Модули расширения компилируются по отдельности (они размещаются в каталоге ext).


Синтаксис языка и операторы <ul designtimesp=19653> <li class="Menu" designtimesp=19654><A href="#1" DESIGNTIMEURL="#1" DESIGNTIMESP=19655><FONT face=Tahoma size=2 DESIGNTIMESP=19656>Синтаксис языка и операторы</FONT> </A><FONT face=Tahoma size=2 DESIGNTIMESP=19657> </FONT> <li class="Menu" designtimesp=19658><A href="#2" DESIGNTIMEURL="#2" DESIGNTIMESP=19659><FONT face=Tahoma size=2 DESIGNTIMESP=19660>Типы данных</FONT> </A><FONT face=Tahoma size=2 DESIGNTIMESP=19661> </FONT> <li class="Menu" designtimesp=19662> <A href="#3" DESIGNTIMEURL="#3" DESIGNTIMESP=19663><FONT face=Tahoma size=2 DESIGNTIMESP=19664>Переменные</FONT></A><FONT face=Tahoma size=2 DESIGNTIMESP=19665> </FONT> <li class="Menu" designtimesp=19666> <A href="#4" DESIGNTIMEURL="#4" DESIGNTIMESP=19667><FONT face=Tahoma size=2 DESIGNTIMESP=19668>Константы</FONT></A><FONT face=Tahoma size=2 DESIGNTIMESP=19669> </FONT> <li class="Menu" designtimesp=19670> <A href="#5" DESIGNTIMEURL="#5" DESIGNTIMESP=19671><FONT face=Tahoma size=2 DESIGNTIMESP=19672>Выражения </FONT> </A> <li class="Menu" designtimesp=19673> <A href="#6" DESIGNTIMEURL="#6" DESIGNTIMESP=19674><FONT face=Tahoma size=2 DESIGNTIMESP=19675>Операторы</FONT></A><FONT face=Tahoma size=2 DESIGNTIMESP=19676> </FONT> <li class="Menu" designtimesp=19677> <A href="#7" DESIGNTIMEURL="#7" DESIGNTIMESP=19678><FONT face=Tahoma size=2 DESIGNTIMESP=19679>If — Управляющие структуры </FONT> </A> <li class="Menu" designtimesp=19680> <A href="#8" DESIGNTIMEURL="#8" DESIGNTIMESP=19681><FONT face=Tahoma size=2 DESIGNTIMESP=19682>Пользовательские функция </FONT> </A> <li class="Menu" designtimesp=19683> <A href="#9" DESIGNTIMEURL="#9" DESIGNTIMESP=19684><FONT face=Tahoma size=2 DESIGNTIMESP=19685>Классы </FONT> </A> <li class="Menu" designtimesp=19686> <A href="#10" DESIGNTIMEURL="#10" DESIGNTIMESP=19687><FONT face=Tahoma size=2 DESIGNTIMESP=19688>Ссылки </FONT> </A> </li> </ul> <P class="Title_2" DESIGNTIMESP=19689> <a name="1" designtimesp=19690></a><FONT face=Tahoma size=2 DESIGNTIMESP=19691>Синтаксис языка и операторы </FONT> </P> <P DESIGNTIMESP=19692><FONT face=Tahoma size=2 DESIGNTIMESP=19693>В данном разделе описываются все возможности языка, которые имеет РНР версии 4.0.6. Представленная информация ориентирована на уровень знании читателя, имеющего навыки программирования. Изложенный материал позволяет в предельно короткий срок изучить все возможности языка, в дальнейшем книга может использоваться в качестве справочного пособия. </FONT> </P> <P class="Title_3" DESIGNTIMESP=19694><FONT face=Tahoma size=2 DESIGNTIMESP=19695>Теги, маркирующие РНР-сценарий </FONT> </P> <P DESIGNTIMESP=19696><FONT face=Tahoma size=2 DESIGNTIMESP=19697>Сценариям Р?1Р обычно присваивают расширения .php, .phtml, .php3 (для версии 3). Фактически это html-страницы, внутрь которых внедрен PHP-код, ограниченный одной из четырех пар тегов. </FONT> </P> <P DESIGNTIMESP=19698><FONT face=Tahoma size=2 DESIGNTIMESP=19699>Рекомендуется использовать теги &lt;?РНР и ?&gt;. Сокращенной формой является пара &lt;? и ?&gt;; для того, чтобы се использовать, необходимо в файле конфигурации php.ini установить параметр short_open_tag=0rr или перекомпилировать РНР с параметром — enable-short-tags. Эта форма ограничителей может конфликтовать с синтаксисом XHTML. Ограничители в стиле html &lt;script language="php"&gt; и &lt;/script&gt; используются для того, чтобы html-редакторы (например, FrontPage) могли адекватно интерпретировать PHP-код и отличать его от html (для HomeSite это не актуально — он способен воспринимать все четыре формы ограничителей). ASP-ограничители &lt;% и%&gt; можно использовать, если в файле конфигурации php.ini установить параметр asp_tags= On, при этом становится возможным использование функции упрощенного вывода значения переменной &lt;%= $value!%&gt; (ее также можно использовать с сокращенной формой тегов, например &lt;? = $value?&gt;).< /FONT> </P> <P class="Title_3" DESIGNTIMESP=19700><FONT face=Tahoma size=2 DESIGNTIMESP=19701>Разделение инструкций </FONT> </P> <P DESIGNTIMESP=19702><FONT face=Tahoma size=2 DESIGNTIMESP=19703>Каждая инструкция РНР (подобно языкам С и Perl) должна завершаться точкой с запятой. Например:</FONT> </P> <pre designtimesp=19704><P DESIGNTIMESP=19705><FONT face=Tahoma size=2 DESIGNTIMESP=19706> &lt;?php echo "Это ": echo " Пример!"; ?&gt;</FONT> </P><FONT face=Tahoma size=2 DESIGNTIMESP=19707> </FONT> </pre> <P DESIGNTIMESP=19708><FONT face=Tahoma size=2 DESIGNTIMESP=19709>Если инструкция одна, этого не требуется. Например: </FONT> <pre designtimesp=19710><P DESIGNTIMESP=19711><FONT face=Tahoma size=2 DESIGNTIMESP=19712> &lt;?php echo "Это Пример! " ?&gt;</FONT> </P><FONT face=Tahoma size=2 DESIGNTIMESP=19713> </FONT> </pre> <P class="Title_3" DESIGNTIMESP=19714><FONT face=Tahoma size=2 DESIGNTIMESP=19715>Комментарии </FONT> </P> <P DESIGNTIMESP=19716><FONT face=Tahoma size=2 DESIGNTIMESP=19717>PHP поддерживает три стиля комментариев: С, C++ и Unix. </FONT> </P> <pre designtimesp=19718><FONT face=Tahoma size=2 DESIGNTIMESP=19719>&lt;?php </FONT> <P DESIGNTIMESP=19720></P> <FONT face=Tahoma size=2 DESIGNTIMESP=19721> echo "Привет!". <br designtimesp=19722>// Однострочный комментарий C++ стиля /* Это много- /* Вложенные комментарии недопустимы */ строчный комментарий */ echo "Еще привет!".<br designtimesp=19723> # Коментарий в стиле Unix-оболочек ?&gt;</FONT> </pre> <P class="Title_2" DESIGNTIMESP=19724> <a name="2" designtimesp=19725></a><FONT face=Tahoma size=2 DESIGNTIMESP=19726>Типы данных </FONT> </P> <P DESIGNTIMESP=19727><FONT face=Tahoma size=2 DESIGNTIMESP=19728>РНР поддерживает пять основных типов данных1: целые числа, дробные числа, строки, массивы и объекты. В документации РНР не указано, но имеется также логический тип (boolean): TRUE, FALSE; и специальный тип NULL для пустых2 (либо неинициализированных значений). Обычно тип переменной не указывается, а автоматически определяется интерпретатором во время исполнения. Можно принудительно задать тип переменной. </FONT> </P> <P class="Title_3" DESIGNTIMESP=19729><FONT face=Tahoma size=2 DESIGNTIMESP=19730>Целые числа </FONT> </P> <P DESIGNTIMESP=19731><FONT face=Tahoma size=2 DESIGNTIMESP=19732>Целые числа указываются следующим образом: </FONT> </P> <pre designtimesp=19733><FONT face=Tahoma size=2 DESIGNTIMESP=19734>$а = 1234; # десятичное целое </FONT > <P DESIGNTIMESP=19735></P> <FONT face=Tahoma size=2 DESIGNTIMESP=19736> $а = -123; # отрицательное число $а = 0123; # восьмеричное число<br designtimesp=19737> (равно десятичному 83) $а = 0x12; # шестнадцатеричное число <br designtimesp=19738>(равно десятичному 18) </FONT> </pre> <P DESIGNTIMESP=19739><FONT face=Tahoma size=2 DESIGNTIMESP=19740>Размерность целых чисел зависит от платформы, обычно она составляет 32 бита (+ 2 млн). </FONT> </P> <P class="Title_3" DESIGNTIMESP=19741><FONT face=Tahoma size=2 DESIGNTIMESP=19742>Дробные числа </FONT> </P> <P DESIGNTIMESP=19743><FONT face=Tahoma size=2 DESIGNTIMESP=19744>Дробные числа (doubles) могут быть инициализированы следующим образом:</FONT> </P> <pre designtimesp=19745><P DESIGNTIMESP=19746><FONT face=Tahoma size=2 DESIGNTIMESP=19747> $а = 1 234; $а = 1.2еЗ. // 1.2еЗ = = 1200 &lt; /P &gt; &lt; /P &gt; < /FONT > < /P > </pre> <P DESIGNTIMESP=19748><FONT face=Tahoma size=2 DESIGNTIMESP=19749>Размерность дробных чисел зависит от платформы, обычная максимальная точность -1.8е308 или приблизительно 14 десятичных значащих разрядов (64 бита в формате IEEE). В процессе арифметических преобразований неизбежна потеря точности (например, выражение floor((0.1+0.7)*10) возвратит 7 вместо ожидаемых 8, так как фактически ((0.1+0.7)*10)=7,99999999...). Кроме того, невозможно точное сопоставление иррациональных чисел (например, 1/3= 0.3333333). Поэтому нельзя доверять точности последней цифры дробных чисел, а также сравнивать их без округления. Если требуется более высокая точность вычислений, обратитесь к функциям GMP или BCMath.< /FONT> </P> <P class="Title_3" DESIGNTIMESP=19750><FONT face=Tahoma size=2 DESIGNTIMESP=19751>Строки </FONT> </P> <P DESIGNTIMESP=19752><FONT face=Tahoma size=2 DESIGNTIMESP=19753>Строки могут быть обозначены двумя парами ограничителей (одинарные и двойные кавычки). При использовании одинарных кавычек строка воспринимается «как есть»; единственная замена, которая производится в строке, — это трансформация «\\» и «V» соответственно в «\» и «'», выполняемая для того, чтобы можно было использовать эти символы, если они обозначают самих себя. </FONT> </P> <P DESIGNTIMESP=19754><FONT face=Tahoma size=2 DESIGNTIMESP=19755>Использование двойных кавычек позволяет интерпретатору заменить указанную в строке переменную на ее значение, например: </FONT> </P> <pre designtimesp=19756><P DESIGNTIMESP=19757><FONT face=Tahoma size=2 DESIGNTIMESP=19758>$а=5: echo "а=$а"; // напечатает «а= 5»< /FONT> </P></pre> <P DESIGNTIMESP=19759><FONT face=Tahoma size=2 DESIGNTIMESP=19760>Чтобы вывести после значения переменной символы без разделения их пробелами, используйте заключение переменной в фигурные скобки. </FONT> <pre designtimesp=19761><P DESIGNTIMESP=19762><FONT face=Tahoma size=2 DESIGNTIMESP=19763> $п=1: echo "$nst": // такой переменной не существует echo "{$n}st"; // выведет: lst < /FONT> </P></pre> <P DESIGNTIMESP=19764><FONT face=Tahoma size=2 DESIGNTIMESP=19765>Для подстановки значений свойств вложенных объектов и многомерных массивов также используйте фигурные скобки или конкатенацию. </FONT> <pre designtimesp=19766><P DESIGNTIMESP=19767><FONT face=Tahoma size=2 DESIGNTIMESP=19768> echo "{$obj-&gt;subobj-&gt;prop} {$a[l][2]['fnrsf]} ".</FONT> </P><FONT face=Tahoma size=2 DESIGNTIMESP=19769> </FONT> </pre> <P DESIGNTIMESP=19770><FONT face=Tahoma size=2 DESIGNTIMESP=19771>Обратный слеш «\» (так же, как в С и Perl) используется для подстановки специальных символов. </FONT> </P> <TABLE FRAME="box" RULES="all" BORDER="1" DESIGNTIMESP=19772> <TR DESIGNTIMESP=19773> <TD DESIGNTIMESP=19774><FONT face=Tahoma size=2 DESIGNTIMESP=19775>Последовательность</FONT></TD> <TD DESIGNTIMESP=19776><FONT face=Tahoma size=2 DESIGNTIMESP=19777>Означает</FONT></TD> </TR> <TR DESIGNTIMESP=19778> <TD DESIGNTIMESP=19779><FONT face=Tahoma size=2 DESIGNTIMESP=19780>\n'</FONT></TD> <TD DESIGNTIMESP=19781><FONT face=Tahoma size=2 DESIGNTIMESP=19782>Переход на новую строку (LF или ОхОА в ASCII)</FONT> </TD> </TR> <TR DESIGNTIMESP=19783> <TD DESIGNTIMESP=19784><FONT face=Tahoma size=2 DESIGNTIMESP=19785>\r</FONT></TD> <TD DESIGNTIMESP=19786><FONT face=Tahoma size=2 DESIGNTIMESP=19787>Возврат к началу строки (CR или OxOD в ASCII)</FONT> </TD> </TR> <TR DESIGNTIMESP=19788> <TD width="161" DESIGNTIMESP=19789> <P DESIGNTIMESP=19790><FONT face=Tahoma size=2 DESIGNTIMESP=19791>\t</FONT></P></TD> <TD width="578" DESIGNTIMESP=19792> <P DESIGNTIMESP=19793><FONT face=Tahoma size=2 DESIGNTIMESP=19794>Горизонтальная табуляция (НТ или 0x09 в ASCII)</FONT> </P></TD> </TR> <TR DESIGNTIMESP=19795> <TD DESIGNTIMESP=19796> <P DESIGNTIMESP=19797><FONT face=Tahoma size=2 DESIGNTIMESP=19798>\\</FONT></P></TD> <TD width="70%" DESIGNTIMESP=19799> <P DESIGNTIMESP=19800><FONT face=Tahoma size=2 DESIGNTIMESP=19801>Обратный слеш</FONT> </P></TD> </TR> <TR DESIGNTIMESP=19802> <TD DESIGNTIMESP=19803> <P DESIGNTIMESP=19804><FONT face=Tahoma size=2 DESIGNTIMESP=19805>\$</FONT></P></TD> <TD DESIGNTIMESP=19806> <P DESIGNTIMESP=19807><FONT face=Tahoma size=2 DESIGNTIMESP=19808>Знак доллара</FONT> </P></TD> </TR> <TR DESIGNTIMESP=19809> <TD DESIGNTIMESP=19810> <P DESIGNTIMESP=19811><FONT face=Tahoma size=2 DESIGNTIMESP=19812>\"</FONT></P></TD> <TD DESIGNTIMESP=19813> <P DESIGNTIMESP=19814><FONT face=Tahoma size=2 DESIGNTIMESP=19815>Двойная кавычка</FONT> </P></TD> </TR> <TR DESIGNTIMESP=19816> <TD DESIGNTIMESP=19817> <P DESIGNTIMESP=19818><FONT face=Tahoma size=2 DESIGNTIMESP=19819>\[0-7]{1,3}</FONT></P></TD> <TD DESIGNTIMESP=19820> <P DESIGNTIMESP=19821><FONT face=Tahoma size=2 DESIGNTIMESP=19822>1-3 восьмеричные цифры после слеша заменяются на корреспондирующий данному ASCII-коду символ</FONT> </P></TD> </TR> <TR DESIGNTIMESP=19823> <TD DESIGNTIMESP=19824> <P DESIGNTIMESP=19825><FONT face=Tahoma size=2 DESIGNTIMESP=19826>\x[0-9A-Fa-f]{l,2)</FONT></P></TD> <TD DESIGNTIMESP=19827> <P DESIGNTIMESP=19828><FONT face=Tahoma size=2 DESIGNTIMESP=19829>1-2 шестнадцатеричные цифры после \х заменяются на корреспондирующий данному ASCII-коду символ</FONT> </P></TD> </TR> </TABLE> <P DESIGNTIMESP=19830><FONT face=Tahoma size=2 DESIGNTIMESP=19831>Если после слеша стоит иной сиМbол, будет выдано предупреждение (если выдача предупреждений разрешена). </FONT> </P> <P DESIGNTIMESP=19832><FONT face=Tahoma size=2 DESIGNTIMESP=19833>Иной способ обозначения длинных строк — это использование синтаксиса «here doc1 цитирование»: после последовательности &lt;« указывается идентификатор, и все последующие строки, вплоть до того как вновь встретится этот идентификатор (он должен стоять в начальной позиции строки), считаются текстом строки. К идентификатору применяются те же требования, как и к именам переменных (он должен начинаться с буквы или «_» и содержать только алфавитно-цифровые символы или «_»). Цитирование аналогично использованию двойных кавычек, но кавычки здесь обозначают самих себя. Такой синтаксис широко используется в Perl. </FONT> </P> <P DESIGNTIMESP=19834><FONT face=Tahoma size=2 DESIGNTIMESP=19835></FONT> <pre designtimesp=19836><FONT face=Tahoma size=2 DESIGNTIMESP=19837> &lt;?php </FONT> <P DESIGNTIMESP=19838></P> <FONT face=Tahoma size=2 DESIGNTIMESP=19839> $str = &lt;«fndOfSl Пример многострочной строки синтаксиса «heredoc». EndOfSl. /* Пример посложнее с переменными. */ class foo { echo " строка 1 строка 2 var $foo: var $bar: function foo() { // конструктор класса $tms-&gt;foo = 'Foo'. $this-&gt;t&gt;ar = arrayCBarl1. 'Ваг2'. 'ЕагЗ'): } } $foo = new foot); $name = 'Игорь' : echo «&lt; EndOfS? Мое имя - "Sname". <br designtimesp=19840>Значение переменной класса $foo-&gt;foo. Еще одно значение другой <br designtimesp=19841>переменной класса {$foo-&gt;bar[l]}. <br designtimesp=19842>Заглавная 'А': \х41 EndOfS2; -&gt;&gt;</FONT> </pre> <P DESIGNTIMESP=19843><FONT face=Tahoma size=2 DESIGNTIMESP=19844></FONT></P> <P DESIGNTIMESP=19845><FONT face=Tahoma size=2 DESIGNTIMESP=19846>Строки можно объединять с помощью оператора конкатенации — точка, например:</FONT> </P> <pre designtimesp=19847><P DESIGNTIMESP=19848><FONT face=Tahoma size=2 DESIGNTIMESP=19849> echo "Значение а = ". $а "\n" "И т.д.";&lt; /P &gt;&lt; /P &gt; < /FONT > < /P > </pre><FONT face=Tahoma size=2 DESIGNTIMESP=19850>Оператор сложения «+» не объединяет строки! </FONT> <P DESIGNTIMESP=19851></P> <P DESIGNTIMESP=19852><FONT face=Tahoma size=2 DESIGNTIMESP=19853>Строку можно использовать как нумерованный массив символов, используя С-подобный синтаксис. </FONT> <pre designtimesp=19854><P DESIGNTIMESP=19855><FONT face=Tahoma size=2 DESIGNTIMESP=19856> &lt;?php // Примеры работы со строками $str = "This is "; $str = $str . " a string"; // $str = "This is a string" $str .= " with a newline at the end An", // $str = "This is a string with a newline at the end.\n" $niJ!II = 9. $str = "Значение- $num"; // подставляется значение $str = 'Переменная $num'; // значение НЕ подставляется Sstr = 'This is a string '; $first = $str[0]; // первый символ строки - 'Т' $1ast = &#163;str[strlen($str)-l];<br designtimesp=19857> // последний символ строки - пробел ?&gt; </FONT> </P></pre> <P class="Text_Bold" DESIGNTIMESP=19858><FONT face=Tahoma size=2 DESIGNTIMESP=19859>Преобразование типа строк </FONT> </P> <P DESIGNTIMESP=19860><FONT face=Tahoma size=2 DESIGNTIMESP=19861>При преобразовании строки в числовое значение результирующая неременная будет иметь тип дробного числа, если строка содержит символы «.», «е», «Е»; в противном случае результирующая пере-\ менная окажется целочисленной. Значение определяется по начальным цифрам строки, а если строка начинается с букв, ее числовое значение будет равно нулю. Правильным строковым представлени-_—s ем числа считается знак («-» или «+», который может отсутствовать у положительных чисел), за которым следует последовательность чисел, среди которых могут встречаться точка и/или буква «е». Незначащий ноль может быть пропущен. </FONT> </P> <pre designtimesp=19862><P DESIGNTIMESP=19863><FONT face=Tahoma size=2 DESIGNTIMESP=19864> $а = 1 + "10 5"; // $а - дробное (11.5) $а = 1 + "-1.3еЗ": // $а - дробное (-1299) $а = 1 + "-.ЗеЗ"; // $а - дробное (-299) $а = 1 + "1-1.ЗеЗ"; // $а - целое (1) $а = 1 + "тдогЗЗЗ": // $а - целое (1) $а - 1 + "10 Разных Штук "; // $а - целое (11) $а = "10.0 у е. " + 1: // $а - целое (11) $а = "10.0 у.е " + 1.0: // $а - дробное (11) < /FONT > </P></pre> <P DESIGNTIMESP=19865><FONT face=Tahoma size=2 DESIGNTIMESP=19866>Как видите, преобразование строк в числа происходит при осуществлении с ними арифметических операций, и если строка — это первый элемент выражения, тип ее преобразования зависит от типа последующих чисел. Если вы хотите проверить примеры, приведенные выше, добавьте строку: </FONT> </P> <pre designtimesp=19867><FONT face=Tahoma size=2 DESIGNTIMESP=19868> echo "\$а == $а: тип (" gettype ($а) . ")&lt;br&gt;\n"; < /FONT > </pre> <P class="Title_3" DESIGNTIMESP=19869><FONT face=Tahoma size=2 DESIGNTIMESP=19870>Массивы </FONT> </P> <P DESIGNTIMESP=19871><FONT face=Tahoma size=2 DESIGNTIMESP=19872>Массивы могут быть и действовать как простые индексированные списки (их называют векторами — в них индексом является число) или как ассоциативные списки (их называют хеш-таблицами — в них индексом служит строковое значение). Как в С и Perl, элементы массива нумеруются, начиная с 0, а не с 1. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=19873><FONT face=Tahoma size=2 DESIGNTIMESP=19874>Одномерные массивы </FONT> </P> <P DESIGNTIMESP=19875><FONT face=Tahoma size=2 DESIGNTIMESP=19876>Массив можно инициализировать либо простым присваиванием ему новых элементов, либо явно, используя функцию аггауО. При добавлении в массив элемента без указания его индекса он заносится в конец списка. </FONT> <pre designtimesp=19877><P DESIGNTIMESP=19878><FONT face=Tahoma size=2 DESIGNTIMESP=19879> $a[J = "abc". /, $а[0] = "abc"; $а[1] = "def": $а[0] = "абв"; // заменить уже имеющийся элемент *а[] = "gh"; // $а[2] - "abc"; rf пример инициализации нумерованного массива' <br designtimesp=19880>$м = array ("первый", "седьмой". 86. 22): # пример инициализации ассоциативного <br designtimesp=19881>массива: $с["нулевой"] = "АБВ": $С["первый"] = 444; $с[99] = 4. // эквивалентно записи $с["99"]= 4: //(это. тем не менее - третий элемент) # аналог примера выше: $с = аггау( "нулевой "= &gt; " АБВ ". "первый" '&gt; 444. 99 = &gt; 4 ): < /FONT > </P></pre> <P DESIGNTIMESP=19882><FONT face=Tahoma size=2 DESIGNTIMESP=19883>Массивы можно затем сортировать. Число элементов массива можно узнать, используя функцию countO. Для поэлементного перебора значений ассоциативного массива используются функции next (), prev() и each(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=19884><FONT face=Tahoma size=2 DESIGNTIMESP=19885>Многомерные массивы</FONT> </P> <pre designtimesp=19886><P DESIGNTIMESP=19887><FONT face=Tahoma size=2 DESIGNTIMESP=19888> $а[][0] = $f: I двухмерный $а[1][0] = tf: # двухмерный $а["аа"][2] = $f. # возможно комбинировать $а[3]["бб"] = $f. # скалярные и ассоциативные индексы $а["ааа"][4]["ббб"][0] = $f:# четырехмерный! $а = агтау( "апельсин" = &gt; аггау( "цвет" = &gt; "оранжевый". "вкус" = &gt; "сладкий". ). "лимон" = &gt; аггау( "цвет" =&gt; "желтый". "вкус" = &gt; "кислый". ) ): echo $а["апельсин"]["вкус"]:# выведет "сладкий" < /FONT > </P></pre> <P DESIGNTIMESP=19889><FONT face=Tahoma size=2 DESIGNTIMESP=19890>Для правильной подстановки значений многомерных массивов используйте оператор конкатенации или заключайте имя переменной в фигурные скобки. Иначе функция вывода будет воспринимать как относящиеся к массиву только первые скобки, а последующие — как текст. </FONT> <pre designtimesp=19891><FONT face=Tahoma size=2 DESIGNTIMESP=19892> </FONT> <P DESIGNTIMESP=19893><FONT face=Tahoma size=2 DESIGNTIMESP=19894> $а[3]['6бб'] = 'Слово': echo "Ошибочка: $а[3][ббб]": // Выведет «Ошибочка Аггау[ббб]» echo "Работает: " . $а[3][ббб]. // Выведет «Работает: Слово» echo "Работает {$а[3][ббб]}": // Выведет «Работает: Слово» < /FONT > </P></pre> <P class="Title_3" DESIGNTIMESP=19895><FONT face=Tahoma size=2 DESIGNTIMESP=19896>Объекты </FONT> </P> <P DESIGNTIMESP=19897><FONT face=Tahoma size=2 DESIGNTIMESP=19898>Объекты создаются на основе заранее определенных классов с помощью оператора new:</FONT> </P> <pre designtimesp=19899><P DESIGNTIMESP=19900><FONT face=Tahoma size=2 DESIGNTIMESP=19901> &lt;?php class foo { function do_foo() { echo "Doing foo ". } } Ibar = new foo. . $bar-&gt;do_foo(). ?&gt; < /FONT > </P></pre> <P class="Title_3" DESIGNTIMESP=19902><FONT face=Tahoma size=2 DESIGNTIMESP=19903>Определение типа </FONT> </P> <P DESIGNTIMESP=19904><FONT face=Tahoma size=2 DESIGNTIMESP=19905>PHP не требует явного указания типа переменной, тип определяется интерпретатором во время выполнения и зависимости от того, как переменная используется (и какие значения ей присваиваются). Обычно такие преобразования интуитивно понятны (например, если одно из слагаемых дробное число, то результат — дробное число). Сами переменные не меняют своего типа, изменяется их восприятие. Тип изменяется только при присваивании или изменении значения. </FONT> </P> <pre designtimesp=19906><P DESIGNTIMESP=19907><FONT face=Tahoma size=2 DESIGNTIMESP=19908> $foo = "О": // $foo - строка (ASCII 48) $foo++; // $foo - строка "1" (ASCII 49) $foo += 1; // $foo - целое (2) $foo = $foo +1.3: // $foo - дробное (3 3) Sfoo = 5 + "10 Круглых кубиков": // $foo - целое (15) < /FONT > </P></pre> <P DESIGNTIMESP=19909><FONT face=Tahoma size=2 DESIGNTIMESP=19910>Что касается автоматических преобразований массивов, то здесь возникают неоднозначности. </FONT> <pre designtimesp=19911><P DESIGNTIMESP=19912><FONT face=Tahoma size=2 DESIGNTIMESP=19913> $а = 1. // $а - целое число $а[0] = "f": // $a становится массивом &lt; /P &gt; &lt; /P &gt; < /FONT > < /P > </pre> <P DESIGNTIMESP=19914><FONT face=Tahoma size=2 DESIGNTIMESP=19915>Помните, что строки могут рассматриваться как массивы символов. Как поведет себя следующий код: </FONT> <pre designtimesp=19916><P DESIGNTIMESP=19917><FONT face=Tahoma size=2 DESIGNTIMESP=19918> $а = "Г; // $а - это строка $а[0] = "f": // станет ли $а массивом или останется строкой? < /FONT > </P></pre> <P DESIGNTIMESP=19919><FONT face=Tahoma size=2 DESIGNTIMESP=19920>В некоторых версиях РНР 4 результат этой операции не определен. Ожидается, что проблема будет скоро разрешена. </FONT> </P> <P DESIGNTIMESP=19921><FONT face=Tahoma size=2 DESIGNTIMESP=19922>Большинство функций возвращает значение FALSE при ошибке, а в случае нормального завершения — значение, отличное от FALSE. Для того чтобы можно было отличить значение FALSE от пустой строки или нуля, используйте оператор идентичности (а не равенства, который автоматически преобразует тип). </FONT> </P> <pre designtimesp=19923><P DESIGNTIMESP=19924><FONT face=Tahoma size=2 DESIGNTIMESP=19925> &lt;? $1=-2: $b=TRUE: // переменная $ZZZ не существует 1f($i) echo"! — TRU&#163;\n". else echo"! != TRUEXn": if($i — TRUE) echo"! — TRUEVn": else echo"! !== TRUEVn": if($b — TRUE) echo"b === TRUE\n"; else echo"b != = TRUE\n"; if($ZZZ= == null)echo"ZZZ === null\n"; else echo"ZZZ !== null\n"; ?&gt; < /FONT> </P></pre> <P DESIGNTIMESP=19926><FONT face=Tahoma size=2 DESIGNTIMESP=19927>Приведенный сценарий должен вывести</FONT> </P> <pre designtimesp=19928><P DESIGNTIMESP=19929><FONT face=Tahoma size=2 DESIGNTIMESP=19930> i == TRUE т !== TRUE b = == TRUE ZZZ — null&lt; /P &gt;&lt; /P &gt;< /FONT > < /P > </pre> <P class="Text_Bold" DESIGNTIMESP=19931><FONT face=Tahoma size=2 DESIGNTIMESP=19932>Явное приведение типов </FONT> </P> <P DESIGNTIMESP=19933><FONT face=Tahoma size=2 DESIGNTIMESP=19934>Приведение типов сходно с С-стилем: тип переменной указывается перед исходной переменной. </FONT> <pre designtimesp=19935><P DESIGNTIMESP=19936><FONT face=Tahoma size=2 DESIGNTIMESP=19937> $foo = 10; // $foo is an integer $foo = (boolean) $foo. <br designtimesp=19938>// теперь значение $foo = 1 $bar = (double) $foo: // $bar is a double &lt; /P &gt; &lt; /P &gt; < /FONT > < /P > </pre> <P DESIGNTIMESP=19939><FONT face=Tahoma size=2 DESIGNTIMESP=19940>Типы обозначаются как: (int), (integer) для целых; (real), (double), (float) для дробей; (string) для строк; (array) для массивов; (object) для объектов. Для логических значений: (bool) или (boolean). Тип также можно изменить функцией settype(). </FONT> </P> <P DESIGNTIMESP=19941><FONT face=Tahoma size=2 DESIGNTIMESP=19942>Заметьте, некоторые виды преобразований могут быть курьезными. </FONT> </P> <P DESIGNTIMESP=19943><FONT face=Tahoma size=2 DESIGNTIMESP=19944>При преобразовании скалярного1 массива или строки в массив переменная становится нулевым элементом массива. </FONT> <pre designtimesp=19945><P DESIGNTIMESP=19946><FONT face=Tahoma size=2 DESIGNTIMESP=19947> $var = 'ciao1: $arr = (array) $var. echo $згг[0]. // выводит 'ciao' < /FONT > </P></pre> <P DESIGNTIMESP=19948><FONT face=Tahoma size=2 DESIGNTIMESP=19949>При преобразовании скалярного массива или строки в объект переменная становится свойством объекта с именем scalar: </FONT> <pre designtimesp=19950><P DESIGNTIMESP=19951><FONT face=Tahoma size=2 DESIGNTIMESP=19952> $var = 'ciao': $obj = (object) $var. echo $obj-&gt;scalar: // выводит 'ciao' < /FONT > </P></pre> <P class="Title_2" DESIGNTIMESP=19953> <a name="3" designtimesp=19954></a><FONT face=Tahoma size=2 DESIGNTIMESP=19955>Переменные </FONT> </P> <P DESIGNTIMESP=19956><FONT face=Tahoma size=2 DESIGNTIMESP=19957>Переменные помечаются знаком доллара, за которым следует имя переменной (как в Perl). Имена переменных чувствительны к регистру (например, $а и $А — разные переменные); первым символом имени должна быть буква или знак подчеркивания «_», за которым следует любая комбинация буквенно-цифровых символов и/или «_». Буквы могут быть латинскими: a-z, A-Z, или ASCII-символами с кодами от 127 до 255. Заметьте, PHP, в отличие от многих компиляторов (языков), позволяет использовать символы кириллицы в именах переменных. </FONT> <pre designtimesp=19958><P DESIGNTIMESP=19959><FONT face=Tahoma size=2 DESIGNTIMESP=19960> $var = "Петя": $Var = "Вася"; echo "$var. $Var"; <br designtimesp=19961>// напечатает "Петя. Вася" $4site = 'not yet': <br designtimesp=19962>// Ошибка; имя начинается с цифры $_4site = 'not yet1. <br designtimesp=19963>// правильно: начинается с подчеркивания $переменная - 'mansikka', <br designtimesp=19964>// правильно: русские буквы разрешены. </FONT> </P></pre> <P DESIGNTIMESP=19965><FONT face=Tahoma size=2 DESIGNTIMESP=19966>РПР 4 позволяет передавать значения переменных не только копированием, но и «по ссылке». Тогда новая переменная будет просто ссылаться на старую и станет ее псевдонимом (alias). Изменения одной из них будут так же отражаться и на другой. </FONT> </P> <P DESIGNTIMESP=19967><FONT face=Tahoma size=2 DESIGNTIMESP=19968>Чтобы связать по ссылке две переменных, перед исходной переменной ставится амперсант «&amp;».</FONT> </P> <pre designtimesp=19969><P DESIGNTIMESP=19970><FONT face=Tahoma size=2 DESIGNTIMESP=19971> &lt;?php $а = 'Яяя', $b = &amp;$а: // ссылка на $а. $b = "Это $b". // изменяя $b<br designtimesp=19972> мы одновременно изменяем $а echo $a // Выведет 'Это Яяя' echo $b. // Выведет 'Это Яяя' ?&gt; </FONT> </P></pre> <P DESIGNTIMESP=19973><FONT face=Tahoma size=2 DESIGNTIMESP=19974>Естественно, что ссылка может указывать только на переменную.</FONT> </P> <pre designtimesp=19975><P DESIGNTIMESP=19976><FONT face=Tahoma size=2 DESIGNTIMESP=19977> &lt;?php $foo = 25. $bar = &amp;$foo: // Присваивание допускается $bar - &amp;(24 * 7). // Ошибка; ссылка на <br designtimesp=19978>неименованное значение function test() { return 25.<br designtimesp=19979> // функция возвращает значение, а не ссылку.<br designtimesp=19980> } $bar = StestO. // Ошибка: ?&gt; < /FONT > </P></pre> <P class="Title_3" DESIGNTIMESP=19981><FONT face=Tahoma size=2 DESIGNTIMESP=19982>Предопределенные переменные </FONT> </P> <P DESIGNTIMESP=19983><FONT face=Tahoma size=2 DESIGNTIMESP=19984>Состав предопределенных переменных РНР во многом зависит от серверного ПО и его конфигурации. Не все из них доступны при запуске сценария из командной строки. Чтобы выяснить, какие из переменных доступны, и узнать их значения, воспользуйтесь функцией phpinfo(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=19985><FONT face=Tahoma size=2 DESIGNTIMESP=19986>Переменные РНР </FONT> </P> <P DESIGNTIMESP=19987><FONT face=Tahoma size=2 DESIGNTIMESP=19988>Эти переменные создаются самим РНР. Переменные SH7TP_*_VARS доступны, только если разрешен параметр конфигурации track_vars (в РНР 4.0.3 он разрешен всегда, вне зависимости от файла конфигурации). </FONT> </P> <P DESIGNTIMESP=19989><FONT face=Tahoma size=2 DESIGNTIMESP=19990>При установке директивы register_globals в файле конфигурации эти переменные становятся глобально доступными (фактически они копируются в массив SGLOBALSC]). Эту установку следует использовать с осторожностью, а лучше вовсе исключить, так как хранение переменных в массивах безопасно, а глобальные эквиваленты могут быть перезаписаны передачей сценарию одноименных параметров (не исключая и злоумышленного варианта подобной операции). В случае невозможности блокирования данной установки удостоверьтесь, что данные, которые вы используете из этих переменных, безопасны. </FONT> </P> <P DESIGNTIMESP=19991><FONT face=Tahoma size=2 DESIGNTIMESP=19992>$argv[] </FONT> </P> <P DESIGNTIMESP=19993><FONT face=Tahoma size=2 DESIGNTIMESP=19994>Массив аргументов, передаваемых сценарию. При запуске сценария iu командной строки этот массив содержит список параметров командной строки, как и в С. При вызове методом GET он содержит строку запроса (то есть то, что следует после имени сценария за знаком вопроса). </FONT> </P> <P DESIGNTIMESP=19995><FONT face=Tahoma size=2 DESIGNTIMESP=19996>$argc </FONT> </P> <P DESIGNTIMESP=19997><FONT face=Tahoma size=2 DESIGNTIMESP=19998>Число аргументов, передаваемых сценарию (и, соответственно, содержащихся в массиве Sargv[]). Равно count(Sargv). Для сценария, запускаемого из командной строки, это число параметров; для PHP-страницы это значение 0 или 1. </FONT> </P> <P DESIGNTIMESP=19999><FONT face=Tahoma size=2 DESIGNTIMESP=20000>$PHP_SEI.F </FONT> </P> <P DESIGNTIMESP=20001><FONT face=Tahoma size=2 DESIGNTIMESP=20002>Файловое имя текущего исполняемого сценария РНР относительно корневого каталога web-сервера (например, «/index.php»). При запуске сценария из командной строки значение недоступно. </FONT> </P> <P DESIGNTIMESP=20003><FONT face=Tahoma size=2 DESIGNTIMESP=20004>$HTTP_COOKIE_VARSn </FONT> </P> <P DESIGNTIMESP=20005><FONT face=Tahoma size=2 DESIGNTIMESP=20006>Ассоциативный массив переменных, посылаемых сценарию через HTTP cookies. </FONT> </P> <P DESIGNTIMESP=20007><FONT face=Tahoma size=2 DESIGNTIMESP=20008>$HTTP_GET_VARS[] </FONT> </P> <P DESIGNTIMESP=20009><FONT face=Tahoma size=2 DESIGNTIMESP=20010>Ассоциативный массив переменных, посылаемых сценарию методом HTTP GET (указываются в строке HTTP запроса). </FONT> </P> <P DESIGNTIMESP=20011><FONT face=Tahoma size=2 DESIGNTIMESP=20012>$HTTP_POST_VARS[] </FONT> </P> <P DESIGNTIMESP=20013><FONT face=Tahoma size=2 DESIGNTIMESP=20014>Ассоциативный массив переменных, посылаемых сценарию методом HTTP POST (передаются от html-форм, скрыто от пользователя). </FONT> </P> <P DESIGNTIMESP=20015><FONT face=Tahoma size=2 DESIGNTIMESP=20016>$HTTP_POST_FILES[] </FONT> </P> <P DESIGNTIMESP=20017><FONT face=Tahoma size=2 DESIGNTIMESP=20018>Ассоциативный массив, содержащих информацию о файлах, загружаемых на web-сервер методом HTTP POST. </FONT> </P> <P DESIGNTIMESP=20019><FONT face=Tahoma size=2 DESIGNTIMESP=20020>$HTTP_ENV_VARS[] </FONT> </P> <P DESIGNTIMESP=20021><FONT face=Tahoma size=2 DESIGNTIMESP=20022>Ассоциативный массив переменных окружения среды, в которой запущен сценарий (например, OS, Path, TEMP, System Root и т. п.). </FONT> </P> <P DESIGNTIMESP=20023><FONT face=Tahoma size=2 DESIGNTIMESP=20024>$HTTP_SERVER_VARS[] </FONT> </P> <P DESIGNTIMESP=20025><FONT face=Tahoma size=2 DESIGNTIMESP=20026>Ассоциативный массив переменных web-сервера. См. ниже. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=20027><FONT face=Tahoma size=2 DESIGNTIMESP=20028>Переменные web-сервера (Apache) - $HTTP_SERVER_VARS[] </FONT> </P> <P DESIGNTIMESP=20029><FONT face=Tahoma size=2 DESIGNTIMESP=20030>Приведенные переменные создаются web-сервером Apache. Другие серверы имеют сходный набор переменных. Большинство переменных декларировано спецификацией CGI 1.1 (http://hoohoo.ncsa.uiuc. edu/cgi/env.html)</FONT> </P> <P DESIGNTIMESP=20031><FONT face=Tahoma size=2 DESIGNTIMESP=20032>Если сценарий запущен из командной строки, большинство из них недоступно. </FONT> </P> <P DESIGNTIMESP=20033><FONT face=Tahoma size=2 DESIGNTIMESP=20034>GATEWAYJNTERFACE </FONT> </P> <P DESIGNTIMESP=20035><FONT face=Tahoma size=2 DESIGNTIMESP=20036>Версия CGI спецификации, используемой web-сервером; например, «CGI/1.1». </FONT> <P DESIGNTIMESP=20037><FONT face=Tahoma size=2 DESIGNTIMESP=20038>SERVER_NAME </FONT> </P> <P DESIGNTIMESP=20039><FONT face=Tahoma size=2 DESIGNTIMESP=20040>Имя хоста сервера, например «localhost». Если сценарий запускается с виртуального хоста, то используется имя для этого хоста. </FONT> </P> <P DESIGNTIMESP=20041><FONT face=Tahoma size=2 DESIGNTIMESP=20042>SERVER_SOFTVJARE' </FONT> </P> <P DESIGNTIMESP=20043><FONT face=Tahoma size=2 DESIGNTIMESP=20044>Описание серверного ПО, передающееся в заголовках ответов на запрос HTTP (например, «Microsoft-IIS/5.0»). </FONT> </P> <P DESIGNTIMESP=20045><FONT face=Tahoma size=2 DESIGNTIMESP=20046>SERVER_PROTOCOL </FONT> </P> <P DESIGNTIMESP=20047><FONT face=Tahoma size=2 DESIGNTIMESP=20048>Протокол, по которому запрашивается web-страница и ее версия, например «НТТР/1.0». </FONT> </P> <P DESIGNTIMESP=20049><FONT face=Tahoma size=2 DESIGNTIMESP=20050>REQUEST_METHOD </FONT> </P> <P DESIGNTIMESP=20051><FONT face=Tahoma size=2 DESIGNTIMESP=20052>Метод HTTP запроса, которым запрашивается web-страница: «GET», «HEAD», «POST» или «PUT». </FONT> </P> <P DESIGNTIMESP=20053><FONT face=Tahoma size=2 DESIGNTIMESP=20054>QUERY_STRING </FONT> </P> <P DESIGNTIMESP=20055><FONT face=Tahoma size=2 DESIGNTIMESP=20056>Строка параметров запроса. Например, для запроса«http://localhost\index.php?x=5&amp;s= id» этойстрокойбудет«x=5&amp;s= d».</FONT> </P> <P DESIGNTIMESP=20057><FONT face=Tahoma size=2 DESIGNTIMESP=20058>DOCUMENT_ROOT </FONT> </P> <P DESIGNTIMESP=20059><FONT face=Tahoma size=2 DESIGNTIMESP=20060>Корневой каталог web-сервера, определяемый его конфигурацией. </FONT> </P> <P DESIGNTIMESP=20061><FONT face=Tahoma size=2 DESIGNTIMESP=20062>НТТР_АССЕРТ </FONT> </P> <P DESIGNTIMESP=20063><FONT face=Tahoma size=2 DESIGNTIMESP=20064>Содержание заголовка Accept: у текущего запроса, если он указан. HTTP_ACCEPT_CHARSET </FONT> </P> <P DESIGNTIMESP=20065><FONT face=Tahoma size=2 DESIGNTIMESP=20066>Содержание заголовка Charset: у текущего запроса, если он указан. Например: «iso-8859-l,*,utf-8». </FONT> </P> <P DESIGNTIMESP=20067><FONT face=Tahoma size=2 DESIGNTIMESP=20068>HTTP_ENCODING </FONT> </P> <P DESIGNTIMESP=20069><FONT face=Tahoma size=2 DESIGNTIMESP=20070>Содержание заголовка Accept-Encoding: у текущего запроса, если он указан. Например: «gzip». </FONT> </P> <P DESIGNTIMESP=20071><FONT face=Tahoma size=2 DESIGNTIMESP=20072>HTTP_ACCEPT_LANGUAGE </FONT> </P> <P DESIGNTIMESP=20073><FONT face=Tahoma size=2 DESIGNTIMESP=20074>Содержание заголовка Accept-Language: у текущего запроса, если он указан. Например: «en». </FONT> </P> <P DESIGNTIMESP=20075><FONT face=Tahoma size=2 DESIGNTIMESP=20076>HTTP_CONNECTION </FONT> </P> <P DESIGNTIMESP=20077><FONT face=Tahoma size=2 DESIGNTIMESP=20078>Содержание заголовка Connection: у текущего запроса, если он указан. Например: «Keep-Alive». </FONT> </P> <P DESIGNTIMESP=20079><FONT face=Tahoma size=2 DESIGNTIMESP=20080>HTTP_HOST </FONT> </P> <P DESIGNTIMESP=20081><FONT face=Tahoma size=2 DESIGNTIMESP=20082>Содержание заголовка Host: у текущего запроса, если он указан. Подобно SERVER NAME. </FONT> </P> <P DESIGNTIMESP=20083><FONT face=Tahoma size=2 DESIGNTIMESP=20084>HTTP_REFERER </FONT> </P> <P DESIGNTIMESP=20085><FONT face=Tahoma size=2 DESIGNTIMESP=20086>Адрес страницы, с которой осуществлен переход на текущую. Значение посылается большинством из браузеров, но не всеми. </FONT> </P> <P DESIGNTIMESP=20087><FONT face=Tahoma size=2 DESIGNTIMESP=20088>I HTTP_USER_AGENT </FONT> </P> <P DESIGNTIMESP=20089><FONT face=Tahoma size=2 DESIGNTIMESP=20090>Содержание заголовка User_Agent: текущего запроса, если он указан. Кодификация тина браузера и клиентского ПО, от которого получен запрос. Например: Mozilla/4.5 [en] (XI1; U; Linux 2.2.9 1586) или MoziIla/4.0 (compatible; MSIE 5.01; Windows NT 5.0). Это значение (оно используется функцией get_browser()) имеет смысл использовать для подгонки функциональности страницы (например, особенностей JavaScript) иод возможности браузера. </FONT> </P> <P DESIGNTIMESP=20091><FONT face=Tahoma size=2 DESIGNTIMESP=20092>REMOTE_AODR </FONT> </P> <P DESIGNTIMESP=20093><FONT face=Tahoma size=2 DESIGNTIMESP=20094>IP адрес клиента, просматривающего текущую страницу. REMOTE_PORT </FONT> </P> <P DESIGNTIMESP=20095><FONT face=Tahoma size=2 DESIGNTIMESP=20096>Порт, используемый клиентом для коммуникации с web-сервером. SCRIPT_FILENAME </FONT> </P> <P DESIGNTIMESP=20097><FONT face=Tahoma size=2 DESIGNTIMESP=20098>Имя сценария, включающее абсолютный путь к нему (по мнению web-сервера). </FONT> </P> <P DESIGNTIMESP=20099><FONT face=Tahoma size=2 DESIGNTIMESP=20100>SERVER_ADMIN </FONT> </P> <P DESIGNTIMESP=20101><FONT face=Tahoma size=2 DESIGNTIMESP=20102>Установка «администратор сервера» конфигурации web-сервера. SERVER_PORT </FONT> </P> <P DESIGNTIMESP=20103><FONT face=Tahoma size=2 DESIGNTIMESP=20104>Порт, используемый web-сервером для коммуникации с клиентом. Определяется конфигурацией web-сервера. Обычно 80, для SSL (безопасных соединений) по умолчанию 443. </FONT> </P> <P DESIGNTIMESP=20105><FONT face=Tahoma size=2 DESIGNTIMESP=20106>SERVER_SIGNATURE </FONT> </P> <P DESIGNTIMESP=20107><FONT face=Tahoma size=2 DESIGNTIMESP=20108>Строка, содержащая версию сервера и имя виртуального хоста, добавляемая к генерируемым страницам, если эта функция используется. </FONT> </P> <P DESIGNTIMESP=20109><FONT face=Tahoma size=2 DESIGNTIMESP=20110>PATHJRANSLATED </FONT> </P> <P DESIGNTIMESP=20111><FONT face=Tahoma size=2 DESIGNTIMESP=20112>Имя сценария, включающее абсолютный путь к нему (указывается расположение сценария в файловой системе, а не в каталогах web-сервера). Сравните со SCRIPT_FILENAME. </FONT> </P> <P DESIGNTIMESP=20113><FONT face=Tahoma size=2 DESIGNTIMESP=20114>SCRIPTJIAME </FONT> </P> <P DESIGNTIMESP=20115><FONT face=Tahoma size=2 DESIGNTIMESP=20116>Путь к текущему сценарию в web-каталогах. REQUESTER I </FONT> </P> <P DESIGNTIMESP=20117><FONT face=Tahoma size=2 DESIGNTIMESP=20118>Строка, которой запрашивается сценарий, например: «/index.html». </FONT> </P> <P class="Title_3" DESIGNTIMESP=20119><FONT face=Tahoma size=2 DESIGNTIMESP=20120>Область видимости переменной </FONT> </P> <P DESIGNTIMESP=20121><FONT face=Tahoma size=2 DESIGNTIMESP=20122>Область видимости переменной — это контекст, в котором переменная сохраняет свое значение и это значение доступно. В РНР область видимости ограничена текущим файлом, но распространяется на файлы, присоединяемые директивами include и require. </FONT> <pre designtimesp=20123><P DESIGNTIMESP=20124><FONT face=Tahoma size=2 DESIGNTIMESP=20125> Переменные, используемые вне функций, <br designtimesp=20126>недоступны внутри них. $а = 1. /* глобальная область */ Function Test () { echo $a; /* используется локальная <br designtimesp=20127>переменная, которая пуста*/ } Test (). //не напечатает ничего </FONT> </P></pre> <P DESIGNTIMESP=20128><FONT face=Tahoma size=2 DESIGNTIMESP=20129>Это отличает РНР от С, где внешние переменные всегда доступны внутри функций, если только внутри функции не объявляется переменная с именем внешней. Это сделано для того, чтобы внутри функций нельзя было случайно изменить внешние переменные. Если же все-таки требуется доступ к внешним переменным, они должны быть объявлены глобальными внутри функции. </FONT> <pre designtimesp=20130><P DESIGNTIMESP=20131><FONT face=Tahoma size=2 DESIGNTIMESP=20132> $а = 1:$b = 2. Function Sum () { global $a. $b.//использовать глобальные переменные $b = $а + $b. } Sum (): echo $b; // напечатает «3» < /FONT > </P></pre> <P DESIGNTIMESP=20133><FONT face=Tahoma size=2 DESIGNTIMESP=20134>Другой способ доступа к внешним неременным — это обращение к ассоциативному массиву $GLOBALS, в котором содержатся все переменные, используемые вне функций. </FONT> <pre designtimesp=20135><P DESIGNTIMESP=20136><FONT face=Tahoma size=2 DESIGNTIMESP=20137> $а = 1; $b = 2. Function Sum () { $GLOBALS["b"]<br designtimesp=20138> = $GLOBALS["a"] + $GLOBALS["b"]; } Sum (); echo $b; // напечатает «3» </FONT > </P></pre> <P DESIGNTIMESP=20139><FONT face=Tahoma size=2 DESIGNTIMESP=20140>Можно пойти на ухищрения и сделать глобальные переменные доступными для чтения внутри функции с помощью функции extract():</FONT> </P> <pre designtimesp=20141><P DESIGNTIMESP=20142><FONT face=Tahoma size=2 DESIGNTIMESP=20143> function foo() { extract (SGLOBALS): // ... } </FONT> </P></pre> <P class="Text_Bold" DESIGNTIMESP=20144><FONT face=Tahoma size=2 DESIGNTIMESP=20145>Статические переменные </FONT> </P> <P DESIGNTIMESP=20146><FONT face=Tahoma size=2 DESIGNTIMESP=20147>Статические переменные не уничтожаются после завершения функции и сохраняют свое значение на протяжении всего времени исполнения сценария. Инициализируются они только при первом запуске функции. </FONT> <pre designtimesp=20148><P DESIGNTIMESP=20149><FONT face=Tahoma size=2 DESIGNTIMESP=20150> Function Test () { static $a = 0: echo $a; $а++; } Test (): // напечатает «О» Test (): // напечатает «1» Test (). // напечатает «2»< /FONT > </P></pre> <P DESIGNTIMESP=20151><FONT face=Tahoma size=2 DESIGNTIMESP=20152>Статические переменные также используются при рекурсивных вызовах (то есть когда функция вызывает сама себя). Не забудьте обеспечить контроль за тем, чтобы рекурсивный вызов не привел к бесконечному циклу! </FONT> <pre designtimesp=20153><P DESIGNTIMESP=20154><FONT face=Tahoma size=2 DESIGNTIMESP=20155> Function Test ()) { static Jcount = 0; $count++; echo $count: if (Scount &lt; 10) Test (): $COUnt--; } < /FONT > </P></pre> <P class="Title_3" DESIGNTIMESP=20156><FONT face=Tahoma size=2 DESIGNTIMESP=20157>«Переменные» переменные (оператор $) </FONT> </P> <P DESIGNTIMESP=20158><FONT face=Tahoma size=2 DESIGNTIMESP=20159>Иногда требуется иметь изменяемые имена переменных, например в случае, если нужно будет производить стандартные действия над различными переменными, но еще неизвестно, какими именно. Такие переменные перед своим «именем» имеют двойной знак доллара вместо одного, чтобы можно было изменять их значения (то есть значения тех неременных, на которые они указывают). При этом если перед такой переменной стоит одинарный знак доллара, ее значение является именем реальной переменной. </FONT> </P> <P DESIGNTIMESP=20160><FONT face=Tahoma size=2 DESIGNTIMESP=20161>Допустим, $А = "X", а $$А = "value", тогда $Х = "value"'. < /FONT > <pre designtimesp=20162><P DESIGNTIMESP=20163><FONT face=Tahoma size=2 DESIGNTIMESP=20164> $а = "hello". // пня переменной $$а $$а = "world". // Shell о содержит "world" echo "$a ${$a}"; // напечатает hello world echo "$э Shell о": // напечатает hello world < /FONT > </P></pre> <P DESIGNTIMESP=20165><FONT face=Tahoma size=2 DESIGNTIMESP=20166>При использовании «переменных» переменных с массивами возникает проблема неопределенности. Что означает $$а[1]? Возможно, вы хотите использовать переменную с именем, содержащимся в $а[1], или $$а как переменную массива, а затем ее элемент [1]. В первом случае мы имеем дело с массивом указателей, а во втором — с указателем на массив. Синтаксис фигурных скобок разрешает эту проблему: ${$а[1]} для первого случая и ${$а}[1] для второго. Для того чтобы правильно интерпретировать действие двойного знака доллара, думайте о первом из них, как об операторе разыменования. </FONT> </P> <P DESIGNTIMESP=20167><FONT face=Tahoma size=2 DESIGNTIMESP=20168>Поскольку РНР интерпретирует код, то возможно даже использовать выражения в именах переменных (в фигурных скобках оператора разыменования): </FONT> <pre designtimesp=20169><P DESIGNTIMESP=20170><FONT face=Tahoma size=2 DESIGNTIMESP=20171> $var="world": Shello_world = "hi everyone". echo S{"hello_".$var}; // выводит hi everyone< /FONT > </P></pre> <P class="Title_3" DESIGNTIMESP=20172><FONT face=Tahoma size=2 DESIGNTIMESP=20173>Передача переменных PHP-сценарию </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=20174><FONT face=Tahoma size=2 DESIGNTIMESP=20175>HTML-формы </FONT> </P> <P DESIGNTIMESP=20176><FONT face=Tahoma size=2 DESIGNTIMESP=20177>При вызове PHP-сценария HTML-формой все переменные формы автоматически становятся доступными сценарию. При включенном параметре конфигурации track_vars все эти переменные затем сохраняются в ассоциативных массивах $HTTP_POST_VARS, $HTTP_GET_VARS и/или $HTTP_POST_FILES, в зависимости от метода вызова сценария ($НТТР_ SERVERJ/ARS [REQUEST_METHOD] ).</FONT> </P> <pre designtimesp=20178><P DESIGNTIMESP=20179><FONT face=Tahoma size=2 DESIGNTIMESP=20180> &lt;form act1on="foo.php" method="post"&gt; Name: &lt;input type="text" name="use&gt;~name"&gt;<br designtimesp=20181>&lt;br&gt; &lt;mput type="submlt"&gt;<br designtimesp=20182> &lt;/form&gt; </FONT> </P></pre> <P DESIGNTIMESP=20183><FONT face=Tahoma size=2 DESIGNTIMESP=20184>При посылке данных этой формы текст, введенный в поле Name, сохраняется в $HTTP_POST_VARS['username']. При включенной директиве конфигурации register_globa1s на глобальном уровне это значение становится также доступно в переменной Susername. </FONT> </P> <P DESIGNTIMESP=20185><FONT face=Tahoma size=2 DESIGNTIMESP=20186>Данные могут также быть посланы формой и затем распознаны РНР, если они заносятся в массивы. Таким способом возможно группировать связанные переменные или получать данные с мультиселек-тивпых элементов ввода: </FONT> <pre designtimesp=20187><FONT face=Tahoma size=2 DESIGNTIMESP=20188> </FONT> <P DESIGNTIMESP=20189><FONT face=Tahoma size=2 DESIGNTIMESP=20190> &lt;form action="array php" method="post"&gt; Name: &lt;input type="text" name="personal[name]"&gt;&lt;br&gt; Email: &lt;input type="text" name-"personal[email]"&gt;&lt;br&gt; Beer:&lt;br&gt; &lt;select multiple name= '"beer[]"&gt;&lt;opt i on va1ue= "wa rthog"&gt;Wa rthog &lt;option value= "guinness"&gt;Gumness &lt;option value="stuttgarter"&gt;Stuttgarter Schwabenbi-ди /select&gt; &lt;input type= "submit"&gt; &lt;/form&gt;< /FONT> </P></pre> <P DESIGNTIMESP=20191><FONT face=Tahoma size=2 DESIGNTIMESP=20192>Также PHP 4 позволяет использовать в формах многомерные массивы. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=20193><FONT face=Tahoma size=2 DESIGNTIMESP=20194>Имена переменных кнопки IMAGE SUBMIT </FONT> </P> <P DESIGNTIMESP=20195><FONT face=Tahoma size=2 DESIGNTIMESP=20196>Вместо кнопки submit (отправить) для форм возможно использование картинки: </FONT> </P> <pre designtimesp=20197><P DESIGNTIMESP=20198><FONT face=Tahoma size=2 DESIGNTIMESP=20199> &lt;input type»image src= "image.gif" name= "sub"&gt;&lt; /P&gt;&lt; /P&gt;< /FONT> < /P> </pre> <P DESIGNTIMESP=20200><FONT face=Tahoma size=2 DESIGNTIMESP=20201>При щелчке мытью на этом рисунке и отправке данных формы посылаются два дополнительных значения: sub_x и sub_y. Они содержат относительные координаты точки нажатия на рисунок. Знатоки заметят, что браузером на самом деле посылаются переменные, разделенные точкой (sub.x и sub.у), но РНР автоматически преобразует точки в знаки подчеркивания. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=20202><FONT face=Tahoma size=2 DESIGNTIMESP=20203>HTTP Cookies </FONT> </P> <P DESIGNTIMESP=20204><FONT face=Tahoma size=2 DESIGNTIMESP=20205>РНР незаметно для пользователя поддерживает HTTP cookies, следуя спецификации Netscape (http://www.netscape.com/newsref/std/ cookie_ spec.html). Cookies — это механизм хранения данных на стороне клиента, осуществляемый браузером для того, чтобы сервер мог опознать пользователей, однажды посетивших сайт. Использовать cookies позволяет функция SetCookie(). Cookies передаются в заголовке HTTP, поэтому вызывать функцию SetCookie необходимо до того, как любой текст будет передан браузеру. С тем же ограничением можно использовать функцию Header(). Все cookies, отправляемые серверу клиентом, автоматически становятся PHP-переменными, подобно данным, передаваемым методами GET и POST. </FONT> </P> <P DESIGNTIMESP=20206><FONT face=Tahoma size=2 DESIGNTIMESP=20207>Если требуется назначить одному cookie несколько значений, просто добавьте [] к его имени. Например: </FONT> </P> <pre designtimesp=20208><P DESIGNTIMESP=20209><FONT face=Tahoma size=2 DESIGNTIMESP=20210> SetCoone ("MyCookief]". "Testing". timeO+3600); </FONT> </P></pre> <P DESIGNTIMESP=20211><FONT face=Tahoma size=2 DESIGNTIMESP=20212>При посылке браузеру cookie с именем уже имеющегося у браузера новый cookie заменит старый, если доменное имя и путь к сценарию у старого и нового cookie совпадают. </FONT> </P> <P DESIGNTIMESP=20213><FONT face=Tahoma size=2 DESIGNTIMESP=20214>Поэтому если требуется не замена значения, а добавление (напри-мер, для корзины покупок в «электронном магазине»), то необходимо передавать значение в новом элементе массива, сопровождающееся автоинкрементируемым значением счетчика. Например: </FONT> <pre designtimesp=20215><P DESIGNTIMESP=20216><FONT face=Tahoma size=2 DESIGNTIMESP=20217> $Count++. // «Товаров» в «корзине» прибавилось<br designtimesp=20218> SetCookie ("Count". SCount. timeO+3600): // Всего «товаров» в «корзине» <br designtimesp=20219>SetCookie ("Cart[$Count]", Jitem. time()+3600): // Наименование добавляемого «товара»</FONT> </P></pre> <P class="Text_Bold" DESIGNTIMESP=20220><FONT face=Tahoma size=2 DESIGNTIMESP=20221>Переменные окружения среды </FONT> </P> <P DESIGNTIMESP=20222><FONT face=Tahoma size=2 DESIGNTIMESP=20223>РНР автоматически делает переменные окружения среды доступными для сценария, как обычные переменные РНР. </FONT> <pre designtimesp=20224><FONT face=Tahoma size=2 DESIGNTIMESP=20225> </FONT> <P DESIGNTIMESP=20226><FONT face=Tahoma size=2 DESIGNTIMESP=20227> echo $HOME; // напечатать переменную Unix-среды НОМЕ, <br designtimesp=20228>если она установлена echo $PATH; // напечатать пути используемые <br designtimesp=20229>по ум. в Windows </FONT> </P></pre> <P DESIGNTIMESP=20230><FONT face=Tahoma size=2 DESIGNTIMESP=20231>Так как информация, передаваемая методами GET, POST и в Cookie, также создает переменные на глобальном уровне РНР, и их имена могут конфликтовать между собой, бывает полезно выяснить значение неременных среды явно, используя функцию getenv(). Для установки значений переменной в окружении среды используется функция putenv(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=20232><FONT face=Tahoma size=2 DESIGNTIMESP=20233>Точки в именах получаемых переменных </FONT> </P> <P DESIGNTIMESP=20234><FONT face=Tahoma size=2 DESIGNTIMESP=20235>Обычно РНР не изменяет имена передаваемых сценарию переменных. Но заметьте, что наличие точки в имени переменной вызовет ошибку при попытке ее использования. </FONT> </P> <pre designtimesp=20236><P DESIGNTIMESP=20237><FONT face=Tahoma size=2 DESIGNTIMESP=20238> $varname.e&gt;t: /* неправильное имя переменной */ </FONT> </P> <FONT face=Tahoma size=2 DESIGNTIMESP=20239> </FONT> </pre> <P DESIGNTIMESP=20240><FONT face=Tahoma size=2 DESIGNTIMESP=20241>Интерпретатор РНР попытается выполнить операцию конкатенации (оператора точка), что н вызывает ошибку. Поэтому РНР заменяет точку в именах получаемых переменных на знак подчеркивания. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=20242><FONT face=Tahoma size=2 DESIGNTIMESP=20243>Определение типа переменных </FONT> </P> <P DESIGNTIMESP=20244><FONT face=Tahoma size=2 DESIGNTIMESP=20245>Так как РНР автоматически меняет типы переменных, не всегда известно, какой тип она имеет. Поэтому в РНР имеются функции для определения типа переменных: gettype(), is_long(), is_double(), is_string(), is_array() и is_object(). </FONT> </P> <P DESIGNTIMESP=20246><FONT face=Tahoma size=2 DESIGNTIMESP=20247></FONT> </P> <P class="Title_2" DESIGNTIMESP=20248> <a name="4" designtimesp=20249></a><FONT face=Tahoma size=2 DESIGNTIMESP=20250>Константы </FONT> </P> <P DESIGNTIMESP=20251><FONT face=Tahoma size=2 DESIGNTIMESP=20252>РНР устанавливает значения нескольких констант и предоставляет механизм установки пользовательских констант во время выполнения. Константы подобны переменным с единственным отличием: их однажды установленные с помощью функции define() значения изменению больше не подвергаются. </FONT> </P> <P DESIGNTIMESP=20253><FONT face=Tahoma size=2 DESIGNTIMESP=20254>Предопределенные константы (доступные всегда): </FONT> </P> <P DESIGNTIMESP=20255><FONT face=Tahoma size=2 DESIGNTIMESP=20256>__FILE_ </FONT> </P> <P DESIGNTIMESP=20257><FONT face=Tahoma size=2 DESIGNTIMESP=20258>Имя сценария, интерпретируемого в текущий момент. При использовании в файле, включенном или вызванном родительским сценарием (директивой include или require), хранит имя включаемого, а не родительского файла.</FONT> </P> <P DESIGNTIMESP=20259><FONT face=Tahoma size=2 DESIGNTIMESP=20260>__LINE_ </FONT> </P> <P DESIGNTIMESP=20261><FONT face=Tahoma size=2 DESIGNTIMESP=20262>Номер текущей интерпретируемой строки. Для подключаемых сценариев позиция указывается относительно этих файлов. PHPJ/ERSION </FONT> </P> <P DESIGNTIMESP=20263><FONT face=Tahoma size=2 DESIGNTIMESP=20264>Строковое значение, хранящее версию РНР интерпретатора, например: «3.0.8-dev». </FONT> </P> <P DESIGNTIMESP=20265><FONT face=Tahoma size=2 DESIGNTIMESP=20266>PHP_OS </FONT> </P> <P DESIGNTIMESP=20267><FONT face=Tahoma size=2 DESIGNTIMESP=20268>Название операционной системы, в которой исполняется РНР, например: «Linux». </FONT> </P> <P DESIGNTIMESP=20269><FONT face=Tahoma size=2 DESIGNTIMESP=20270>TRUE </FONT> </P> <P DESIGNTIMESP=20271><FONT face=Tahoma size=2 DESIGNTIMESP=20272>Значение «Истинно». Регистр не имеет значения. </FONT> </P> <P DESIGNTIMESP=20273><FONT face=Tahoma size=2 DESIGNTIMESP=20274>FALSE </FONT> </P> <P DESIGNTIMESP=20275><FONT face=Tahoma size=2 DESIGNTIMESP=20276>Значение «Ложно». Регистр не имеет значения. </FONT> </P> <P DESIGNTIMESP=20277><FONT face=Tahoma size=2 DESIGNTIMESP=20278>EJRROR </FONT> </P> <P DESIGNTIMESP=20279><FONT face=Tahoma size=2 DESIGNTIMESP=20280>Обозначает ошибку, отличную от ошибки интерпретатора, вызывающую критический сбой. </FONT> </P> <P DESIGNTIMESP=20281><FONT face=Tahoma size=2 DESIGNTIMESP=20282>E_WARNING </FONT> </P> <P DESIGNTIMESP=20283><FONT face=Tahoma size=2 DESIGNTIMESP=20284>Обозначает условие, когда РНР находит ошибку, но не считает ее критической и это не мешает РНР исполнять сам сценарий. Например, такой некритической ошибкой может быть неправильное регулярное выражение в функции еreg(). </FONT> </P> <P DESIGNTIMESP=20285><FONT face=Tahoma size=2 DESIGNTIMESP=20286>E_PARSE </FONT> </P> <P DESIGNTIMESP=20287><FONT face=Tahoma size=2 DESIGNTIMESP=20288>Обозначает ситуацию, когда интерпретатор не может исполнить сценарий из-за грубого нарушения синтаксиса. </FONT> </P> <P DESIGNTIMESP=20289><FONT face=Tahoma size=2 DESIGNTIMESP=20290>EJOTICE </FONT> </P> <P DESIGNTIMESP=20291><FONT face=Tahoma size=2 DESIGNTIMESP=20292>Сообщение о событии, которое может быть или не быть ошибкой. Исполнение сценария продолжается. Например, и индексе ассоциированного массива может использоваться строка без кавычек или в выражении использоваться значение несуществующей неременной. </FONT> </P> <P DESIGNTIMESP=20293><FONT face=Tahoma size=2 DESIGNTIMESP=20294>E_ALL </FONT> </P> <P DESIGNTIMESP=20295><FONT face=Tahoma size=2 DESIGNTIMESP=20296>Обобщение всех Е_* констант (в РНР 4 их число увеличилось). При использовании с функцией error_reportingO сообщает обо всех проблемных моментах, отмеченных РНР. </FONT> </P> <P DESIGNTIMESP=20297><FONT face=Tahoma size=2 DESIGNTIMESP=20298>Константы Е_* обычно используются в функции error_reporting() для установки критического уровня ошибки РНР, то есть уровня ошибки, которая вынуждает РНР прекратить исполнение сценария и выдать сообщение об ошибке. </FONT> </P> <P DESIGNTIMESP=20299><FONT face=Tahoma size=2 DESIGNTIMESP=20300>Помимо этого, дополнительные модули при загрузке определяют собственные константы — см. описание функций соответствующих модулей и библиотек. Поэтому совокупный набор констант зависит от того, с какими библиотеками был скомпилирован РНР и какие модули были загружены. </FONT> </P> <P DESIGNTIMESP=20301><FONT face=Tahoma size=2 DESIGNTIMESP=20302>Определять дополнительные константы позволяет функция def ine(). Не забывайте, что константе может быть присвоено только константное значение (а не выражение-макрос, как в С). </FONT> <pre designtimesp=20303><P DESIGNTIMESP=20304><FONT face=Tahoma size=2 DESIGNTIMESP=20305> defineC'CONSTANT". "Hello world "). <br designtimesp=20306>echo CONSTANT; <br designtimesp=20307>// outputs "Hello world " &lt;?php // Пример использования<br designtimesp=20308> констант __FILE__ и __LINE__ function report_error($file. $line. $message) { echo "Ошибка произошла в файле $file. в стороке Sline- Smessage ": } report_error (__FILE__.__LINE__. "Где-то здесь ошибка!"); ?&gt; </FONT> </P></pre> <P class="Title_2" DESIGNTIMESP=20309> <a name="5" id="5" designtimesp=20310></a><FONT face=Tahoma size=2 DESIGNTIMESP=20311>Выражения </FONT> </P> <P DESIGNTIMESP=20312><FONT face=Tahoma size=2 DESIGNTIMESP=20313>Выражения — это «все то, что имеет значение». Наиболее простые примеры — константы и переменные. Например, запись $а =5 присваивает переменной $а целочисленную константу со значением 5. Теперь $а имеет значение 5, и при следующем присваивании: $b = $а оно воспринимается как $b = 5. < /FONT > </P> <P DESIGNTIMESP=20314><FONT face=Tahoma size=2 DESIGNTIMESP=20315>Более сложными выражениями являются функции. Например, мы имеем функцию: </FONT> </P> <P DESIGNTIMESP=20316><FONT face=Tahoma size=2 DESIGNTIMESP=20317>function foo (){ return 5- } </FONT> </P> <P DESIGNTIMESP=20318><FONT face=Tahoma size=2 DESIGNTIMESP=20319>Тогда запись $с = foo() означает то же, что и $с = 5. Функции — это выражения, имеющие возвращаемое ими значение. < /FONT > </P> <P DESIGNTIMESP=20320><FONT face=Tahoma size=2 DESIGNTIMESP=20321>Значения, конечно, могут быть и не только числовыми. РНР поддерживает три скалярных типа: целые числа, дробные числа и строки (скаляры, в отличие от массивов и объектов, неделимы). РНР также поддерживает два композитных типа (не скаляры): массивы и объекты. Значения любых типов могут быть присвоены любой переменной или возвращены из функций. </FONT> </P> <P DESIGNTIMESP=20322><FONT face=Tahoma size=2 DESIGNTIMESP=20323>РНР является языком, ориентированным на выражения, в том смысле, что почти «все есть выражение». В приведенном выше примере $а = 5 имеется и третье выражение присваивания «= », объединяющее правое и левое выражение? которое также равно здесь пяти. То есть запись $b= ($а= 5) подобна записи $а = 5: $b= 5;, а так как присваивания обрабатываются справа налево, то можно также написать $b = $а = 5. < /FONT > </P> <P DESIGNTIMESP=20324><FONT face=Tahoma size=2 DESIGNTIMESP=20325>Хорошими примерами ориентации на выражения являются также операторы пре- и постинкремента и декремента. Так. выражение $а-&lt;-+ имеет значение $а, а -н-$а имеет значение $а + 1 (по аналогии с С). Операторы «прибавления» (+= и -=) и другие операторы этого типа (*=, /=, Х~, &amp;=, ~= и т. п.), по аналогии с инкрементом/декрементом, также являются выражениями (к примеру, возможна запись: $х= ($а += 3), являющаясясокращением $а= $а + 3; $х= $а;). < /FONT > </P> <P DESIGNTIMESP=20326><FONT face=Tahoma size=2 DESIGNTIMESP=20327>Достаточно распространены выражения сравнения, возвращающие О либо 1 (что соответствует FALSE либо TRUE). Обычно такие выражения используются в управляющих структурах. </FONT> </P> <P DESIGNTIMESP=20328><FONT face=Tahoma size=2 DESIGNTIMESP=20329>Еще одно выражение — структура условной альтернативы (которая существует в С). </FONT> </P> <P DESIGNTIMESP=20330><FONT face=Tahoma size=2 DESIGNTIMESP=20331>Sfirst ? Ssecond . Sthird </FONT> </P> <P DESIGNTIMESP=20332><FONT face=Tahoma size=2 DESIGNTIMESP=20333>Значение этого выражения зависит от значения переменной Sfirst: если оно истинно (не ноль), то используется значение переменной $second, в противном случае — Ithird. </FONT> <pre designtimesp=20334><P DESIGNTIMESP=20335><FONT face=Tahoma size=2 DESIGNTIMESP=20336> echo ( 3 ? "Яблоко" : "Апельсин"). // напечатает: Яблоко function double($i) { // возвращает<br designtimesp=20337> удвоенное значение аргумента return $i*2: } $b * Sa = 5: /* назначить значение 5 переменным $а и $b */ $с " $а++: /* аналогично: $с = $а: $а = $а + 1: */ $е = $d = ++$b: // преинкремент сперев<br designtimesp=20338> увеличивает $b на 1 // сейчас $е и $d равны б $f = double($d++): /* присвоить 2*6 = <br designtimesp=20339>12 переменной $f */ $g = double(-&gt;-+$e): <br designtimesp=20340> /* присвоить 2*7 •= 14 переменной <br designtimesp=20341>$g */ $h = $g += 10; /* увеличить $g на 10 (равно 24); // затем присвоить (24) $h < /FONT> </P></pre> <P DESIGNTIMESP=20342><FONT face=Tahoma size=2 DESIGNTIMESP=20343>Так как РНР имеет бинарный тип (boolean), в условных структурах выражения приводятся к взаимоисключающему значению TRUE либо FALSE следующим образом: всякое численное выражение, не равное нулю, тождественно TRUE, а ноль — FALSE; отрицательные числа также — TRUE; пустая строка и строка «О» — FALSE, все другие строки — TRUE; не скаляры (массивы и объекты) имеют значение TRUE, если содержат хоть один элемент. (Такие же правила использует Perl.) </FONT> </P> <P class="Title_2" DESIGNTIMESP=20344> <a name="6" designtimesp=20345></a><FONT face=Tahoma size=2 DESIGNTIMESP=20346>Операторы </FONT> </P> <P class="Title_3" DESIGNTIMESP=20347><FONT face=Tahoma size=2 DESIGNTIMESP=20348>Операторы присваивания </FONT> </P> <P DESIGNTIMESP=20349><FONT face=Tahoma size=2 DESIGNTIMESP=20350>Простейший оператор присваивания «=». Не путайте его с оператором сравнения «=». Присваивание осуществляется копированием значения из левой части выражения в правую. Возможны комбинации при присваивании:< /FONT> </P> <pre designtimesp=20351><P DESIGNTIMESP=20352><FONT face=Tahoma size=2 DESIGNTIMESP=20353> $а = ($b = 4) + 5; // $а теперь равно 9. а $b равно 4. &lt; /P &gt; &lt; /P &gt; < /FONT > < /P > </pre> <P DESIGNTIMESP=20354><FONT face=Tahoma size=2 DESIGNTIMESP=20355>Комбинированные операции (например, +=, &amp;=, .=) позволяют сократить запись присваивания, объединяя ее с основной операцией, при этом переменная слева используется и как исходное значение, и как местосохранения результата.< /FONT> </P> <pre designtimesp=20356><P DESIGNTIMESP=20357><FONT face=Tahoma size=2 DESIGNTIMESP=20358> $а = 3; $а += 5: // $а = 8. эквивалентна:<br designtimesp=20359> $а = $а + 5; $b = "Hello ". <br designtimesp=20360>$b .- "There!"; // заносит в $b строку "Hello There!", //эквивалентна $b = $b . "There!": < /FONT > </P></pre> <P DESIGNTIMESP=20361><FONT face=Tahoma size=2 DESIGNTIMESP=20362>Поскольку присваивание осуществляется посредством копирования, иногда выгоднее использовать присваивание значения по ссылке: $var = &amp;$othervar;. Присваивание по ссылке фактически меняет указатель в переменной назначения так, что теперь он указывает на место, в котором хранится значение назначаемой переменной, то есть обе переменные теперь ссылаются на одно и то же значение и изменение одной переменной влечет за собой непосредственное изменение другой. < /FONT > </P> <P class="Text_Bold" DESIGNTIMESP=20363><FONT face=Tahoma size=2 DESIGNTIMESP=20364>Арифметические операторы </FONT> </P> <TABLE FRAME="box" RULES="all" BORDER="1" DESIGNTIMESP=20365> <TR DESIGNTIMESP=20366> <TD DESIGNTIMESP=20367> <P DESIGNTIMESP=20368><FONT face=Tahoma size=2 DESIGNTIMESP=20369>Пример</FONT></P></TD> <TD DESIGNTIMESP=20370> <P DESIGNTIMESP=20371><FONT face=Tahoma size=2 DESIGNTIMESP=20372>Название</FONT></P></TD> <TD DESIGNTIMESP=20373> <P DESIGNTIMESP=20374><FONT face=Tahoma size=2 DESIGNTIMESP=20375>Результат</FONT></P></TD> </TR> <TR DESIGNTIMESP=20376> <TD DESIGNTIMESP=20377> <P DESIGNTIMESP=20378><FONT face=Tahoma size=2 DESIGNTIMESP=20379>$a + $b</FONT> </P></TD> <TD DESIGNTIMESP=20380> <P DESIGNTIMESP=20381><FONT face=Tahoma size=2 DESIGNTIMESP=20382>Сложение</FONT></P></TD> <TD DESIGNTIMESP=20383> <P DESIGNTIMESP=20384><FONT face=Tahoma size=2 DESIGNTIMESP=20385>Сумма $а и $b</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20386> <TD DESIGNTIMESP=20387> <P DESIGNTIMESP=20388><FONT face=Tahoma size=2 DESIGNTIMESP=20389>$a - $b</FONT> </P></TD> <TD DESIGNTIMESP=20390> <P DESIGNTIMESP=20391><FONT face=Tahoma size=2 DESIGNTIMESP=20392>Вычитание</FONT></P></TD> <TD DESIGNTIMESP=20393> <P DESIGNTIMESP=20394><FONT face=Tahoma size=2 DESIGNTIMESP=20395>Разность между $а и $b</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20396> <TD DESIGNTIMESP=20397> <P DESIGNTIMESP=20398><FONT face=Tahoma size=2 DESIGNTIMESP=20399>$a*$b</FONT></P></TD> <TD DESIGNTIMESP=20400> <P DESIGNTIMESP=20401><FONT face=Tahoma size=2 DESIGNTIMESP=20402>Умножение</FONT></P></TD> <TD DESIGNTIMESP=20403> <P DESIGNTIMESP=20404><FONT face=Tahoma size=2 DESIGNTIMESP=20405>Произведение $а и $b</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20406> <TD DESIGNTIMESP=20407> <P DESIGNTIMESP=20408><FONT face=Tahoma size=2 DESIGNTIMESP=20409>$a/$b</FONT></P></TD> <TD DESIGNTIMESP=20410> <P DESIGNTIMESP=20411><FONT face=Tahoma size=2 DESIGNTIMESP=20412>Деление</FONT></P></TD> <TD DESIGNTIMESP=20413> <P DESIGNTIMESP=20414><FONT face=Tahoma size=2 DESIGNTIMESP=20415>Частное от деления $а на $b</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20416> <TD DESIGNTIMESP=20417> <P DESIGNTIMESP=20418><FONT face=Tahoma size=2 DESIGNTIMESP=20419>$a % $b</FONT> </P></TD> <TD DESIGNTIMESP=20420> <P DESIGNTIMESP=20421><FONT face=Tahoma size=2 DESIGNTIMESP=20422>Остаток</FONT></P></TD> <TD DESIGNTIMESP=20423> <P DESIGNTIMESP=20424><FONT face=Tahoma size=2 DESIGNTIMESP=20425>Остаток от целочисленного деления $а на $b</FONT> </P></TD> </TR> </TABLE> <P class="Text_Bold" DESIGNTIMESP=20426><FONT face=Tahoma size=2 DESIGNTIMESP=20427></FONT>&nbsp;</P> <P DESIGNTIMESP=20428><FONT face=Tahoma size=2 DESIGNTIMESP=20429>Оператор деления «/» возвращает целое значение (то есть выполняет целочисленное деление), если делимое и делитель — целые числа (строки конвертируются в целые числа). Иначе если одно из чисел дробное, то результат будет также-дробным. </FONT> </P> <P class="Title_3" DESIGNTIMESP=20430><FONT face=Tahoma size=2 DESIGNTIMESP=20431>Инкремент/Декремент </FONT> </P> <P DESIGNTIMESP=20432><FONT face=Tahoma size=2 DESIGNTIMESP=20433>РНР использует синтаксис С в операторах пре- и постинкремента и декремента. </FONT> </P> <TABLE FRAME="box" RULES="all" BORDER="1" DESIGNTIMESP=20434> <TR DESIGNTIMESP=20435> <TD DESIGNTIMESP=20436> <P DESIGNTIMESP=20437><FONT face=Tahoma size=2 DESIGNTIMESP=20438>Пример</FONT></P></TD> <TD DESIGNTIMESP=20439> <P DESIGNTIMESP=20440><FONT face=Tahoma size=2 DESIGNTIMESP=20441>Название</FONT></P></TD> <TD DESIGNTIMESP=20442> <P DESIGNTIMESP=20443><FONT face=Tahoma size=2 DESIGNTIMESP=20444>Результат</FONT></P></TD> </TR> <TR DESIGNTIMESP=20445> <TD DESIGNTIMESP=20446> <P DESIGNTIMESP=20447><FONT face=Tahoma size=2 DESIGNTIMESP=20448>++$а</FONT></P></TD> <TD DESIGNTIMESP=20449> <P DESIGNTIMESP=20450><FONT face=Tahoma size=2 DESIGNTIMESP=20451>Преинкремент</FONT></P></TD> <TD DESIGNTIMESP=20452> <P DESIGNTIMESP=20453><FONT face=Tahoma size=2 DESIGNTIMESP=20454>Увеличивает $а на единицу, а затем возвращает значение $а</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20455> <TD DESIGNTIMESP=20456> <P DESIGNTIMESP=20457><FONT face=Tahoma size=2 DESIGNTIMESP=20458>$а++</FONT></P></TD> <TD DESIGNTIMESP=20459> <P DESIGNTIMESP=20460><FONT face=Tahoma size=2 DESIGNTIMESP=20461>Постинкремент</FONT></P></TD> <TD DESIGNTIMESP=20462> <P DESIGNTIMESP=20463><FONT face=Tahoma size=2 DESIGNTIMESP=20464>Возвращает $а, а затем увеличивает $а на единицу</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20465> <TD DESIGNTIMESP=20466> <P DESIGNTIMESP=20467><FONT face=Tahoma size=2 DESIGNTIMESP=20468>-$а</FONT></P></TD> <TD DESIGNTIMESP=20469> <P DESIGNTIMESP=20470><FONT face=Tahoma size=2 DESIGNTIMESP=20471>Предекремент</FONT></P></TD> <TD DESIGNTIMESP=20472> <P DESIGNTIMESP=20473><FONT face=Tahoma size=2 DESIGNTIMESP=20474>Уменьшает $а на единицу, а затем возвращает значение $а</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20475> <TD DESIGNTIMESP=20476> <P DESIGNTIMESP=20477><FONT face=Tahoma size=2 DESIGNTIMESP=20478>$а-</FONT></P></TD> <TD DESIGNTIMESP=20479> <P DESIGNTIMESP=20480><FONT face=Tahoma size=2 DESIGNTIMESP=20481>Постдекрсмент</FONT></P></TD> <TD DESIGNTIMESP=20482> <P DESIGNTIMESP=20483><FONT face=Tahoma size=2 DESIGNTIMESP=20484>Возвращает $а, а затем уменьшает $а на единицу</FONT> </P></TD> </TR> </TABLE> <pre designtimesp=20485><FONT face=Tahoma size=2 DESIGNTIMESP=20486>&nbsp; </FONT> <P DESIGNTIMESP=20487></P> <FONT face=Tahoma size=2 DESIGNTIMESP=20488> </FONT> <P DESIGNTIMESP=20489><FONT face=Tahoma size=2 DESIGNTIMESP=20490> &lt;?php echo "&lt;h3&gt;Postincrement&lt;/h3&gt;"; $a = 5: echo "Должно равняться 5. "<br designtimesp=20491> . $a++ "&lt;br&gt;\n"; echo "Должно равняться 6: " .<br designtimesp=20492> $a . "&lt;br&gt;\n"; echo "&lt;h3&gt;Preincrement&lt;/h3&gt;". $a = 5: echo "Должно равняться б: " <br designtimesp=20493>. ++$a . "&lt;br&gt;\n"; echo "Должно равняться 6: " <br designtimesp=20494>. $a . "&lt;br&gt;\n"; / echo "&lt;h3&gt;Postdecrement&lt;/h3&gt;": a = 5. echo "Должно равняться 5: " .<br designtimesp=20495> $a-- . "&lt;br&gt;\n" echo "Должно равняться 4: " . $a . "&lt;br&gt;\n". echo "&lt;h3&gt;Predecrement&lt;/h3&gt;": $a = 5. echo "Должно равняться 4: " .<br designtimesp=20496> --$a . "&lt;br&gt;\n" echo "Должно равняться 4: " <br designtimesp=20497>. $a . "&lt;br&gt;\n": r </FONT> </P></pre> <P class="Title_3" DESIGNTIMESP=20498><FONT face=Tahoma size=2 DESIGNTIMESP=20499>Бинарные операторы </FONT> </P> <P DESIGNTIMESP=20500><FONT face=Tahoma size=2 DESIGNTIMESP=20501>Бинарные операторы изменяют значения отдельных битов в целочисленных переменных. </FONT> </P> <TABLE FRAME="box" RULES="all" BORDER="1" DESIGNTIMESP=20502> <TR DESIGNTIMESP=20503> <TD DESIGNTIMESP=20504> <P DESIGNTIMESP=20505><FONT face=Tahoma size=2 DESIGNTIMESP=20506>Пример</FONT></P></TD> <TD DESIGNTIMESP=20507> <P DESIGNTIMESP=20508><FONT face=Tahoma size=2 DESIGNTIMESP=20509>Название</FONT></P></TD> <TD DESIGNTIMESP=20510> <P DESIGNTIMESP=20511><FONT face=Tahoma size=2 DESIGNTIMESP=20512>Результат</FONT></P></TD> </TR> <TR DESIGNTIMESP=20513> <TD DESIGNTIMESP=20514> <P DESIGNTIMESP=20515><FONT face=Tahoma size=2 DESIGNTIMESP=20516>$а &amp; $b</FONT> </P></TD> <TD DESIGNTIMESP=20517> <P DESIGNTIMESP=20518><FONT face=Tahoma size=2 DESIGNTIMESP=20519>Побитовое И</FONT> </P></TD> <TD DESIGNTIMESP=20520> <P DESIGNTIMESP=20521><FONT face=Tahoma size=2 DESIGNTIMESP=20522>Побитовое «умножение» (1, если оба бита равны 1)</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20523> <TD DESIGNTIMESP=20524> <P DESIGNTIMESP=20525><FONT face=Tahoma size=2 DESIGNTIMESP=20526>$а | $b</FONT> </P></TD> <TD DESIGNTIMESP=20527> <P DESIGNTIMESP=20528><FONT face=Tahoma size=2 DESIGNTIMESP=20529>Побитовое ИЛИ</FONT> </P></TD> <TD DESIGNTIMESP=20530> <P DESIGNTIMESP=20531><FONT face=Tahoma size=2 DESIGNTIMESP=20532>Побитовое «сложение» (0, если оба бита равны 0)</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20533> <TD DESIGNTIMESP=20534> <P DESIGNTIMESP=20535><FONT face=Tahoma size=2 DESIGNTIMESP=20536>$а Л $b</FONT> </P></TD> <TD DESIGNTIMESP=20537> <P DESIGNTIMESP=20538><FONT face=Tahoma size=2 DESIGNTIMESP=20539>Побитовое исключающее ИЛИ</FONT> </P></TD> <TD DESIGNTIMESP=20540> <P DESIGNTIMESP=20541><FONT face=Tahoma size=2 DESIGNTIMESP=20542>«Различие» (1, если биты различные)</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20543> <TD DESIGNTIMESP=20544> <P DESIGNTIMESP=20545><FONT face=Tahoma size=2 DESIGNTIMESP=20546>-$а</FONT></P></TD> <TD DESIGNTIMESP=20547> <P DESIGNTIMESP=20548><FONT face=Tahoma size=2 DESIGNTIMESP=20549>Инверсия</FONT></P></TD> <TD DESIGNTIMESP=20550> <P DESIGNTIMESP=20551><FONT face=Tahoma size=2 DESIGNTIMESP=20552>Меняет 1 на 0, а 0 на 1</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20553> <TD DESIGNTIMESP=20554> <P DESIGNTIMESP=20555><FONT face=Tahoma size=2 DESIGNTIMESP=20556>$а « Sb</FONT> </P></TD> <TD DESIGNTIMESP=20557> <P DESIGNTIMESP=20558><FONT face=Tahoma size=2 DESIGNTIMESP=20559>Побитовый сдвиг влево</FONT> </P></TD> <TD DESIGNTIMESP=20560> <P DESIGNTIMESP=20561><FONT face=Tahoma size=2 DESIGNTIMESP=20562>Эквивалентен умножению на 2 $b раз</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20563> <TD DESIGNTIMESP=20564> <P DESIGNTIMESP=20565><FONT face=Tahoma size=2 DESIGNTIMESP=20566>$а » $b</FONT> </P></TD> <TD DESIGNTIMESP=20567> <P DESIGNTIMESP=20568><FONT face=Tahoma size=2 DESIGNTIMESP=20569>Побитовый сдвиг вправо</FONT> </P></TD> <TD DESIGNTIMESP=20570> <P DESIGNTIMESP=20571><FONT face=Tahoma size=2 DESIGNTIMESP=20572>Эквивалентен делению на 2 $b раз</FONT> </P></TD> </TR> </TABLE> <P DESIGNTIMESP=20573><FONT face=Tahoma size=2 DESIGNTIMESP=20574>Схема действия побитовых операций: </FONT> </P> <TABLE FRAME="box" RULES="all" BORDER="1" DESIGNTIMESP=20575> <TR DESIGNTIMESP=20576> <TD COLSPAN="2" DESIGNTIMESP=20577> <P DESIGNTIMESP=20578><FONT face=Tahoma size=2 DESIGNTIMESP=20579>Биты</FONT></P></TD> <TD COLSPAN="4" DESIGNTIMESP=20580> <P DESIGNTIMESP=20581><FONT face=Tahoma size=2 DESIGNTIMESP=20582>Результат оператора</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20583> <TD DESIGNTIMESP=20584> <P DESIGNTIMESP=20585><FONT face=Tahoma size=2 DESIGNTIMESP=20586>$а</FONT></P></TD> <TD DESIGNTIMESP=20587> <P DESIGNTIMESP=20588><FONT face=Tahoma size=2 DESIGNTIMESP=20589>$ь</FONT></P></TD> <TD DESIGNTIMESP=20590> <P DESIGNTIMESP=20591><FONT face=Tahoma size=2 DESIGNTIMESP=20592>$а &amp; $b</FONT> </P></TD> <TD DESIGNTIMESP=20593> <P DESIGNTIMESP=20594><FONT face=Tahoma size=2 DESIGNTIMESP=20595>$а| $b</FONT> </P></TD> <TD DESIGNTIMESP=20596> <P DESIGNTIMESP=20597><FONT face=Tahoma size=2 DESIGNTIMESP=20598>$ал $b</FONT> </P></TD> <TD DESIGNTIMESP=20599> <P DESIGNTIMESP=20600><FONT face=Tahoma size=2 DESIGNTIMESP=20601>~$а</FONT></P></TD> </TR> <TR DESIGNTIMESP=20602> <TD DESIGNTIMESP=20603> <P DESIGNTIMESP=20604><FONT face=Tahoma size=2 DESIGNTIMESP=20605>0</FONT></P></TD> <TD DESIGNTIMESP=20606> <P DESIGNTIMESP=20607><FONT face=Tahoma size=2 DESIGNTIMESP=20608>0</FONT></P></TD> <TD DESIGNTIMESP=20609> <P DESIGNTIMESP=20610><FONT face=Tahoma size=2 DESIGNTIMESP=20611>0</FONT></P></TD> <TD DESIGNTIMESP=20612> <P DESIGNTIMESP=20613><FONT face=Tahoma size=2 DESIGNTIMESP=20614>0</FONT></P></TD> <TD DESIGNTIMESP=20615> <P DESIGNTIMESP=20616><FONT face=Tahoma size=2 DESIGNTIMESP=20617>0</FONT></P></TD> <TD DESIGNTIMESP=20618> <P DESIGNTIMESP=20619><FONT face=Tahoma size=2 DESIGNTIMESP=20620>1</FONT></P></TD> </TR> <TR DESIGNTIMESP=20621> <TD DESIGNTIMESP=20622> <P DESIGNTIMESP=20623><FONT face=Tahoma size=2 DESIGNTIMESP=20624>0</FONT></P></TD> <TD DESIGNTIMESP=20625> <P DESIGNTIMESP=20626><FONT face=Tahoma size=2 DESIGNTIMESP=20627>1</FONT></P></TD> <TD DESIGNTIMESP=20628> <P DESIGNTIMESP=20629><FONT face=Tahoma size=2 DESIGNTIMESP=20630>0</FONT></P></TD> <TD DESIGNTIMESP=20631> <P DESIGNTIMESP=20632><FONT face=Tahoma size=2 DESIGNTIMESP=20633>1</FONT></P></TD> <TD DESIGNTIMESP=20634> <P DESIGNTIMESP=20635><FONT face=Tahoma size=2 DESIGNTIMESP=20636>1</FONT></P></TD> <TD DESIGNTIMESP=20637> <P DESIGNTIMESP=20638><FONT face=Tahoma size=2 DESIGNTIMESP=20639>1</FONT></P></TD> </TR> <TR DESIGNTIMESP=20640> <TD DESIGNTIMESP=20641> <P DESIGNTIMESP=20642><FONT face=Tahoma size=2 DESIGNTIMESP=20643>1</FONT></P></TD> <TD DESIGNTIMESP=20644> <P DESIGNTIMESP=20645><FONT face=Tahoma size=2 DESIGNTIMESP=20646>0</FONT></P></TD> <TD DESIGNTIMESP=20647> <P DESIGNTIMESP=20648><FONT face=Tahoma size=2 DESIGNTIMESP=20649>0</FONT></P></TD> <TD DESIGNTIMESP=20650> <P DESIGNTIMESP=20651><FONT face=Tahoma size=2 DESIGNTIMESP=20652>1</FONT></P></TD> <TD DESIGNTIMESP=20653> <P DESIGNTIMESP=20654><FONT face=Tahoma size=2 DESIGNTIMESP=20655>1</FONT></P></TD> <TD DESIGNTIMESP=20656> <P DESIGNTIMESP=20657><FONT face=Tahoma size=2 DESIGNTIMESP=20658>0</FONT></P></TD> </TR> <TR DESIGNTIMESP=20659> <TD DESIGNTIMESP=20660> <P DESIGNTIMESP=20661><FONT face=Tahoma size=2 DESIGNTIMESP=20662>1</FONT></P></TD> <TD DESIGNTIMESP=20663> <P DESIGNTIMESP=20664><FONT face=Tahoma size=2 DESIGNTIMESP=20665>1</FONT></P></TD> <TD DESIGNTIMESP=20666> <P DESIGNTIMESP=20667><FONT face=Tahoma size=2 DESIGNTIMESP=20668>1</FONT></P></TD> <TD DESIGNTIMESP=20669> <P DESIGNTIMESP=20670><FONT face=Tahoma size=2 DESIGNTIMESP=20671>1</FONT></P></TD> <TD DESIGNTIMESP=20672> <P DESIGNTIMESP=20673><FONT face=Tahoma size=2 DESIGNTIMESP=20674>0</FONT></P></TD> <TD DESIGNTIMESP=20675> <P DESIGNTIMESP=20676><FONT face=Tahoma size=2 DESIGNTIMESP=20677>0</FONT></P></TD> </TR> </TABLE> <P class="Title_3" DESIGNTIMESP=20678><FONT face=Tahoma size=2 DESIGNTIMESP=20679>Операторы сравнения </FONT> </P> <TABLE FRAME="box" RULES="all" BORDER="1" DESIGNTIMESP=20680> <TR DESIGNTIMESP=20681> <TD DESIGNTIMESP=20682> <P DESIGNTIMESP=20683><FONT face=Tahoma size=2 DESIGNTIMESP=20684>Пример</FONT></P></TD> <TD DESIGNTIMESP=20685> <P DESIGNTIMESP=20686><FONT face=Tahoma size=2 DESIGNTIMESP=20687>Название</FONT></P></TD> <TD DESIGNTIMESP=20688> <P DESIGNTIMESP=20689><FONT face=Tahoma size=2 DESIGNTIMESP=20690>Результат</FONT></P></TD> </TR> <TR DESIGNTIMESP=20691> <TD DESIGNTIMESP=20692> <P DESIGNTIMESP=20693><FONT face=Tahoma size=2 DESIGNTIMESP=20694>$а -= $b< /FONT> </P></TD> <TD DESIGNTIMESP=20695> <P DESIGNTIMESP=20696><FONT face=Tahoma size=2 DESIGNTIMESP=20697>Равенство</FONT></P></TD> <TD DESIGNTIMESP=20698> <P DESIGNTIMESP=20699><FONT face=Tahoma size=2 DESIGNTIMESP=20700>True, если $а равно $b</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20701> <TD DESIGNTIMESP=20702> <P DESIGNTIMESP=20703><FONT face=Tahoma size=2 DESIGNTIMESP=20704>$а === $b</FONT > </P></TD> <TD DESIGNTIMESP=20705> <P DESIGNTIMESP=20706><FONT face=Tahoma size=2 DESIGNTIMESP=20707>Идентичность</FONT></P></TD> <TD DESIGNTIMESP=20708> <P DESIGNTIMESP=20709><FONT face=Tahoma size=2 DESIGNTIMESP=20710>True, если $а равно $b, и они одного типа</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20711> <TD DESIGNTIMESP=20712> <P DESIGNTIMESP=20713><FONT face=Tahoma size=2 DESIGNTIMESP=20714>$а != $b< /FONT> </P></TD> <TD DESIGNTIMESP=20715> <P DESIGNTIMESP=20716><FONT face=Tahoma size=2 DESIGNTIMESP=20717>Неравенство</FONT></P></TD> <TD DESIGNTIMESP=20718> <P DESIGNTIMESP=20719><FONT face=Tahoma size=2 DESIGNTIMESP=20720>True, если $а не равно $b</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20721> <TD DESIGNTIMESP=20722> <P DESIGNTIMESP=20723><FONT face=Tahoma size=2 DESIGNTIMESP=20724>Sa !== $b< /FONT> </P></TD> <TD DESIGNTIMESP=20725> <P DESIGNTIMESP=20726><FONT face=Tahoma size=2 DESIGNTIMESP=20727>Неидентичность</FONT></P></TD> <TD DESIGNTIMESP=20728> <P DESIGNTIMESP=20729><FONT face=Tahoma size=2 DESIGNTIMESP=20730>True, если $а не равно $b, или они разного типа</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20731> <TD DESIGNTIMESP=20732> <P DESIGNTIMESP=20733><FONT face=Tahoma size=2 DESIGNTIMESP=20734>$a&lt;$b</FONT></P></TD> <TD DESIGNTIMESP=20735> <P DESIGNTIMESP=20736><FONT face=Tahoma size=2 DESIGNTIMESP=20737>Меньше чем</FONT> </P></TD> <TD DESIGNTIMESP=20738> <P DESIGNTIMESP=20739><FONT face=Tahoma size=2 DESIGNTIMESP=20740>True, если $а меньше чем $b</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20741> <TD DESIGNTIMESP=20742> <P DESIGNTIMESP=20743><FONT face=Tahoma size=2 DESIGNTIMESP=20744>$a&gt;$b</FONT></P></TD> <TD DESIGNTIMESP=20745> <P DESIGNTIMESP=20746><FONT face=Tahoma size=2 DESIGNTIMESP=20747>Больше чем</FONT> </P></TD> <TD DESIGNTIMESP=20748> <P DESIGNTIMESP=20749><FONT face=Tahoma size=2 DESIGNTIMESP=20750>True, если $а больше чем $b</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20751> <TD DESIGNTIMESP=20752> <P DESIGNTIMESP=20753><FONT face=Tahoma size=2 DESIGNTIMESP=20754>$a &lt;= $b< /FONT> </P></TD> <TD DESIGNTIMESP=20755> <P DESIGNTIMESP=20756><FONT face=Tahoma size=2 DESIGNTIMESP=20757>Меньше или равно</FONT> </P></TD> <TD DESIGNTIMESP=20758> <P DESIGNTIMESP=20759><FONT face=Tahoma size=2 DESIGNTIMESP=20760>True, если $а меньше или равно $b</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20761> <TD DESIGNTIMESP=20762> <P DESIGNTIMESP=20763><FONT face=Tahoma size=2 DESIGNTIMESP=20764>$a &gt;= $b< /FONT> </P></TD> <TD DESIGNTIMESP=20765> <P DESIGNTIMESP=20766><FONT face=Tahoma size=2 DESIGNTIMESP=20767>Больше или равно</FONT> </P></TD> <TD DESIGNTIMESP=20768> <P DESIGNTIMESP=20769><FONT face=Tahoma size=2 DESIGNTIMESP=20770>True, если $а больше или равно $b</FONT> </P></TD> </TR> </TABLE> <P DESIGNTIMESP=20771><FONT face=Tahoma size=2 DESIGNTIMESP=20772>Другой условный оператор «? :» (тернарный), с синтаксисом: </FONT> </P> <pre designtimesp=20773><P DESIGNTIMESP=20774><FONT face=Tahoma size=2 DESIGNTIMESP=20775> ((exprl) ? (ехрг2) : (ехргЗ))</FONT> </P><FONT face=Tahoma size=2 DESIGNTIMESP=20776> </FONT> </pre> <P DESIGNTIMESP=20777><FONT face=Tahoma size=2 DESIGNTIMESP=20778>действует так: это выражение имеет значение, равное ехрг2, если exprl равняется TRUE, в противном случае (если exprl = FALSE) оно равняется ехргЗ. < /FONT > </P> <P class="Title_3" DESIGNTIMESP=20779><FONT face=Tahoma size=2 DESIGNTIMESP=20780>Логические операторы </FONT> </P> <TABLE FRAME="box" RULES="all" BORDER="1" DESIGNTIMESP=20781> <TR DESIGNTIMESP=20782> <TD DESIGNTIMESP=20783> <P DESIGNTIMESP=20784><FONT face=Tahoma size=2 DESIGNTIMESP=20785>Пример</FONT></P></TD> <TD DESIGNTIMESP=20786> <P DESIGNTIMESP=20787><FONT face=Tahoma size=2 DESIGNTIMESP=20788>Название</FONT></P></TD> <TD DESIGNTIMESP=20789> <P DESIGNTIMESP=20790><FONT face=Tahoma size=2 DESIGNTIMESP=20791>Результат</FONT></P></TD> </TR> <TR DESIGNTIMESP=20792> <TD DESIGNTIMESP=20793> <P DESIGNTIMESP=20794><FONT face=Tahoma size=2 DESIGNTIMESP=20795>$а and $b</FONT> </P></TD> <TD DESIGNTIMESP=20796> <P DESIGNTIMESP=20797><FONT face=Tahoma size=2 DESIGNTIMESP=20798>Логическое И</FONT> </P></TD> <TD DESIGNTIMESP=20799> <P DESIGNTIMESP=20800><FONT face=Tahoma size=2 DESIGNTIMESP=20801>True, если $а И $b равны TRUE</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20802> <TD DESIGNTIMESP=20803> <P DESIGNTIMESP=20804><FONT face=Tahoma size=2 DESIGNTIMESP=20805>$а or $b</FONT> </P></TD> <TD DESIGNTIMESP=20806> <P DESIGNTIMESP=20807><FONT face=Tahoma size=2 DESIGNTIMESP=20808>Логическое ИЛИ</FONT> </P></TD> <TD DESIGNTIMESP=20809> <P DESIGNTIMESP=20810><FONT face=Tahoma size=2 DESIGNTIMESP=20811>True, если $а ИЛИ $b равно TRUE</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20812> <TD DESIGNTIMESP=20813> <P DESIGNTIMESP=20814><FONT face=Tahoma size=2 DESIGNTIMESP=20815>$а xor $b</FONT> </P></TD> <TD DESIGNTIMESP=20816> <P DESIGNTIMESP=20817><FONT face=Tahoma size=2 DESIGNTIMESP=20818>Логическое исключающее ИЛИ</FONT> </P></TD> <TD DESIGNTIMESP=20819> <P DESIGNTIMESP=20820><FONT face=Tahoma size=2 DESIGNTIMESP=20821>True, если $а и $b имеют разные логические значения</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20822> <TD DESIGNTIMESP=20823> <P DESIGNTIMESP=20824><FONT face=Tahoma size=2 DESIGNTIMESP=20825>!$а</FONT></P></TD> <TD DESIGNTIMESP=20826> <P DESIGNTIMESP=20827><FONT face=Tahoma size=2 DESIGNTIMESP=20828>НЕ</FONT></P></TD> <TD DESIGNTIMESP=20829> <P DESIGNTIMESP=20830><FONT face=Tahoma size=2 DESIGNTIMESP=20831>Логическая инверсия</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20832> <TD DESIGNTIMESP=20833> <P DESIGNTIMESP=20834><FONT face=Tahoma size=2 DESIGNTIMESP=20835>$а &amp;&amp; $b</FONT> </P></TD> <TD DESIGNTIMESP=20836> <P DESIGNTIMESP=20837><FONT face=Tahoma size=2 DESIGNTIMESP=20838>Логическое И</FONT> </P></TD> <TD DESIGNTIMESP=20839> <P DESIGNTIMESP=20840><FONT face=Tahoma size=2 DESIGNTIMESP=20841>Аналогия «and»</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20842> <TD DESIGNTIMESP=20843> <P DESIGNTIMESP=20844><FONT face=Tahoma size=2 DESIGNTIMESP=20845>$а || $b</FONT> </P></TD> <TD DESIGNTIMESP=20846> <P DESIGNTIMESP=20847><FONT face=Tahoma size=2 DESIGNTIMESP=20848>Логическое ИЛИ</FONT> </P></TD> <TD DESIGNTIMESP=20849> <P DESIGNTIMESP=20850><FONT face=Tahoma size=2 DESIGNTIMESP=20851>Аналогия «or»</FONT> </P></TD> </TR> </TABLE> <P DESIGNTIMESP=20852><FONT face=Tahoma size=2 DESIGNTIMESP=20853>Причина наличия двух аналогичных вариантов для операторов and и or — их различный приоритет (см. «Приоритет операторов»). </FONT> </P> <P DESIGNTIMESP=20854><FONT face=Tahoma size=2 DESIGNTIMESP=20855></FONT> </P> <P class="Text_Bold" DESIGNTIMESP=20856><FONT face=Tahoma size=2 DESIGNTIMESP=20857>Конкатенация — слияние строк </FONT> </P> <P DESIGNTIMESP=20858><FONT face=Tahoma size=2 DESIGNTIMESP=20859>Имеется два строковых оператора: конкатенация «.», объединяющая строки, и конкатенация с присваиванием «.=», которая позволяет сократить запись $А = $А . $Х; до $А .= $Х;. < /FONT> <pre designtimesp=20860><P DESIGNTIMESP=20861><FONT face=Tahoma size=2 DESIGNTIMESP=20862> $a = 'Hello '; $b = $a "World!" // теперь $b содержит "Hello World!" < /FONT > </P></pre> <P class="Title_3" DESIGNTIMESP=20863><FONT face=Tahoma size=2 DESIGNTIMESP=20864>Приоритет операторов </FONT> </P> <P DESIGNTIMESP=20865><FONT face=Tahoma size=2 DESIGNTIMESP=20866>Приоритет операторов определяет порядок вычисления значений выражений. Например, выражение 1+5*3 равно 16, а не 18, потому что умножение имеет более высокий приоритет и вычисляется до сложения. Скобки изменяют приоритет операторов, например: </FONT> </P> <P DESIGNTIMESP=20867><FONT face=Tahoma size=2 DESIGNTIMESP=20868>(1+5)* 3 == 18 < /FONT > </P> <TABLE FRAME="box" RULES="all" BORDER="1" DESIGNTIMESP=20869> <TR DESIGNTIMESP=20870> <TD DESIGNTIMESP=20871> <P DESIGNTIMESP=20872><FONT face=Tahoma size=2 DESIGNTIMESP=20873>Ассоциативность</FONT></P></TD> <TD DESIGNTIMESP=20874> <P DESIGNTIMESP=20875><FONT face=Tahoma size=2 DESIGNTIMESP=20876>Операторы (в порядке уменьшения приоритета)</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20877> <TD DESIGNTIMESP=20878> <P DESIGNTIMESP=20879><FONT face=Tahoma size=2 DESIGNTIMESP=20880>левая</FONT></P></TD> <TD DESIGNTIMESP=20881><FONT face=Tahoma size=2 DESIGNTIMESP=20882>&nbsp; </FONT> </TD> </TR> <TR DESIGNTIMESP=20883> <TD DESIGNTIMESP=20884> <P DESIGNTIMESP=20885><FONT face=Tahoma size=2 DESIGNTIMESP=20886>левая</FONT></P></TD> <TD DESIGNTIMESP=20887> <P DESIGNTIMESP=20888><FONT face=Tahoma size=2 DESIGNTIMESP=20889>or</FONT></P></TD> </TR> <TR DESIGNTIMESP=20890> <TD DESIGNTIMESP=20891> <P DESIGNTIMESP=20892><FONT face=Tahoma size=2 DESIGNTIMESP=20893>левая</FONT></P></TD> <TD DESIGNTIMESP=20894> <P DESIGNTIMESP=20895><FONT face=Tahoma size=2 DESIGNTIMESP=20896>XOr</FONT></P></TD> </TR> <TR DESIGNTIMESP=20897> <TD DESIGNTIMESP=20898> <P DESIGNTIMESP=20899><FONT face=Tahoma size=2 DESIGNTIMESP=20900>левая</FONT></P></TD> <TD DESIGNTIMESP=20901> <P DESIGNTIMESP=20902><FONT face=Tahoma size=2 DESIGNTIMESP=20903>and</FONT></P></TD> </TR> <TR DESIGNTIMESP=20904> <TD DESIGNTIMESP=20905> <P DESIGNTIMESP=20906><FONT face=Tahoma size=2 DESIGNTIMESP=20907>правая</FONT></P></TD> <TD DESIGNTIMESP=20908> <P DESIGNTIMESP=20909><FONT face=Tahoma size=2 DESIGNTIMESP=20910>print</FONT></P></TD> </TR> <TR DESIGNTIMESP=20911> <TD DESIGNTIMESP=20912> <P DESIGNTIMESP=20913><FONT face=Tahoma size=2 DESIGNTIMESP=20914>левая</FONT></P></TD> <TD DESIGNTIMESP=20915> <P DESIGNTIMESP=20916><FONT face=Tahoma size=2 DESIGNTIMESP=20917>= += .= *= /=ж = %= &amp;-, |= &amp;___ &lt;&lt;= &gt;&gt;= < /FONT ></P></TD> </TR> <TR DESIGNTIMESP=20918> <TD DESIGNTIMESP=20919> <P DESIGNTIMESP=20920><FONT face=Tahoma size=2 DESIGNTIMESP=20921>левая</FONT></P></TD> <TD DESIGNTIMESP=20922> <P DESIGNTIMESP=20923><FONT face=Tahoma size=2 DESIGNTIMESP=20924>V ;</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20925> <TD DESIGNTIMESP=20926> <P DESIGNTIMESP=20927><FONT face=Tahoma size=2 DESIGNTIMESP=20928>левая</FONT></P></TD> <TD DESIGNTIMESP=20929> <P DESIGNTIMESP=20930><FONT face=Tahoma size=2 DESIGNTIMESP=20931>II</FONT></P></TD> </TR> <TR DESIGNTIMESP=20932> <TD DESIGNTIMESP=20933> <P DESIGNTIMESP=20934><FONT face=Tahoma size=2 DESIGNTIMESP=20935>левая</FONT></P></TD> <TD DESIGNTIMESP=20936> <P DESIGNTIMESP=20937><FONT face=Tahoma size=2 DESIGNTIMESP=20938>&amp;&amp;</FONT></P></TD> </TR> <TR DESIGNTIMESP=20939> <TD DESIGNTIMESP=20940> <P DESIGNTIMESP=20941><FONT face=Tahoma size=2 DESIGNTIMESP=20942>левая</FONT></P></TD> <TD DESIGNTIMESP=20943> <P DESIGNTIMESP=20944><FONT face=Tahoma size=2 DESIGNTIMESP=20945>!</FONT></P></TD> </TR> <TR DESIGNTIMESP=20946> <TD DESIGNTIMESP=20947> <P DESIGNTIMESP=20948><FONT face=Tahoma size=2 DESIGNTIMESP=20949>левая</FONT></P></TD> <TD DESIGNTIMESP=20950> <P DESIGNTIMESP=20951><FONT face=Tahoma size=2 DESIGNTIMESP=20952>&amp;</FONT></P></TD> </TR> <TR DESIGNTIMESP=20953> <TD DESIGNTIMESP=20954> <P DESIGNTIMESP=20955><FONT face=Tahoma size=2 DESIGNTIMESP=20956>левая</FONT></P></TD> <TD DESIGNTIMESP=20957> <P DESIGNTIMESP=20958><FONT face=Tahoma size=2 DESIGNTIMESP=20959>&amp;</FONT></P></TD> </TR> <TR DESIGNTIMESP=20960> <TD DESIGNTIMESP=20961> <P DESIGNTIMESP=20962><FONT face=Tahoma size=2 DESIGNTIMESP=20963>не имеет</FONT> </P></TD> <TD DESIGNTIMESP=20964> <P DESIGNTIMESP=20965><FONT face=Tahoma size=2 DESIGNTIMESP=20966>== != === i ==< /FONT></P></TD> </TR> <TR DESIGNTIMESP=20967> <TD DESIGNTIMESP=20968> <P DESIGNTIMESP=20969><FONT face=Tahoma size=2 DESIGNTIMESP=20970>не имеет</FONT> </P></TD> <TD DESIGNTIMESP=20971> <P DESIGNTIMESP=20972><FONT face=Tahoma size=2 DESIGNTIMESP=20973>&lt;&lt;-&gt;&gt;=</FONT></P></TD> </TR> <TR DESIGNTIMESP=20974> <TD DESIGNTIMESP=20975> <P DESIGNTIMESP=20976><FONT face=Tahoma size=2 DESIGNTIMESP=20977>левая</FONT></P></TD> <TD DESIGNTIMESP=20978> <P DESIGNTIMESP=20979><FONT face=Tahoma size=2 DESIGNTIMESP=20980>« »</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20981> <TD DESIGNTIMESP=20982> <P DESIGNTIMESP=20983><FONT face=Tahoma size=2 DESIGNTIMESP=20984>левая</FONT></P></TD> <TD DESIGNTIMESP=20985> <P DESIGNTIMESP=20986><FONT face=Tahoma size=2 DESIGNTIMESP=20987>+-.</FONT></P></TD> </TR> </TABLE> <TABLE FRAME="box" RULES="all" BORDER="1" DESIGNTIMESP=20988> <TR DESIGNTIMESP=20989> <TD DESIGNTIMESP=20990> <P DESIGNTIMESP=20991><FONT face=Tahoma size=2 DESIGNTIMESP=20992>Ассоциативность</FONT></P></TD> <TD DESIGNTIMESP=20993> <P DESIGNTIMESP=20994><FONT face=Tahoma size=2 DESIGNTIMESP=20995>Операторы (в порядке уменьшения приоритета)</FONT> </P></TD> </TR> <TR DESIGNTIMESP=20996> <TD DESIGNTIMESP=20997> <P DESIGNTIMESP=20998><FONT face=Tahoma size=2 DESIGNTIMESP=20999>левая</FONT></P></TD> <TD DESIGNTIMESP=21000> <P DESIGNTIMESP=21001><FONT face=Tahoma size=2 DESIGNTIMESP=21002>* / 0/</FONT> </P> <P DESIGNTIMESP=21003><FONT face=Tahoma size=2 DESIGNTIMESP=21004>/ %</FONT> </P></TD> </TR> <TR DESIGNTIMESP=21005> <TD DESIGNTIMESP=21006> <P DESIGNTIMESP=21007><FONT face=Tahoma size=2 DESIGNTIMESP=21008>(Ыправая</FONT></P></TD> <TD DESIGNTIMESP=21009> <P DESIGNTIMESP=21010><FONT face=Tahoma size=2 DESIGNTIMESP=21011>!-++.- (jnt) (double) (string) (array) (object) @</FONT> </P></TD> </TR> <TR DESIGNTIMESP=21012> <TD DESIGNTIMESP=21013> <P DESIGNTIMESP=21014><FONT face=Tahoma size=2 DESIGNTIMESP=21015>правая</FONT></P></TD> <TD DESIGNTIMESP=21016> <P DESIGNTIMESP=21017><FONT face=Tahoma size=2 DESIGNTIMESP=21018>F</FONT></P></TD> </TR> <TR DESIGNTIMESP=21019> <TD DESIGNTIMESP=21020> <P DESIGNTIMESP=21021><FONT face=Tahoma size=2 DESIGNTIMESP=21022>не имеет</FONT> </P></TD> <TD DESIGNTIMESP=21023> <P DESIGNTIMESP=21024><FONT face=Tahoma size=2 DESIGNTIMESP=21025>new</FONT></P></TD> </TR> </TABLE> <P DESIGNTIMESP=21026><FONT face=Tahoma size=2 DESIGNTIMESP=21027></FONT> </P> <P class="Title_3" DESIGNTIMESP=21028><FONT face=Tahoma size=2 DESIGNTIMESP=21029>Операторы контроля ошибок </FONT> </P> <P DESIGNTIMESP=21030><FONT face=Tahoma size=2 DESIGNTIMESP=21031>PHP поддерживает один оператор контроля ошибок — «0». Когда он предшествует выражению РНР, любое сообщение об ошибке, которое возникает при выполнении этого выражения, игнорируется. Если параметр track_errors разрешен, всякое сообщение об ошибке сохраняется в глобальной переменной $php_errormsg. Эта переменная перезаписывается каждый раз при возникновении новой ошибки. </FONT> <pre designtimesp=21032><P DESIGNTIMESP=21033><FONT face=Tahoma size=2 DESIGNTIMESP=21034> &lt;?php /* Умышленная ошибка в SQL (лишняя кавычка): */ $res = @mysql_query ("select name, code from 'namelist") or die ("Query failed er-or was '$php_errormsg'"): ?&gt; См. также функцию error_reporting(). < /FONT > </P></pre> <P DESIGNTIMESP=21035><FONT face=Tahoma size=2 DESIGNTIMESP=21036>Будьте внимательны: в настоящее время префиксный оператор контроля ошибок «@» блокирует даже сообщение о критических ошибках, прерывающих исполнение сценария. Поэтому при таком варианте выполнение сценария может быть прервано, но сообщение об ошибке выведено не будет. </FONT> </P> <P class="Title_3" DESIGNTIMESP=21037><FONT face=Tahoma size=2 DESIGNTIMESP=21038>Оператор запуска внешней программы </FONT> </P> <P DESIGNTIMESP=21039><FONT face=Tahoma size=2 DESIGNTIMESP=21040>В РНР есть оператор «обратная галочка» (backticks): (" ') для запуска внешней программы. Запомните, это не одинарная кавычка! РНР попытается запустить программу (или исполняемый сценарий), как если бы она запускалась из командной оболочки. То, что выдается при этом запуске на консоль вывода, возвращается и может быть сохранено в переменной (и использовано для вывода). Заметьте, сам запуск ничего не выводит, если он завершается успешно. </FONT> <pre designtimesp=21041><P DESIGNTIMESP=21042><FONT face=Tahoma size=2 DESIGNTIMESP=21043> // выдает список файлов текущего каталога Soutput = "Is -аГ: // в сиаемах Unix Soutput = 'dir'; // в системах Windows echo "&lt;pre&gt;$output&lt;/pre&gt;". // распечатать результат запуска команды &lt; /P &gt; &lt; /P &gt; < /FONT > < /P > </pre><FONT face=Tahoma size=2 DESIGNTIMESP=21044>См. также функции: system(), passthru(), exec(), popen() и escape-shel Icmd(). </FONT> <P DESIGNTIMESP=21045></P> <P class="Title_2" DESIGNTIMESP=21046> <a name="7" designtimesp=21047></a><FONT face=Tahoma size=2 DESIGNTIMESP=21048>If - Управляющие структуры </FONT> </P> <P DESIGNTIMESP=21049><FONT face=Tahoma size=2 DESIGNTIMESP=21050>Любой PHP-сценарий состоит из последовательности команд. Это могут быть присваивания, вызовы функций, циклы, условные структуры и даже пустые команды, которые ничего не делают «:&gt;&gt;. Команды обычно завершаются точкой с запятой и могут быть сгруппированы с помощью фигурных скобок (как в С}. Группа команд в фигурных скобках сама является командой (только без знака «;» в конце). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21051><FONT face=Tahoma size=2 DESIGNTIMESP=21052>if </FONT> </P> <P DESIGNTIMESP=21053><FONT face=Tahoma size=2 DESIGNTIMESP=21054>Одна из основных условных конструкций — if, она позволяет исполнить фрагмент кода при определенном условии. Ее синтаксис сходен с синтаксисом в С: </FONT> <pre designtimesp=21055><P DESIGNTIMESP=21056><FONT face=Tahoma size=2 DESIGNTIMESP=21057> if (условное_выражение) команда;</FONT> </P><FONT face=Tahoma size=2 DESIGNTIMESP=21058> </FONT> </pre> <P DESIGNTIMESP=21059><FONT face=Tahoma size=2 DESIGNTIMESP=21060>Как было описано выше, условное выражение проверяется на соответствие значению «истина». Если оно равно TRUE, PHP выполняет следующую команду, иначе — игнорирует ее.</FONT> </P> <pre designtimesp=21061><P DESIGNTIMESP=21062><FONT face=Tahoma size=2 DESIGNTIMESP=21063> if ($а &gt; $b) print "a is bigger than b";</FONT> </P> <FONT face=Tahoma size=2 DESIGNTIMESP=21064> </FONT> </pre> <P DESIGNTIMESP=21065><FONT face=Tahoma size=2 DESIGNTIMESP=21066>Часто нужно выполнить группу команд при определенном условии, тогда они группируются с помощью фигурных скобок. </FONT> <pre designtimesp=21067><P DESIGNTIMESP=21068><FONT face=Tahoma size=2 DESIGNTIMESP=21069> if ($а &gt; $b) { print "a is bigger than b": $b = $a; } Условные структуры могут быть<br designtimesp=21070> вложенными. </FONT> </P><P class="Text_Bold" DESIGNTIMESP=21071><FONT face=Tahoma size=2 DESIGNTIMESP=21072> else</FONT> </P><FONT face=Tahoma size=2 DESIGNTIMESP=21073> </FONT> </pre> <P DESIGNTIMESP=21074><FONT face=Tahoma size=2 DESIGNTIMESP=21075>Иногда требуется, чтобы при одном условии выполнялось одно действие, а в противном случае — другое; для этого используется ключевое слово else, расширяющее возможности if.</FONT> </P> <pre designtimesp=21076><P DESIGNTIMESP=21077><FONT face=Tahoma size=2 DESIGNTIMESP=21078> if ($a &gt; $b) { print "а больше чем b"; } <br designtimesp=21079>else { // ($а &lt;*• $b) "N print "а не больше чем b": </FONT> </P></pre> <P DESIGNTIMESP=21080><FONT face=Tahoma size=2 DESIGNTIMESP=21081>Фрагмент else выполняется только в том случае, если условное вы-/ ражение в скобках после if имеет значение FALSE, и другие выражения elseif (если они существуют), также имеют значение FALSE (см. ниже). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21082><FONT face=Tahoma size=2 DESIGNTIMESP=21083>elseif </FONT> </P> <P DESIGNTIMESP=21084><FONT face=Tahoma size=2 DESIGNTIMESP=21085>Условная конструкция elseif, как видно из названия, — комбинация if и else. Подобно else, она требует, чтобы основное выражение if равнялось FALSE, но также требует, чтобы се собственное выражение равнялось TRUE. </FONT> </P> <pre designtimesp=21086><P DESIGNTIMESP=21087><FONT face=Tahoma size=2 DESIGNTIMESP=21088> if ($a &gt; $t» { print "а больше чем b"; } <br designtimesp=21089>elseif ($а == №) { print "а равно b". } else { piint "а меньше чем b"; < /FONT > </P></pre> <P DESIGNTIMESP=21090><FONT face=Tahoma size=2 DESIGNTIMESP=21091>Можно иметь несколько подблоков elseif в одном блоке if. Из нескольких блоков elseif исполняется первый, который равняется TRUE. В PHP elseif можно писать также как else if (двумя словами), и смысл при этом не теряется. Таким образом, elseif-блок исполняется, только если начальное выражение if и любое другое, предшествующее el self-выражение равняются FALSE, а текущее elseif — TRUE. </FONT> </P> <P class="Title_3" DESIGNTIMESP=21092><FONT face=Tahoma size=2 DESIGNTIMESP=21093>Альтернативный синтаксис управляющих структур </FONT> </P> <P DESIGNTIMESP=21094><FONT face=Tahoma size=2 DESIGNTIMESP=21095>Для управляющих структур if, while, for, foreach, и switch PHP предоставляет альтернативный синтаксис записи. Изменения выражаются в том, что после условного выражения в круглых скобках ставится двоеточие (:), затем следует фрагмент кода, подлежащий условному выполнению, завершающийся соответственно словами: endif;, endwhile;, endfor;, endforeach; или endswitch;. Использование фигурных скобок (для группировки условного фрагмента кода) при этом не требуется. </FONT> <pre designtimesp=21096><P DESIGNTIMESP=21097><FONT face=Tahoma size=2 DESIGNTIMESP=21098> &lt;?php if ($а == 5)- ?&gt; A is equal to 5 &lt;?php endif; ?&gt; < /FONT > </P></pre> <P DESIGNTIMESP=21099><FONT face=Tahoma size=2 DESIGNTIMESP=21100>В примере html-блок «A is equal to 5» включается в генерируемую страницу при условии, что $а равно 5.</FONT> </P> <P DESIGNTIMESP=21101><FONT face=Tahoma size=2 DESIGNTIMESP=21102></FONT> <pre designtimesp=21103><FONT face=Tahoma size=2 DESIGNTIMESP=21104> if ($a == 5): < /FONT > <P DESIGNTIMESP=21105></P> <FONT face=Tahoma size=2 DESIGNTIMESP=21106>print "a equals 5"; print "...".-elseif ($а == 6): print "a equals 6"; print "!!!": else- print "a is neither 5 nor 6": endif:< /FONT > </pre> <P class="Text_Bold" DESIGNTIMESP=21107><FONT face=Tahoma size=2 DESIGNTIMESP=21108>while </FONT> </P> <P DESIGNTIMESP=21109><FONT face=Tahoma size=2 DESIGNTIMESP=21110>Цикл while — самый простой в PHP, он аналогичен своему тезке в С. </FONT> <pre designtimesp=21111><P DESIGNTIMESP=21112><FONT face=Tahoma size=2 DESIGNTIMESP=21113> while (expr) statement:</FONT> </P><FONT face=Tahoma size=2 DESIGNTIMESP=21114> </FONT> </pre> <P DESIGNTIMESP=21115><FONT face=Tahoma size=2 DESIGNTIMESP=21116>Его смысл — повторять выполнение команды до тех пор, пока выражение истинно (TRUE). Проверка значения происходит каждый раз до выполнения команды. Если условное выражение не изменяется (в команде/блоке), то цикл будет исполняться бесконечно. Если условное выражение изначально ложно (FALSE), условный блок игнорируется и выполняться не будет. Блок условного кода может быть органичен фигурными скобками или двоеточием и словом endwhile;. Следующие два примера приводят к идентичному результату (они печатают числа от \ до 10): </FONT> <pre designtimesp=21117><P DESIGNTIMESP=21118><FONT face=Tahoma size=2 DESIGNTIMESP=21119> /* пример 1 */ $1 =1: while ($1 &lt;= 10) { print $i++: /* постинкремент */ ) /* пример 2 */ $1 = 1; while ($i &lt;= 10): print $1: $i++: endwhile; do..while < /FONT> </P></pre> <P DESIGNTIMESP=21120><FONT face=Tahoma size=2 DESIGNTIMESP=21121>Циклы do. .while сходны с циклами while с тем отличием, что выражение проверяется на истинность не до исполнения блока, а после него. То есть гарантируется, что условный блок будет исполнен минимум один раз. </FONT> <pre designtimesp=21122><P DESIGNTIMESP=21123><FONT face=Tahoma size=2 DESIGNTIMESP=21124> $1 = 0: do { print $i; // напечатает «О» один раз while ($i&gt;0). // условие не выполняется <br designtimesp=21125>($i не больше 0) </FONT> </P></pre> <P DESIGNTIMESP=21126><FONT face=Tahoma size=2 DESIGNTIMESP=21127>Следующий пример демонстрирует сложный (однократный) цикл и использование команды «break;» (ради тренировки попробуйте разобраться, что он делает).</FONT> </P> <pre designtimesp=21128><P DESIGNTIMESP=21129><FONT face=Tahoma size=2 DESIGNTIMESP=21130> do { if ($i &lt; 5) { print "i is not big enough", break: <br designtimesp=21131>// досрочно завершить цикл $i *= $factor. if ($1 &lt; Smimmumjimit) { break: // досрочно завершить цикл print "i is ok", * process i... } while(O); <br designtimesp=21132>// 0 блокирует дальнейшее выполнение цикла</FONT> </P></pre> <P class="Text_Bold" DESIGNTIMESP=21133><FONT face=Tahoma size=2 DESIGNTIMESP=21134>for </FONT> </P> <P DESIGNTIMESP=21135><FONT face=Tahoma size=2 DESIGNTIMESP=21136>Циклы for - наиболее сложные в РНР. </FONT> <pre designtimesp=21137><P DESIGNTIMESP=21138><FONT face=Tahoma size=2 DESIGNTIMESP=21139>for (exprl; expr2; ехргЗ) statement:</FONT> </P><FONT face=Tahoma size=2 DESIGNTIMESP=21140> </FONT> </pre> <P DESIGNTIMESP=21141><FONT face=Tahoma size=2 DESIGNTIMESP=21142>Первое выражение exprl выполняется безусловно, один раз, до начала цикла (обычно это инициализация переменной-счетчика цикта) Перед началом каждой итерации цикла на истинность проверяется условие ехрг2, и если оно истинно (TRUE), то цикл выполняется i конце каждой итерации цикла выполняется ехргЗ (часто это инкремент счетчика цикла). </FONT> </P> <P DESIGNTIMESP=21143><FONT face=Tahoma size=2 DESIGNTIMESP=21144>Каждое из выражений может быть пустым (то есть «;»). Если выражение ехрг2 - пустое, то цикл является бесконечным (РПР по умолчанию считает его равным TRUE) и его прерывание возможно только осредством использования внутри его блока команды break. Сравните примеры ниже, все они выводят числа от 1 до 10. </FONT> <pre designtimesp=21145><P DESIGNTIMESP=21146><FONT face=Tahoma size=2 DESIGNTIMESP=21147>/* Пример 1 - Классический стиль*/ for ($1 = 1; $1 &lt;= 10; $1++) { print $1: } /* Пример 2 */ for ($1 = 1;;$!++) { if ($i &gt; 10) { reak: } print S1: } /* Пример З */ $i = 1; for (:.) { if ($1 &gt; 10) { break. } print $1. $i++; } /* Пример 4 - Модернистский стиль*/ for ($1 - 1. $1 &lt; = 10; print $1. $i++) ; < /FONT> </P></pre> <P DESIGNTIMESP=21148><FONT face=Tahoma size=2 DESIGNTIMESP=21149>Наиболее «красивы» первый и последний цикл. Но пустые выражения являются часто очень полезными. </FONT> </P> <P DESIGNTIMESP=21150><FONT face=Tahoma size=2 DESIGNTIMESP=21151>РНР также поддерживает синтаксис ограничения блока цикла двоеточием: </FONT> </P> <pre designtimesp=21152><P DESIGNTIMESP=21153><FONT face=Tahoma size=2 DESIGNTIMESP=21154> for (exprl: expr2. ехргЗ) statement: : endfor; См. также циклы foreach ниже.</FONT> </P> <FONT face=Tahoma size=2 DESIGNTIMESP=21155> </FONT> </pre> <P class="Text_Bold" DESIGNTIMESP=21156><FONT face=Tahoma size=2 DESIGNTIMESP=21157>foreach </FONT> </P> <P DESIGNTIMESP=21158><FONT face=Tahoma size=2 DESIGNTIMESP=21159>В РНР 4 включена инструкция foreach, позволяющая осуществлять поэлементно одинаковый набор действий для каждого элемента массива. Конструкция может иметь два варианта синтаксиса: </FONT> <pre designtimesp=21160><P DESIGNTIMESP=21161><FONT face=Tahoma size=2 DESIGNTIMESP=21162> foreach($naccHB as $значение_элемента) действия; foreach($MaccnB as $key =&gt; <br designtimesp=21163>1значение_элемента) действия: </FONT> </P></pre> <P DESIGNTIMESP=21164><FONT face=Tahoma size=2 DESIGNTIMESP=21165>Первая форма цикла перемещается по элементам массива, указанным как $массив. При каждой итерации значение текущего элемента присваивается переменной $значение_элемента, внутренний курсор массива (указатель на текущий элемент массива) смещается на следующий элемент и при следующей итерации мы получаем следующий элемент. Вторая форма делает то же самое, но мы можем дополнительно использовать индексное значение массива в переменной Skey (что полезно при работе с ассоциированными массивами). Если вторая форма цикла работает с одномерным, не ассоциированным массивом, то значения Skey и $значение_элемента будут одинаковы. </FONT> </P> <P DESIGNTIMESP=21166><FONT face=Tahoma size=2 DESIGNTIMESP=21167>При первом прохождении цикла foreach курсор массива автоматически сбрасывается для указания на первый элемент массива; таким образом, не требуется вызывать функцию reset() перед запуском цикла foreach. </FONT> </P> <P DESIGNTIMESP=21168><FONT face=Tahoma size=2 DESIGNTIMESP=21169>Также отметим, что цикл foreach оперирует с копией массива, а не с самим массивом, и поэтому курсор самого массива не изменяется, как в конструкции each. </FONT> </P> <P DESIGNTIMESP=21170><FONT face=Tahoma size=2 DESIGNTIMESP=21171>Следующие примеры функционально идентичны: </FONT> <pre designtimesp=21172><P DESIGNTIMESP=21173><FONT face=Tahoma size=2 DESIGNTIMESP=21174> // работа с численно индексированным <br designtimesp=21175>массивом $агг = array (1. 2. 3. 17): reset ($arr): <br designtimesp=21176>while (list(. Svalue) = each ($arr)) <br designtimesp=21177>{ echo "Value: $value&lt;br&gt;\n"; } <br designtimesp=21178>foreach ($arr as $value) { <br designtimesp=21179>echo "Value $value&lt;br&gt;\n": } <br designtimesp=21180>// Следующие примеры также<br designtimesp=21181> функционально идентичны: <br designtimesp=21182>$агг = array ( "one" =&gt; 1. <br designtimesp=21183>"two" =&gt; 2. <br designtimesp=21184>"three" =&gt; 3. <br designtimesp=21185>"seventeen" -&gt; 17 ). <br designtimesp=21186>reset ($arr). while (list($key. Svalue) = each ($arr)) { echo "Key: Skey; Value: $value&lt;br&gt;\n"; } foreach ($arr as $key =&gt; Svalue) { echo "Индекс. Skey: Значение: $value&lt;br&gt;\n": // print "\$a[$key] = &gt; Sa[$key] \n" // Можно и так написать } < /FONT > </P></pre> <P class="Text_Bold" DESIGNTIMESP=21187><FONT face=Tahoma size=2 DESIGNTIMESP=21188>break </FONT> </P> <P DESIGNTIMESP=21189><FONT face=Tahoma size=2 DESIGNTIMESP=21190>break прерывает выполнение циклов for, while, и структур switch, break имеет необязательный аргумент, определяющий, сколько вложенных циклов необходимо прервать. </FONT> <pre designtimesp=21191><P DESIGNTIMESP=21192><FONT face=Tahoma size=2 DESIGNTIMESP=21193> $arr = array ('one'. 'two', 'three', 'four', 'stop', 'five'): // массив строк while (list (. $val) = each (Sarr)) { // эквивалент записи: foreach(Sarr as $val) if ($val == 'stop') {// если элемент массива break. /* здесь также можно написать: break 1; */ } echo "$val&lt;br&gt;\n"; } '* Использование необязательного аргумента. */ $i = 0: while (++$i) { snitch ($i) { case 5. echo "At 5&lt;br&gt;\n"; break 1. /* Выйти только из switch */ case 10: echo "At 10; quittihg&lt;br&gt;\n": break 2. /* Выйти из структуры switch и цикла while. */ default: break: }} < /FONT > </P></pre> <P class="Text_Bold" DESIGNTIMESP=21194><FONT face=Tahoma size=2 DESIGNTIMESP=21195>continue </FONT> </P> <P DESIGNTIMESP=21196><FONT face=Tahoma size=2 DESIGNTIMESP=21197>continue используется в циклических структурах для того, чтобы избежать выполнения оставшейся части цикла и перейти к следующей итерации, continue, подобно инструкции break; может име'гь числовой аргумент, показывающий, на сколько вложенных циклов должно распространяться се действие. </FONT> <pre designtimesp=21198><P DESIGNTIMESP=21199><FONT face=Tahoma size=2 DESIGNTIMESP=21200> while (list ($key. $value) = each ($arr)) { if (!($key % 2}) { I! пропустить нечетный элемент continue. обработать_четный_элемент (Svalue); } $1 = 0; while ($i++ &lt; 5) { echo "цикл 1-го уровня &lt;br&gt;\n"; while (1) { echo " цикл 2-го уровня &lt;br&gt;\n"; while (1) { echo " цикл 3-го уровня &lt;br&gt;\n". continue 3: } echo "Эта строка никогда не будет выведена.&lt;br&gt;\n": } echo " .. .Эта тоже --br&gt;\n". } echo "Все завершено.&lt;br&gt;\n": < /FONT > </P></pre> <P class="Text_Bold" DESIGNTIMESP=21201><FONT face=Tahoma size=2 DESIGNTIMESP=21202>switch </FONT> </P> <P DESIGNTIMESP=21203><FONT face=Tahoma size=2 DESIGNTIMESP=21204>Конструкция switch эквивааснтна последовательности конструкций if, имеющих одно общее условное выражение. Часто приходится выполнять проверку одной переменной (или выражения) на соответствие различным значениям и соответственно выполнять различные наборы инструкций в каждом случае. Это именно то, для чего предназначена конструкция switch. </FONT> </P> <P DESIGNTIMESP=21205><FONT face=Tahoma size=2 DESIGNTIMESP=21206>Следующие два примера демонстрируют замену нескольких конструкций if на одну switch: </FONT> <pre designtimesp=21207><P DESIGNTIMESP=21208><FONT face=Tahoma size=2 DESIGNTIMESP=21209> if ($1 — 0) { print "1 равно 0"; } if ($1 == 1) { print "i равно 1": } if ($1 - 2) { print "i равно 2". } switch ($1) { -ase 0: print "i равно О"; break; case 1: print BI равно 1": break; case 2 print "i равно 2"; break. } < /FONT > </P></pre> <P DESIGNTIMESP=21210><FONT face=Tahoma size=2 DESIGNTIMESP=21211>В конструкции switch инструкции case проверяются одна за другой, и когда обнаруживается соответствие переменной (выражения) значению, указанному после слова case, исполняются все последующие строки, пока не встретится слово break. Если слово break не указано, выполнение продолжается до конца switch-блока. </FONT> <pre designtimesp=21212><P DESIGNTIMESP=21213><FONT face=Tahoma size=2 DESIGNTIMESP=21214> switch ($1) { case О orint "i равно О"; Cdse 1: print "i равно 1". case 2: print "i равно 2": } </FONT> </P></pre> <P DESIGNTIMESP=21215><FONT face=Tahoma size=2 DESIGNTIMESP=21216>В этом примере, если $i равно О, РНР выполнит все три инструкции print! Если $i равно 1, будут выполнены две последние команды print, и только если $1 равно 2, вы получите единственное «ожидаемое»;сообщение: i равно 2. Поэтому не забывайте указывать слово break в каждом блоке case. </FONT> </P> <P DESIGNTIMESP=21217><FONT face=Tahoma size=2 DESIGNTIMESP=21218>В конструкции switch условное выражение вычисляется только раз и проверяется на соответствие каждому варианту case. В el seif- конструкциях условие проверяется заново (и выражение вычисляется заново), поэтому switch-конструкции выполняются быстрее, если выражение сложное. Блок case также может быть пустым, тогда РНР просто переходит к следующему case (см. объяснение выше).</FONT> </P> <pre designtimesp=21219><P DESIGNTIMESP=21220><FONT face=Tahoma size=2 DESIGNTIMESP=21221> switch ($1) { case О case l-case 2: print "i равно 0. или 1. или 2": break: case 3 print "i равно З"; } </FONT> </P></pre> <P DESIGNTIMESP=21222><FONT face=Tahoma size=2 DESIGNTIMESP=21223>Особый случай case — это case по умолчанию — default. Он используется в том случае, когда ни один из вариантов не соответствует условному выражению. </FONT> </P> <pre designtimesp=21224><P DESIGNTIMESP=21225><FONT face=Tahoma size=2 DESIGNTIMESP=21226> switch ($1) { case С: print "i равно О"; break; case 1: print "i равно 1"; break: case 2 print "i равно 2"; break; default rint "i не равно ни 0, ни 1. ни 2": } </FONT> </P></pre> <P DESIGNTIMESP=21227><FONT face=Tahoma size=2 DESIGNTIMESP=21228>Выражение после слова case может быть любым, способным иметь значение и простой тип, то есть целым либо дробным числом или строкой. Массивы и объекты не могут быть использованы в этом I случае, если только они не могут быть приведены к простому типу. </FONT> </P> <P DESIGNTIMESP=21229><FONT face=Tahoma size=2 DESIGNTIMESP=21230>Для конструкций switch возможен альтернативный синтаксис. </FONT> <pre designtimesp=21231><P DESIGNTIMESP=21232><FONT face=Tahoma size=2 DESIGNTIMESP=21233> / switch ($1). // вместо открывающей фигурной скобки case 0: print "1 равно О": break, default: print "i не равно 0. 1 и 2"; endswltch: // вместо завершающей фигурной скобки </FONT> </P><P class="Title_3" DESIGNTIMESP=21234><FONT face=Tahoma size=2 DESIGNTIMESP=21235> Директивы require() и include()</FONT> </P><FONT face=Tahoma size=2 DESIGNTIMESP=21236> </FONT> </pre> <P DESIGNTIMESP=21237><FONT face=Tahoma size=2 DESIGNTIMESP=21238>Директивы require() и include() заменяются интерпретатором в ходе выполнения на содержимое файла, указанного в этих директивах (их аналогией является директива С препроцессора include). Если в конфигурации РНР разрешен параметр «URL fopen wrappers» (по умолчанию он разрешен), в этих директивах, наряду с локально доступными файлами можно использовать файлы из сети Интернет путем указания их URL (для Widows эта возможность пока недоступна). См. функцию fopen(). </FONT> </P> <P DESIGNTIMESP=21239><FONT face=Tahoma size=2 DESIGNTIMESP=21240>Файл, включаемый данными директивами, считается файлом HTML, поэтому если он содержит код РНР, то должны присутствовать теги-ограничители (например, &lt;? и ?&gt;), чтобы этот код выполнялся. Обычный синтаксис: </FONT> <pre designtimesp=21241><P DESIGNTIMESP=21242><FONT face=Tahoma size=2 DESIGNTIMESP=21243> require ('header.тс'). // возможна также запись: require "header nnr":</FONT> </P> <FONT face=Tahoma size=2 DESIGNTIMESP=21244> </FONT> </pre> <P DESIGNTIMESP=21245><FONT face=Tahoma size=2 DESIGNTIMESP=21246>Фактически require() не функция, а специальная конструкция языка. В руководстве по РНР говорится, что «на нее не влияют условные конструкции». Но при проверке на практике выяснилось, что require() функционирует так же, как и include(), то есть на нее влияют условные структуры и в цикле с перечислением имен включаемых файлов она заменяет имена файлов. Директива require() выполняется всегда, вне зависимости от того, выполняется ли код, ею подставляемый. Она не возвращает значение (include() может возвращать значение с помощью команды return). </FONT> </P> <P DESIGNTIMESP=21247><FONT face=Tahoma size=2 DESIGNTIMESP=21248>Директива include() — это «почти» функция. Характерный пример ее применения: </FONT> <pre designtimesp=21249><P DESIGNTIMESP=21250><FONT face=Tahoma size=2 DESIGNTIMESP=21251> Sfiles = array ('first.inc'. 'second.inc'. 'third.me'); for ($1 = 0: $1 &lt; count($flies); $i++) { include $files[$i]: } < /FONT > </P></pre> <P DESIGNTIMESP=21252><FONT face=Tahoma size=2 DESIGNTIMESP=21253>Руководство по РНР требует заключения include() в фигурные скобки в условных конструкциях (но, как я выяснил, в этом нет необходимости). </FONT> </P> <P DESIGNTIMESP=21254><FONT face=Tahoma size=2 DESIGNTIMESP=21255>Включаемые файлы также наследуют все переменные, доступные вы-зываюшему сценарию, с теми значениями, которые они имеют в той строке, где встречается директива включения. Если директива включения встречается в объявлении функций или класса, содержимое включаемого файла ведет себя, как если бы оно находилось вместо директивы включения. </FONT> </P> <P DESIGNTIMESP=21256><FONT face=Tahoma size=2 DESIGNTIMESP=21257>include() также позволяет возвращать значение из включаемого сценария командой return (это завершает выполнение включаемого сценария). </FONT> <pre designtimesp=21258><P DESIGNTIMESP=21259><FONT face=Tahoma size=2 DESIGNTIMESP=21260> &lt;?php // file test.тс echo "До return &lt;br&gt;\n"; if (11 { return 27: } echo "После return &lt;br&gt;\n": ?&gt; &lt;?php // main file (main.php) Sretval = include ('test.inc'): echo "Возвращенное значение: 'Sretval'&lt;br&gt;\n": &gt;&gt; /I Запуск main.php выведет: // До return &lt;br&gt; // Возвращенное значение. '27'&lt;br&gt; < /FONT > </P></pre> <P DESIGNTIMESP=21261><FONT face=Tahoma size=2 DESIGNTIMESP=21262>Если необходимо передать во включаемый сценарий аргументы (как при вызове функций), это можно сделать двумя способами: установкой глобальных переменных и вызовом сценария посредством HTTP-запроса (с передачей параметров в адресе URL). Однако не стоит забывать, что во втором способе надо задавать полный адрес URL (чтобы обращение происходило к web-серверу, а не локальному файлу) и что при этом включаться будет не сам код, а результаты его выполнения; помимо этого, сервер должен быть способен выполнить запрашиваемый сценарий. </FONT> </P> <pre designtimesp=21263><P DESIGNTIMESP=21264><FONT face=Tahoma size=2 DESIGNTIMESP=21265> require ("file php7varone=l&amp;vartwo=2"): // не работает (это не URL) require ("http://someserver/file.php?varone=l&amp;vartwo= 2"); // работаетSvarone= 1:Svartwo= 2: require ("filetxt");/* Можно включать локальныефайлыс любым расширением */ &lt; /P&gt; &lt; /P &gt;< /FONT> < /P > </pre><FONT face=Tahoma size=2 DESIGNTIMESP=21266>См. также: readfile() и virtuaH). </FONT> <P DESIGNTIMESP=21267> </P> <P class="Text_Bold" DESIGNTIMESP=21268><FONT face=Tahoma size=2 DESIGNTIMESP=21269>require_once() и include_once() </FONT> </P> <P DESIGNTIMESP=21270><FONT face=Tahoma size=2 DESIGNTIMESP=21271>Эти директивы аналогичны вышеописанным с тем отличием, что они Ш не допускают повторного включения файла, если его включение уже происходило. Это позволяет избежать возникновения ошибок при множественном включении файлов — например, когда это приводит к ситуации повторного определения функции (что вызывает ошибку в РНР), повторного назначения констант и т. п. </FONT> </P> <P DESIGNTIMESP=21272><FONT face=Tahoma size=2 DESIGNTIMESP=21273>См. также: get_required_files(), get_included_files(), readfile() и virtual(). </FONT> </P> <P class="Title_2" DESIGNTIMESP=21274> <a name="8" designtimesp=21275></a><FONT face=Tahoma size=2 DESIGNTIMESP=21276>Пользовательские функции </FONT> </P> <P DESIGNTIMESP=21277><FONT face=Tahoma size=2 DESIGNTIMESP=21278>Пользовательские функции могут быть определены следующим образом: </FONT> <pre designtimesp=21279><P DESIGNTIMESP=21280><FONT face=Tahoma size=2 DESIGNTIMESP=21281> function foo ($arg_l. $arg_2.....$arg_n) { echo "Example function.\n": return Sretval. // значение, возвращаемое функцией } </FONT> </P></pre> <P DESIGNTIMESP=21282><FONT face=Tahoma size=2 DESIGNTIMESP=21283>Внутри тела функции может присутствовать любой PHP-код и даже определение других функций или классов. В РНР 3 определение функции должно предшествовать первому ее использованию, в РНР 4 это требование отсутствует. </FONT> </P> <P DESIGNTIMESP=21284><FONT face=Tahoma size=2 DESIGNTIMESP=21285>РНР не допускает перегрузку функций (в отличие от C++), то есть если функция однажды определена, ее код нельзя изменить или удалить. Поэтому вторичное (пере)определение функции вызовет </FONT> </P> <P DESIGNTIMESP=21286><FONT face=Tahoma size=2 DESIGNTIMESP=21287>ошибку. </FONT> </P> <P DESIGNTIMESP=21288><FONT face=Tahoma size=2 DESIGNTIMESP=21289> РНР 4 также поддерживает неопределенное число аргументов функции и значение аргументов по умолчанию (см. дальше). Для использования этих возможностей полезны функции:<br designtimesp=21290> func_num_args(), func_ get_arg() и func_get_args(). </FONT> </P> <P DESIGNTIMESP=21291><FONT face=Tahoma size=2 DESIGNTIMESP=21292>Если вы помните, функциям недоступны глобальные переменные. </FONT> </P> <P class="Title_3" DESIGNTIMESP=21293><FONT face=Tahoma size=2 DESIGNTIMESP=21294>Передача функциям аргументов </FONT> </P> <P DESIGNTIMESP=21295><FONT face=Tahoma size=2 DESIGNTIMESP=21296> Информация передается функциям через набор их аргументов, представленных последовательностью значений (переменных, выражений), разделенных запятыми. РНР поддерживает: передачу значений аргументов «по значению» (по умолчанию) и передачу значений по ссылке; значения аргументов по умолчанию и переменное для функции число аргументов. См. также: <br designtimesp=21297> func_num_args(), func_get_arg() и func_get_args(). </FONT> <pre designtimesp=21298><P DESIGNTIMESP=21299><FONT face=Tahoma size=2 DESIGNTIMESP=21300> function takes_arra.y($'input) { // в функцию передается массив echo "$input[0] + $input[l] = ". $input[0]+$input[l]: }< /FONT > </P></pre> <P class="Text_Bold" DESIGNTIMESP=21301><FONT face=Tahoma size=2 DESIGNTIMESP=21302>Передача значений аргументов по ссылке </FONT> </P> <P DESIGNTIMESP=21303><FONT face=Tahoma size=2 DESIGNTIMESP=21304>По умолчанию в функцию передаются значения аргументов, то есть копии значений выражений и переменных, поэтому изменение значений аргументов имеет смысл только внутри функций и не отражается вовне. Если необходимо изменять сами аргументы, тогда их необходимо передавать по ссылке, так как тогда в функцию передаются не значения, а ссылки переменных. Для этого перед переменной в объявлении функции ставится знак амперсант (&amp;), тогда аргумент всегда будет передаваться в функцию по ссылке:</FONT> </P> <pre designtimesp=21305><P DESIGNTIMESP=21306><FONT face=Tahoma size=2 DESIGNTIMESP=21307> function add_some_extraWstnng. $x) { Istnng .= "дополним строку \п"; $х += 3. // бессмысленно, т.к. //значение $х потеряется при завершении функции } $str = 'Есть строка - '; $а = 1; add_some_extra($str. $а): echo $str; // напечатает 'Есть строка - дополним строку' echo $a. // значение $а не изменилось < /FONT > </P></pre><FONT face=Tahoma size=2 DESIGNTIMESP=21308>Если вы хотите передать аргумент по ссылке в функцию, которая по умолчанию принимает значения «по значению», то амперсант ставится перед переменной в строке вызова функции: </FONT> <pre designtimesp=21309><P DESIGNTIMESP=21310><FONT face=Tahoma size=2 DESIGNTIMESP=21311></FONT></P> <FONT face=Tahoma size=2 DESIGNTIMESP=21312> </FONT> <P DESIGNTIMESP=21313><FONT face=Tahoma size=2 DESIGNTIMESP=21314> function foo ($bar) { // функция принимает аргумент «по значению» $bаг = ' и что-то еще'; } $str = 'Это строка. ': foo ($str); // передача аргумента по значению echo Sstr . "\n"; // выведет 'Это строка. ' foo (&amp;$str), // передача аргумента по ссылке echo $str; // выведет ' Это строка, и что-то еще' < /FONT > </P></pre> <P class="Text_Bold" DESIGNTIMESP=21315><FONT face=Tahoma size=2 DESIGNTIMESP=21316>Значения аргументов по умолчанию </FONT> </P> <P DESIGNTIMESP=21317><FONT face=Tahoma size=2 DESIGNTIMESP=21318>В определении функции можно использовать синтаксис C++ для задания значений аргументов по умолчанию: </FONT> <pre designtimesp=21319><P DESIGNTIMESP=21320><FONT face=Tahoma size=2 DESIGNTIMESP=21321> functionfee ($type= "Яблоко") { return "Имеем фрукт: $type.\n"; } echo fee О: // выводит «Инеем фрукт: Яблоко» echo fee ("Груша"); // выводит «Имеем фрукт Груша» Значение по умолчанию должно быть константным.&lt;/P &gt;&lt;/P &gt;< /FONT >< /P ></pre><FONT face=Tahoma size=2 DESIGNTIMESP=21322>Отметим, чтоаргументы, имеющие значения ноумолчанию, должныстоять (вобъявлении функций)после аргументов, ихне имеющих. </FONT><P DESIGNTIMESP= 21323></P><pre designtimesp=21324><FONT face=Tahoma size=2 DESIGNTIMESP= 21325></FONT> <P DESIGNTIMESP=21326><FONT face=Tahoma size=2 DESIGNTIMESP=21327> functionmm (Staste= "вкусный".$ fruit){ return "Имеем Staste фрукт $fruit\n"; }echo mm("Яблоко") // Ошибка смысла!< /FONT> </P></pre><P DESIGNTIMESP=21328><FONT face=Tahoma size=2 DESIGNTIMESP=21329>PHP выдастследующее:</FONT> </P> <pre designtimesp=21330><P DESIGNTIMESP=21331><FONT face= Tahoma size=2 DESIGNTIMESP= 21332>Warning: Missingargument 2in callto ram() inПредупреждение: Неуказан 2-йаргумент ввызове mmm () /usr/local/etc/httpd/htdocs/php3test/functest.htrnlon' line41 Имеем Яблокофрукт:</FONT> </P><FONT face=Tahoma size=2 DESIGNTIMESP= 21333></FONT> </pre><P DESIGNTIMESP=21334><FONT face= Tahoma size=2 DESIGNTIMESP= 21335>Интерпретатор пытаетсяприсвоить первоезначение (изаргументов функции)первому аргументу,а таккак для второго аргумента значениене задано(ни по умолчанию,ни явно),ю этовызывает ошибку(хотя ине препятствуетдальнейшему выполнениюсценария). Сравнитесо следующимпримером: </FONT> <pre designtimesp=21336><P DESIGNTIMESP= 21337><FONT face=Tahoma size=2 DESIGNTIMESP= 21338>function mmm2000(Sfruit. $taste= "вкусный") {return "Имеем Stasteфрукг: $fruit\n". }echo mwn2000("Яблоко"); //работает какнадо! echo mim2000 ("Яблоко", "кислый"); //явное указаниеаргумента < /FONT> </P></pre><P DESIGNTIMESP=21339><FONT face=Tahoma size=2 DESIGNTIMESP= 21340>РНР выдаст следующее: </FONT><pre designtimesp= 21341><P DESIGNTIMESP=21342><FONT face=Tahoma size=2 DESIGNTIMESP=21343> Имеемвкусный фрукт:Яблоко Имеем кислый фрукт: Яблоко</FONT> </P> </pre><P class= "Text_Bold" DESIGNTIMESP=21344><FONT face=Tahoma size=2 DESIGNTIMESP= 21345>Неопределенноечисло аргументов в функции </FONT> </P> <P DESIGNTIMESP=21346><FONT face=Tahoma size=2 DESIGNTIMESP= 21347>РНР 4 поддерживает неопределенное число аргументов в функциях пользователя. Для использования этого имеются функции func_num_ args(), func_get_arg() и func get_args(). При этом не требуется использовать специальный синтаксис и список аргументов может указываться, как в обычных функциях. </FONT> </P> <P class="Title_3" DESIGNTIMESP=21348><FONT face=Tahoma size=2 DESIGNTIMESP=21349>Возвращение функциями значений </FONT> </P> <P DESIGNTIMESP=21350><FONT face=Tahoma size=2 DESIGNTIMESP= 21351>Значения возвращаются функциями с помощью команды return. Возвращаться может любой тип, включаямассивы иобъекты.</FONT> </P><pre designtimesp= 21352><P DESIGNTIMESP= 21353><FONT face= Tahoma size= 2 DESIGNTIMESP= 21354> Пользовательские функции 71 function square ($num) { return$num *$num: }echo square(4); //outputs '16'. </FONT> </P></pre> <P DESIGNTIMESP=21355><FONT face=Tahoma size=2 DESIGNTIMESP= 21356>Из функции нельзя возвратить несколько значений одновременно, и если такая необходимость возникает, следует использовать массив. </FONT><pre designtimesp=21357><P DESIGNTIMESP=21358><FONT face=Tahoma size= 2 DESIGNTIMESP= 21359>function snalljiumbers(){ return array (0. 1.2); }list ($zero.$one. $two)= smalljiumbers(), echo "Szero. $one, $two"; < /FONT > </P></pre><P DESIGNTIMESP=21360><FONT face=Tahoma size=2 DESIGNTIMESP= 21361>Чтобы вернуть из функции ссылку, нужно использовать операторссылки (&amp;)перед именемфункции при ее объявлении ипри присваиванииее значенияпеременной. </FONT><pre designtimesp= 21362><P DESIGNTIMESP=21363><FONT face=Tahoma size=2 DESIGNTIMESP= 21364> function&amp;returns_reference() {return $someref;} Snewref= &amp;returns_reference();< /FONT></P></pre> <P DESIGNTIMESP=21365><FONT face=Tahoma size= 2 DESIGNTIMESP= 21366>Помимо возвращения значений команда return выполняет ещеодну важную роль. Она прерывает выполнение функции подобно команде breakв условныхструктурах и циклах.Если необходимопросто прерватьвыполнение функции,не возвращаяникакого значения, в*команде return аргумент можноне использовать.</FONT> </P><pre designtimesp= 21367><P DESIGNTIMESP=21368><FONT face=Tahoma size=2 DESIGNTIMESP=21369> functionа О { echo "Эта строкабудет выведена":return: echo"Сюда мыне доберемся"; } а О; </FONT> </P></pre> <P class="Title_3" DESIGNTIMESP=21370><FONT face= Tahomasize = 2 DESIGNTIMESP= 21371>Переменные-функции</FONT> </P><P DESIGNTIMESP=21372><FONT face = Tahoma size = 2 DESIGNTIMESP= 21373>РНР поддерживает концепцию переменных-функций. Это означает, что если послеимени переменной указаны круглые скобки, РНР будетискать функциюс именем,содержащимся впеременной, и при нахождении таковой запустит ее. Эту полезную особенность можно использовать для осуществления обратных вызовов, составления списковфункций имногими другимиспособами. </FONT><pre designtimesp= 21374><P DESIGNTIMESP=21375><FONT face=Tahoma size=2 DESIGNTIMESP= 21376> &lt;?рпр function foot) { echo "Функция foo()&lt;br&gt;\n", } functionbarf $arg= '' ){ echo"Функция bагО; с аргументом '$arg' ,&lt;br&gt;\n" } Sfunc = 'too'.$func(): //запустит функциюfoo(): Sfunc= 'bar'. $func( 'test' ); // запустит функцию bar('test'): ?&gt; < /FONT > </P></pre> <P class= "Title_2" DESIGNTIMESP= 21377> <a name="9" designtimesp=21378></a><FONT face=Tahoma size=2 DESIGNTIMESP=21379>Классы </FONT> </P> <P DESIGNTIMESP=21380><FONT face=Tahoma size=2 DESIGNTIMESP= 21381>Класс — это коллекция переменных и функций для работы с ними. Переменные класса объявляются словом van. В функциях класса переменная $thisозначает: «данныйобъект этогокласса» (экземпляр).Необходимо использовать запись this-&gt;что-либо для доступа к любой переменной или функции, имеющейся в этом объекте. </FONT> <pre designtimesp=21382><P DESIGNTIMESP=21383><FONT face=Tahoma size= 2DESIGNTIMESP= 21384> &lt;?рhрclass Корзина { var $items: // Переменная <br designtimesp=21385>(ассоциативный массив).// используемаядля храненияданных о том // что имеется в корзине и в каком количестве // Добавить в корзину предмет $а вколичестве $numштук functionadd_item ($a.$num) {$this-&gt;items[$a] += $num: } //Удалить изкорзины предмет$а<br designtimesp= 21386> в количестве $num штук function remove_item ($a. $num) { if ($this-&gt;items[$a] &gt; $num) { $this-&gt;items[$a] -= $num; returnTRUE: }else {// нельзя удалить больше предметов, чем имеетсяreturn FALSE:} }}?&gt;< /FONT> </P></pre> <P DESIGNTIMESP=21387><FONT face=Tahoma size=2 DESIGNTIMESP= 21388>Этот класс состоит из одного ассоциативногомассива идвух функцийдля работыс ним. </FONT></P> <P DESIGNTIMESP=21389><FONT face=Tahoma size=2 DESIGNTIMESP= 21390>ВPHP 4только константаможет инициализироватьзначение переменной в объявлениикласса, для присваиваниянеконстантных значенийиспользуйте конструкторкласса. </FONT></P> <P DESIGNTIMESP=21391><FONT face=Tahoma size=2 DESIGNTIMESP= 21392>Конструктор класса — эта функция класса, имеющая егоимя и запускаемаяавтоматически присоздании экземпляракласса. </FONT></P> <P DESIGNTIMESP=21393><FONT face=Tahoma size=2 DESIGNTIMESP= 21394>Объявление класса — всего лишь его описание. Длятого чтобы создатьэкземпляр класса— объект, необходимосоздать переменнуюи назначитьей классоператором new. </FONT><pre designtimesp= 21395><P DESIGNTIMESP=21396><FONT face=Tahoma size=2 DESIGNTIMESP= 21397> Scart= new Корзина. $cart-&gt;addjitpm("10".1);&lt; /P&gt;&lt; /P&gt; </FONT > </P ></pre> <P DESIGNTIMESP=21398><FONT face=Tahoma size=2 DESIGNTIMESP= 21399>Класс может быть расширениемдругого класса. Принаследовании все переменныеи функцииродительского классанаследуются дочернимклассом. Наследование объявляетсясловом extends послеимени класса.РНР неподдерживает множественноенаследование (то есть одновременное наследование отнескольких классов). </FONT></P> <pre designtimesp=21400><P DESIGNTIMESP=21401><FONT face=Tahoma size= 2 DESIGNTIMESP= 21402>class Моя_Корзинаextends Корзина{ varSowner; // владелец // конструктор классаfunction Моя_Корзина (Sname= "Игорь"){ $this-&gt;owner= $name:} }< /FONT ></P></pre> <P DESIGNTIMESP=21403><FONT face=Tahoma size=2 DESIGNTIMESP= 21404>КлассМоя_Корзина расширяет классКорзина добавлением однойпеременной иконструктора.</FONT> </P><pre designtimesp= 21405><P DESIGNTIMESP= 21406><FONT face=Tahoma size=2 DESIGNTIMESP=21407> $ncart= new Моя_Корзина; print $ncart-&gt;owner; // Кто владелец корзины? $nc= newМоя_Корзина("Вова"), //Бовина корзинаprint $nc-&gt;owner; $ncart-&gt;add_item ("10" 1): // (Унаследованная функциональность от класса Корзина) < /FONT > </P></pre> <P DESIGNTIMESP=21408><FONT face=Tahoma size=2 DESIGNTIMESP= 21409>Будьте осторожны: для дочерних классов конструктор родительско-ю класса не вызывается при создании экземпляра дочернего класса. Если необходимо вызвать конструктор родительского класса, это должнобыть сделаноявно (подобновызову обычнойфункции родительского класса).</FONT> </P><P class="Title_2" DESIGNTIMESP= 21410> <a name= "10" designtimesp=21411></a><FONT face=Tahoma size=2 DESIGNTIMESP = 21412>Ссылки </FONT> </P> <P DESIGNTIMESP = 21413><FONT face = Tahoma size = 2 DESIGNTIMESP = 21414>В РНРссылки — это способ доступа к значению переменной под различнымиименами. Они отличны от указателейв С, хранящих адрес переменной, в РНР этовсего лишьпсевдонимы какой-либопеременной. </FONT></P> <P DESIGNTIMESP=21415><FONT face=Tahoma size=2 DESIGNTIMESP=21416>Ссылки РНР позволяют двум переменным указывать на одно значение. Так, запись: </FONT> </P><pre designtimesp=21417><FONT face=Tahoma size=2 DESIGNTIMESP= 21418> $а = &amp; $b < /FONT > </pre> <P DESIGNTIMESP=21419><FONT face=Tahoma size= 2 DESIGNTIMESP= 21420>означает,что теперьи $аи $bуказывают на одно значение. Причем $а и $b теперь полностью идентичны, то естьне $ауказывает на$b илинаоборот, аобе они указывают на одно место хранения значения. </FONT> </P> <P DESIGNTIMESP = 21421><FONT face = Tahoma size= 2 DESIGNTIMESP = 21422>Основные варианты использования ссылок: передача аргументов по ссылке и возвращение ссылок из функций, они представлены в главе «Функции». </FONT> </P> <P DESIGNTIMESP = 21423><FONT face = Tahoma size = 2 DESIGNTIMESP= 21424>Тот же синтаксис используется в функциях, возвращающих ссылки и прииспользовании оператораnew. </FONT><pre designtimesp=21425><P DESIGNTIMESP= 21426><FONT face=Tahoma size=2 DESIGNTIMESP=21427> $bаг= &amp; new fooclassO: $foo= &amp; find_var($bar). &lt;/P &gt;&lt; /P &gt; < /FONT > < /P > </pre> <P DESIGNTIMESP = 21428><FONT face = Tahoma size = 2 DESIGNTIMESP = 21429>He забудьте: для использования ссылок на объекты оператор ссылки (&amp;), должен использоваться как в конструкторе для переменной $this, так и при создании объекта (назначении его переменной), иначе вы получите два различных объекта. </FONT> </P><P DESIGNTIMESP=21430><FONT face=Tahoma size= 2 DESIGNTIMESP=21431>В дополнениек тому,что сказаноо ссылках в главе «Функции», отметим, что по ссылке кроме переменных могут передаваться объекты, созданные операторомnew (например,foo(new foobarO),и ссылки,возвращаемые другимифункциями. </FONT>


Функции работы с данными

  • Переменные
  • Массивы
  • Функции
  • Объекты и классы
  • Математические функции
  • Математические функции повышенной точности BCMath
  • Математические функции GMP
  • Дата и время
  • Строковые функции
  • Синтаксис регулярных выражений (PCRE)
  • Функции регулярных выражений (PCRE)
  • Расширение регулярных выражений POSIX

Переменные

Манипуляции с переменными

get_defined_vars

Получение перечисления всех доступных переменных

array get_defined_vars (void )

Возвращает многомерный ассоциативный массив, содержащий ВСЕ переменные, доступные сценарию.

См. также: get_defined_functions().

empty

Проверка, имеет ли переменная значение

int empty (mixed var)

Возвращает FALSE, если переменная имеет непустое или отличное от нуля значение. Иначе возвращает TRUE. Фактически функция проверяет, имеет ли переменная значение, которое может быть приравнено к 0, то есть: (var==0). < /FONT>

 $var = 0.
if (empty($var)) { // = TRUE
echo '$var - либо О. либо не имеет значения;
if (Msset($var)),{ // = FALSE
echo '$var  не
имеет значения'; } } <

  /FONT >

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

См. также: isset() и unset().

isset

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

int isset (mixed var)

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

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

Для уничтожения переменной используйте функцию unset().

 $а = "test".
echo isset ($a); // TRUE
unset ($a);
echo isset ($a). // FALSE < /FONT >

См. также: empty() и unset().

unset

Уничтожение переменной

int unset (mixed var [, mixed var [, ...]])

Уничтожает указанные переменные var и возвращает TRUE.

 // Уничтожить одну переменную unset ($foo).
// Уничтожить один элемент
 массива unset ($bar['quux']);
// Уничтожить несколько переменных
unset (Sfool. $foo2, $foo3):

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

 function destroy_foo() {
global $foo:
unset(Sfoo); }
$foo = 'AM';
destroy_foo();
echo $foo; // выдает: ААА
function f(&$bar) {
unset($bar),
$bar = "blah"; }
echo "$foo\n".// выдает- ААА
f($foo). echo
"$foo\n".// выдает:
ААА <

/FONT >

Для статических переменных ситуация аналогична: уничтожается не сама переменная, а ссылка на нее.

 function foot) {
static $a. :
$а++.
echo "$a\n":
unset($a); }
foot). '/ выдает- 1 foo(): // выдает 2 foo():
// выдает: З

Чтобы уничтожить глобальную переменную внутри функции с помощью unset (), обращайтесь к ней через массив SGLOBALS:

 function foo() {
unset($GLOBALS['bar']): }
$bar =
 "something"
.  foo():< /P ><

/P >   <

/FONT >

    <

/P >
См. также: isset() и empty().

gettype

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

string gettype (mixed var)

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

  • «boolean»;
  • «integer»;
  • «double»;
  • «string»;
  • «array»;
  • «object»;
  • «resource;
  • «unknown type».

См. также: settype().

settype

Явная установка типа переменной

int settype (string var, string type)

Устанавливает для переменной с именем var тип type. Возвращает TRUE при успехе; иначе FALSE.

Возможные значения типа, передаваемого в аргументе type:

  • «integer»;
  • «double»;
  • «string»;
  • «array»;
  • «object».

См. также: gettype().

intval

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

int intval (mixed var [, int base])

Возвращает целочисленное значение аргумента var, используя указанное основание системы счисления base (ио умолчанию 10 — «десятичное»). Аргумент var может быть любым скалярным типом; передавать в качестве аргумента массивы или объекты не допускается. Если аргумент var - числовой, то преобразование не производится, для строк основание системы счисления указывает на ту систему счисления, в которой находится число в строке.

 echo intval ("1234.995"): // выводит 1234
echo intval ("1234455"). // выводит 1234
echo intval ("1234.455" .8):// выводит 668
echo intval ("1234455" .2):// выводит 1

См. также: doublevaK), strval(), settype() и «Определение типа».

doubleval

Извлечение значения дробного числа из переменной

double doubleval (mixed var)

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

 $var = '122 34343The';
$double_value_of_var =- doubleval ($var);
print $double_value_of_var. // prints 122.34343 <
/FONT >

См. также: intva(), strva(), settype().

strval

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

string strval (mixed var)

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

См. также: doubleval(), intva(), settype() и «Определение типа».

serialize

Генерация хранимого образа переменной

string serialize (mixed value)

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

Это полезно для сохранения или передачи значений РНР без потери их типа и структуры. Функция работает с типами: integer, double, string, array (также многомерными) и object (свойства объектов сохраняются, но методы — нет).

 // В Ssession_data содержится
многомерный массив с данными сессии
 //  и информацией о текущем пользователе.
Мы используем serialize()
 // для сохранения, при завершении сценария,
запросов пользователя.
$сопп - odbc_connect ("webdb". "php". "chicken").
Sstmt - odbc_prepare (Sconn,
"UPDATE sessions SET data = ? WHERE id = ?")
; $sqldata = array(serialize($sessior_data).
$PHP_AUTH_USER). if (!odbc_execute (Sstmt.
Msqldata)) f Sstmt =

  odbc_prepare(Sconn. "INSERT INTO sessions
(id. data) VALUES(?. 7)");
if (!odbc_execute(Sstmt. &$sqldata)) {  /* однако. Ошибочка  */
} } <

  /FONT >

Для «пытливых умов», которых все же интересует, в каком формате функция сохраняет данные, приводим следующий пример.

 <?php
$d = array (1. 2. array ("a", "b", "c")).
echo senalize(Ja):
->> II выводит строку, j // a.3
(i O.l,l:i:l:i:2;1:2:a:3
{i 0:s:1:"a".i:l;s:l:"b";1:2:S:1:"c".}} <
/FONT >

unserialize

Создание переменной из ее сохраненного образа

mixed unserialize (string str)

Функция возвращает значение сериализированной ранее (функцией serialize()) переменной. Возвращаемое значение может иметь тип: integer, double, string, array или object. Если был сериализирован объект, то восстанавливаются только его свойства (но не методы).

 // Здесь используется unserialize()
 для загрузки данных сессии
 // из   базы данных в массив $session_data
Этот пример дополняет // соответствующий,
приведенный в описании функции serialize()
Sconn « odbc_connect ("webdb". "php". "chicken").
Sstmt = odbc_prepare
($conn. "SELECT data FROM sessions WHERE id   = ?");
Ssqldata = array ($PHP_AUTH_USER);
if (!odbc_execute (Sstmt. &$sqldata)
 || !odbc_fetch_into (Sstmt. &$tmp)) {
// если execute or fetch fails,
инициализируем пустой массив
$session_data =

 arrayO: } else { //
здесь  мы
должны иметь // сериализированные данные в массиве    StmpLOJ.
$session_data =
 unserialize ($tmp[0]). if
 (!is_array ($session_data)) { // где-то
ошибка произошла, инициализируем пустой массив $session_data
» array(); }
} <

/FONT >

print_r

Отображение информации о переменной и ее содержимом

void printer (mixed expression)

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

Сравните функцию print_r() с функцией var_dump().

 <?php
$а = array (1. 2, array ("a", "b". "с")).
print_r ($a); ?>
// -- Сценарий напечатает -
// Array // (
II [0] -> 1 // [1] => 2
// [2] => Array // (
 //
[0] =

  > а // [1] => b
// [2] =
> с // )
// ) <
 /FONT >

Учтите, что функция будет выполняться бесконечно, если в указанном массиве или объекте имеются прямые или косвенные ссылки на себя. То же справедливо и для вложенных объектов и массивов. Например, это касается вызова print_r($GLOBALS), так как массив SGLOBALS является глобальной переменной и содержит ссылку на себя.

var_dump

Отображение структурированной информации о переменной

void var_dump (mixed expression)

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

Сравните функцию var_dump() с print_r().

 <рге> <?php
$а = array (1. 2, array ("a", "b". "с"));
 var_dump ($a); ?>
</рге> <
/FONT >

При запуске сценария будет выдано:

 аггау(З) { Г0]=>
int(l)
int(2) [2]=> array(3) {
\ stnng(l) "a"
f\  [1]=>
',** string(l) "b"
1
 / [2]-> /string(l)
"c"
} }<

  /FONT>

Логические функции определения типа переменной

is_scalar

Проверка, является ли переменная простой

bool is_scalar (mixed var)

Возвращает TRUE, если переменная var имеет скалярный тип (числа, строки, логические значения), но не комплексный (массивы или объекты).

is_null

Проверка, является ли переменная пустой

bool is_null (mixed var)

Возвращает TRUE, если переменная var не существует (или ей явно присвоено пустое значение null). Функция эквивалентна выражению: (var = null), а также is_set(var). < /FONT >

is_ numeric

Проверка, является ли переменная числовой

bool isjiumeric (mixed var)

Возвращает TRUE, есл и переменная var имеет численный тип (integer, double), или строковый с числовым значением.

is_bool

Проверка, является ли переменная логической

bool is_bool (mixed var)

Возвращает TRUE, если переменная var имеет тип логического значения (TRUE либо FALSE), иначе FALSE.

is_nt

Синоним функции isjong ()

booll is_int (mixed var)

Возвращает TRUE, если переменная var имеет целочисленный тип.

is_integer

Синоним функции isjong ()

bool is_integer (mixed var)

Возвращает TRUE, если переменная var имеет целочисленный тип.

is_long

Проверка, является ли переменная целочисленной

bool isjong (mixed var)

Возвращает TRUE, если переменная var имеет целочисленный тип (integer, long). Синонимы функции: is_int(), is_integer().

is_real

Синоним функции is_double()

bool is_real (mixed var)

is_float

Синоним функции is_double()

bool is_float (mixed var)

is_double

Проверка, является ли переменная дробной

bool is_double (mixed var)

Возвращает TRUE, если переменная var имеет тип double, иначе FALSE.

is_string

Проверка, является ли переменная строковой

bool is_string (mixed var)

Возвращает TRUE, если переменная var — это строка, иначе FALSE.

is_array

Проверка, является ли переменная массивом

bool is_array (mixed var)

Возвращает TRUE, если переменная var — это массив, иначе FALSE.

is_object

Проверка, является ли переменная объектом

bool is_object (mixed var)

Возвращает TRUE, если переменная var — это объект, иначе FALSE.

is_resource

Проверка, является ли переменная указателем на ресурс

bool is_resource (mixed var)

Возвращает TRUE, если переменная var указывает на ресурс, выделенный и возвращенный предназначенной для этого функцией.

Ресурсы — это объекты, подобные файлам или результатам запросов к базам данных, выделяемые и освобождаемые внутренними функциями РПР. Когда программе больше не требуется какой-либо ресурс, хорошей практикой программирования является его явное освобождение предназначенными для этого функциями. Но в большинстве случаев интерпретатор РНР самостоятельно, по мере необходимости освобождает ненужные ресурсы (обычно при завершении сценария). Попробуйте, например, разобраться, чем отличаются устойчивые подключения к серверам баз данных и временные.

get_resource_type

Определение типа дескриптора ресурса

string get_resource_type (resource $handle)

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

 $с = mysql_connect();
echo get_resource_type($c) "\n":
// prints: mysql link
$fp = fopen("foo"."w");
echo get_resource_type($fp) "\n": // prints: file
 Sdoc =
new_xmldoc("l 0"). echo
get_resource_typef$doc->doc)."\n": // prints, domxml
document <

/FONT >

Массивы

См. также: is_array(), explode(), implode(0, split() и join().

Инициализация массива, добавление/извлечение элементов

array

Создание и инициализация массива

array array ([mixed ...])

Языковая конструкция, возвращающая созданный массив. Индексы в ассоциированных массивах и значения элементов разделяются оператором =>. < /FONT >

Пары Index => value разделяются запятыми, они определяют индекс и значение. Индекс может быть строковым или числовым (но в ассоциированных массивах ведет себя как строковый). Если индекс не указывается, подразумевается по умолчанию подставляемое числовое значение автоинкремента (начиная с 0). Если указываются два элемента с одинаковыми индексами, последний заменяет первый. < /FONT >

Пример 1.

 Sfruits = array ( // создаем
 двухмерный ассоциативный массив
"fruits" => array ("a"=>"orange". "b"=>"banana".
  "c"=>"apple").
// эквивалент записи: Sfruits ["fruits"]["a"] =    "orange";
 и т д.
"numbers" => array (1.2. 3.4.
  5.6).
// эквивалент записи: Sfruits ["numbers"][]=
  1: и т.д.
"holes" =
 > array ("first".
5= > "second", "third")
):<   /FONT >

Пример 2.

 Sarray = arrayt 1. 1. 1. 1. 2=>4. 19. 3=>13). print_r($array):
// распечатать
  массив
Вывод будет следующим:
Array ( [0]  -> 1 [1] -> 1 С2]=> 4 [3]=

 > 13 [4] => 19 ) <  /FONT >

Пример 3 — одномерный массив.

 $firstquarter = arrayd =>
'January'. 'February', 'March');
pnnt_r($firstquarter):
Вывод будет следующим:
Array ( [1] => 'January'  [2] =

> 'February' [3] => 'March1
) <
/FONT >

См. также list().

array_pad

Добавление в массив нескольких элементов

array array_pad (array input, int pad_size, mixed pad_value)

Возвращает копию массива, в который добавлены элементы со значением pad_value, так, что число элементов в результирующем массиве становится равным pad_size. Если pad_size > 0, элементы добавляются справа, если < 0, то — слева. Если значение pad_size меньше числа элементов в исходном массиве, никакого добавления не производится (возвращается исходный массив).

 $input = array (12. 10. 4):
Sresult = array_pad (Sinput, 5, 0),
$ result is array (12. 10. 4. 0. 0)
Sresult = array_pad (Sinput. -7. -1).
$ result is array (-1. -1. -1.  -1, 12. 10. 4)
Sresult =
 array_pad (Sinput. 2. "noop"): $ Уупс - нечего
добавить <

 /FONT >

range

Создание массива из диапазона целых чисел

array range (int low. irvt high)

Создает и возвращает массив, содержащий целые числа от наименьшего low до наибольшего high включительно.

 $numbers = range (3.6):
// теперь Snumbers = array (3. 4. 5 б) <
  /FONT >

array_pop

Получение и удаление последних элементов массива

mixed array_pop (array array)

$stack = array ("orange", "apple", "raspberry"):
Sfruit = array_pop (Sstack); // и их осталось
 двое: "orange", "apple"
// a Sfruit =
"raspberry". <

  /FONT >

См. также: array_push(), array_shift() и array_unshift().

array_ push

Добавление элементов в конец массива

int array_push (array array, mixed var [, mixed ...])

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

Для одного элемента действие эквивалентно $array[] = $var; < /FONT >

 $stack = array (1. 2);
$n = array_push (Sstack. "WW". 3):
// $n - 4; Sstack  (1. 2. "WW". 3). <
/FONT >

См. также: array_pop(), array_shift() и array_unshift().

array_shift

Получение и удаление первых элементов массива

mixed array_shift (array a)

Возвращает первый элемент массива и удаляет его, сдвигая все последующие элементы массива а на одну позицию вперед.

 Sargs - array ("-v". "-f"). $opt = array_shift (Sargs);
7 теперь $args = array ("-f");. a $opt = '-v":

См. также: array_unshift(), array_push() и аггау_рор().

array_unshift

Добавление элементов в начало массива

int array_unshift (array агг, mixed var [, mixed ...])

Добавляет перечисленные элементы var в начало массива агг, при этом все последующие элементы агг сдвигаются на число добавленных. Возвращает новое число элементов в массиве.

$queue = array ("pi", "рЗ").
array_unshift ($queue. "o4". "p5", "рб"); //
  возвратит 5
//теперь $queue = ("p4", "p5". "рб". "pi",
  и "рЗ").

См. также: array_shift(), array_push() и array_pop().

list

Занесение элементов массива в переменные

void "list(...);

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

<table>
<tr>
<th>Employee name</th> <th>Salary</th>
</tr>
<?php
$result - mysql ($conn. "SELECT
 id. name, salary FROM employees"):
  while (list ($id. $name. Ssalary) -
mysql_fetch_row (Sresult)) { print ("
  <tr>\n".
<td><a hr°f-\""'nfo.php''id=$id\">
$name</a></td>\n".
  <td>$salary</td>\n".
" </tr>\n"); } ?>
</table>

См. также: extract(), each() n array().

compact

Занесение набора переменных в массив

array compact (mixed varname [, mixed ...])

Создает массив из указанных переменных, имена которых указаны как аргументы varname, со значениями этих переменных. Число аргументов неопределенное. Аргументами могут быть строки или массивы строк. Если в аргументе указано имя несуществующей переменной, он пропускается. Действие функции противоположно функции extract(). .

 $city = "Санкт-Петербург";
Sstate = "РФ";
Sevent - "Трехсотлетие".
location_vars = array ("city", "state");
$result = compact ("event".
"nothing_here". $locat.ion_vars);
// теперь. Iresult -= array
("event" -> "Трехсотлетие".
  // "city" => "Санкт-Петербур!".
"state" =>   'РФ")

См. также extract().

extract

Экспорт элементов массива в переменные

void extract (array var_array [, int extractjtype [, string prefix]])

Эта функция экспортирует из ассоциативного массива var_array элементы, делая их глобальными переменными. Индекс элемента используется как имя переменной, а значение элемента — как значение переменной (глобальные переменные — это элементы «символьной таблицы» — массива глобальных переменных $GLOBALS[], и функция extract() копирует элементы массива var_array в массив $GLOBALS[]). Действие функции extract() противоположно compact().

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

  • EXTRJ3VERWRITE — при коллизии перезаписывать существующую переменную (по умолчанию);
  • EXTR_SKIP — при коллизии НЕ перезаписывать существующую переменную;
  • EXTR_PREFIX_SAME — при коллизии добавлять к имени создаваемой переменной префикс prefix;
  • EXTR_PREFIX_ALL — добавлять к именам всех создаваемых переменных префикс prefix.

Заметьте, что аргумент prefix требуется только тогда, когда аргумент extract_type имеет значение EXTR_PREFIX_SAME или EXTR_PREFIX_ALL

Функция проверяет имя каждой создаваемой переменной на соответствие правилам для имен переменных, и если имя недопустимо, то переменная не создается.

Пример возможного совместного использования с функцией wddx_ deserialize():

 <?php
/* Предположим, что массив $var_array
 возвращен wddx deserialize() */
Ssize = "large":
$var_array - ar^ay ("color" => "blue".
"size" -> "medium".
"shape" => "sphere"): extract ($var_array.
EXTR_PREF1X_SAME. "wddx"):
print "Scolor. $si?e. Sshape. $wddx_size\n":
// выведет: blue, large,   sphere, medium ?>

См. также compact().

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

count

Определение числа элементов в комплексной переменной

int count (mixed var)

Возвращает число элементов в массиве или объекте var. Если var -скалярная неременная, то возвращает 1, если такая переменная существует, или 0, если такой переменной нет.

Заметьте, что 0 возвращается и в случае, если переменная не существует, и в случае, когда указан массив, не содержащий элементов. Используйте isset() для проверки существования переменной.

 $а[0] = 1; $а[1] - 3; $3^2] = 5 Sresult =
count~($a); //возвратит 3 а[2] =1:
// такой элемент уже существует
$а[4] = "": // пустой элемент
$а[6] = 5: $result = count ($a),
//теперь возвратит 5

См. также: sizeof(), isset() и is_array().

sizeof

Число элементов массива

int sizeof (array array)

Возвращает число элементов массива аналогично функции count ().

array_count_values

Вычисление числа одинаковых значений массива

array array_count_values (array input)

Возвращает массив, имеющий в качестве индексов уникальные значения массива input, а в качестве значений — количество одинаковых элементов (значений) в массиве input (то есть частоту встречаемости).

 $агтау = атау (1. "hello". I. "world", "hello");
array_count_values (Sarray):
/7 возвращает array (1=>2. "hello" =

   >2. "world" =

   >1< /P><
 /P>

in_array

Проверка массива на наличие значения

bool in_array (mixed needle, array haystack)

Возвращает TRUE, если в массиве haystack содержится элемент со значением needle.

 $os = array ("Mac". "NT". "Irix". "Liniu");
 if (in_array ("Inx". $os)){
print "Inx имеется".  }

array_unique

Удаление дублирующихся значений массива

array array_unique (array array)

Возвращает массив, из которого удалены дубликаты значений. Индексы сохраняются.

 Sinput = array ("a" => "XX". "YY". "b"
 => "XX". "ZZ". "YY"):
 $г =  array_unique (Sinput): // Теперь $г
 =
("b" =
 >  "XX". "1" =
   > "ZZ",
"2" =
 > "YY") <  /P > <
  /P >

array values

Удаление ассоциативных индексов массива

array array_values (array input)

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

 $array = array ("size" => "XL", "color" =>
"gold"): array_values (Sarray):
// returns array ("XL", "gold")
//Пример реализации функции
array_values
для РНРЗ function _array_values
 ($arr)   { $t = array();
while (list($k. $v) =  each ($arr)) { $t[] =

     $v;  return
$t; } } <    /P >

array_keys

Получение в массиве индексов массива

array array_keys (array input [. mixed search_value])

Возвращает в массиве (все) индексы массива input. При указании необязательного аргумента search_value в массиве возвращаются только индексы элементов массива input, имеющих значение search_ value.

 $array = array (0 => 100, "color" => "red". 15):
array_keys ($array): // returns array
(0. "color". 1)
$array = array ("blue", "red", "green", "blue",
  "blue"): array_keys ($array. "blue").
 //  returns array (0. 3. 4) <

/P >

Пример алгоритма реализации функции array_keys (для PHP 3):

 function _array_keys ($arr. $term="")
{ $t = array(); while (list($k.$v) = each
(Sarr))
 { if (Sterm && $v != $term)
continue:   $t[] = $k: } return $t:
}

См. также array_values().

array_flip

Обмен местами индексов и значений массива

array array_flip (array trans)

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

 $trans=array(3.4.5);
pnnt_r($trans): // Выводит Array
( [0]=>3. [1]=>4. [2]=>5 )
 Strans=
  array_flip (Strans);
pnnt_r($trans): //Выводит: Array( [3]= >0,
[4] =

>1. [5]=>2 )< /P>

array_sum

Суммирование всех элементов массива

mixed array_sum (array input [, int num_req])

Возвращает сумму всех числовых значений элементов массива. Тип возвращаемого числа (integer пли float) будет зависеть от типа значений в массиве.

 $а = аггау(2.4.6.8), '
echo "sum(a) = " array_sumC$a) "\n",
// prints- sum(a)   = 20
$b = array("a"=>1.2."b"=>2.3."c"=>3.4):
echo "sum(b) = ",array_sum($b). "\n";
// prints sum(b)   = 6.9

array_rand

Случайная выборка индексов массива

mixed array_rand (array input [, int num_req])

Возвращает в массиве случайным образом выбранные индексы (!) элементов массива input. Число этих элементов указывается аргументом num_req (по умолчанию 1). Если выбирается один элемент, то возвращается не массив, а значение.

 srand ((double) microtime() 10000000);
//инициализировать генератор случайных
чисел
Sinput = array ("Neo". "Morpheus". "Trinity".
  "Cypher". "Tank"):
$rand_keys = array_rand (Sinput. 2);
print $input[$rand_keys[0]]."\n".
print $input[$rand_keys[l]]."\n":

Работа с несколькими массивами

array_diff

Определение исключительного пересечения массивов

array array_diff (array arrayl, array array2 [, array ...])

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

 $arrayl = array ("a" => "green", "red",
"blue"):
$array2 = array ("b" => "green", "yellow",
"red");
Sresult = arrayjJiff (Sarrayl. $array2);
// Sresult = array ("blue"):

См. также array_intersect().

array_ intersect

Определение включительного пересечения массивов

array array_intersect (array arrayl, array array2 [, array ...])

Возвращает массив, содержащий значения массива arrayl, имеющиеся uo всех остальных массивах. Индексы не сохраняются.

 Sarrayl = array ("a" => "green", "red", "blue").
  Sarray2 = array ("b" => "green", "yellow",  "red"): Sresult = array_intersect (Sarrayl. Sarray2).
  //Sresult =   array ("a" ->
  "green", "red"): <    /P >

См. также array_d1ff().

array_merge

Объединение массивов

array arrayjnerge (array arrayl, array arrayZ [, array ...])

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

 Sarrayl = array ("color" => "red". 2. 4):
$array2 = array ("a", "b". "color" => "green",
shape" => "t". 4).
Sail = arrayjnerge (Sarrayl. Sarray2).
// Sail = arrayC'color" => "green". 2. 4. "a",
  "b". "shape" => "t". 4).

См. также array_merge_recursive().

array_merge_recursive

Объединение сложных массивов

array array_merge_recursive (array arrayl, array аггау2 [. array ...])

Функция сходна с arrayjnergeO с тем дополнением, что она работает с многомерными и древовидными массивами, а элементы с одинаковыми строковыми индексами превращаются в подмассивы (см. пример). Для числовых индексов поведение функции аналогично аггау_ merge().

 $arl = array ("color" => array (
"favorite" => "red").  5).
$ar2 = array (10. "color" => array ("favorite" =>
"green", "blue")).
Sresult = array_merge_recursive ($arl. $ar2).
// Sresult = arrayC'color" => array (
// "favorite" => array ("red" "green").
// "blue"). 5. 10).

См. также array merge().

array_slice

Получение части массива

array array_slice (array array, int offset [, int length])

Возвращает массив, содержащий последовательность элементов массива array, начиная с элемента, имеющего позицию offset, в количестве length элементов.

Если offset > 0, то последовательность будет начинаться с элемента, имеющего позицию offset от начала массива, если < 0, то отчет производится от конца массива. Не забывайте, что первый элемент имеет нулевую позицию, а последний здесь (-1).

Если указывается length>0, то это число возвращаемых в массиве элементов; если length < 0, то это позиция последнего возвращаемого элемента в массиве array от его конца. Если length не указывается, то возвращаются элементы вплоть до конца массива array.

 $input = array ("a", "b". "с", "о",
"е"), // помните. $input[0]="a"
$output = array_slice ($input. 2):
// возвращает "c"."d".  и "е"
$output = array_slice (Sinput. 2. -1).
// возвращает "c"."d"
$output = array_slice (Sinput. -2. 1);
// возвращает '^".предпоследний
$output = array_s!1ce (Sinput. 0, 3);
// возвращает "a"."b",  и "с"

См. также array_splice().

array_splice

Удаление части массива или замена ее частью другого

array array_splice (array array, int offset [, int length [. array replacement]])

Удаляет последовательность элементов массива array путем замены их на элементы из массива repl acement, начиная с элемента массива array, имеющего позицию offset, в количестве length элементов. Воз-вращает массив удаленных элементов.

Если offset > 0, то последовательность будет начинаться с элемента, имеющего позицию offset от начала массива; если < 0, то отсчет производится от конца массива. Не забывайте, что первый элемент имеет нулевую позицию, а последний — (-1).

Если указывается length > 0, то это число удаляемых элементов массива array; если length<0, то это позиция последнего удаляемого элемента в массиве array от его конца. Если length не указывается, то удаляются элементы вплоть до конца массива array. Чтобы удалить все элементы массива array, начиная от позиции offset и вплоть до конца массива array, при указанном аргументе replacement используйте аргумент length, равный count($input).

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

Если указан массив replacement, то удаляемые элементы заменяются на элементы массива repl acement. Если offset и length такие, что удалять нечего, то элементы массива replacement вставляются в позицию, указанную аргументом offset. Если массив replacement состоит из одного элемента, его можно указать как простую переменную, не заключенную в структуру аггау(). Действие следующих функций эквивалентно:

array_push (Sinput, $x, Sy) | array_splice (Sinput, count (Sinput), 0, array ($x, Sy))
array pop (Sinput) | array_splice (Sinput, -1)
array shift (Sinput) | array _splice (Sinput, 0, 1)
array unshift (Sinput, $x, Sy) | array splice (Sinput, 0, 0, array ($x, $y))
$a[$x] = Sy | array splice (Sinput, $x, 1, Sy)

 $input = array ("Al". "B2". "C3", "D4").
array_splice (Sinput. 2); // $input
= array ("Al". "B2")
  //array_splice ($input. 1. -1);
// $input = array ("Al". "D4")
array_splice ($input. 1. count($input), "XI");
// Sinput = array ("Al", "XI") //array_splice (Sinput
  -1. 1. arrayC'Yl". "Y2"));
// Sinput = array ("Al". "B2".
// "C3". "Yl". "Y2")

См. также array_slice().

Курсор массива

reset

Сброс курсора массива

mixed reset (array array)

Устанавливает внутренний курсор массива array на его начало и возвращает значение начального элемента.

См. также: current(), each(), next(J и prev().

end

Перемещение курсора массива в конец

mixed end (array array)

Перемещает внутренний курсор массива array на последний элемент и возвращает этот элемент (его значение).

См. также: current(), each(), end(), next() и reset().

next

Перемещение курсора массива вперед

mixed next (array arr)

Возвращает значение элемента массива arr, на которое указывает внутренний курсор массива (или FALSE, если элементов больше не осталось). В этом действие данной функции аналогично current(), но затем функция next() перемещает курсор массива на следующий элемент.

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

См. также: current(), end (), prev() и reset ().

prev

Перемещение курсора массива назад mixed prev (array array)

Возвращает значение элемента массива агг, на которое указывает внутренний курсор массива (или FALSE, если элементов больше не осталось). В этом действие данной функции аналогично currento, но затем функция prev() перемещает курсор массива на предыдущий элемент. В огличие от next(), prev() перемещает курсор не вперед, а назад.

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

См. также: currento, end(), next() и reset().

current

Определение текущего элемента массива

mixed current (array array)

Каждый массив имеет внутренний указатель на «текущий» элемент этого массива — курсор. Функция возвращает элемент, на который указывает курсор массива, не сдвигая курсор.

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

См. также: end(), next(), prev() и reset().

pos

Синоним функции currentf)

mixed pos (array array)

См. также: end(), next(), prev() и reset().

key

Получение индекса текущего элемента массива

mixed key (array array)

См. также: current ()и next ().

each

Получение текущего элемента массива array each (array array)

Возвращает в массиве пару «индекс и значение» текущего элемента массива (на который указывает внутренний курсор) и сдвигает курсор массива на следующий элемент. Возвращаемый массив имеет четыре элемента:

 [0] => индекс [1] => 'значение' [key] =>
индекс [value] => 'значение'

Когда курсор достигает конца массива, функция each() возвращает значение FALSE.

Пример 1.

 $foo = array ("bob", "fred". "jussi". "joum".
  "egon". "marliese");
$bar = each ($foo):
// теперь Sba1- =
( 0=>0, l=>'bob'. key=>0. value=>'bob' )

Пример 2.

 $foo = array ("Robert" => "Bob'. "Seppo" =>
  "Sepi"):
$bar = each ($foo);
// теперь $bar =
 (0=>'Roberf . l-=>'Bob'. key=>'Robert1 .value =>
  'Bob')

Функция each() обычно используется в паре с list() для перебора элементов массива, например $HTTP_POST_VARS[]:

 echo "Values submitted via POST method:<br>".
reset ($HTTP_POSM/ARS).
while (list ($key. $val) - each
 ($HTTP_POST_VARS)) {
echo "$key =•> $val<br>"

См. также: key(), list(), current(), reset(), next() и prev().

array _walk

Применение функции к элементам массива

Int array_wa!k (array arr, string func, mixed userdata)

Применяет пользовательскую функцию func к каждому элементу массива arr. В пользовательскую функцию с именем func передаются три (два) аргумента: значение текущего элемента, его индекс и аргумент userdata, если он указан.

См. пример использования с функцией create_function().

Если func требует более трех (двух) аргументов, при каждом ее вызове будет выдаваться предупреждение. Чтобы блокировать выдачу этих предупреждений, ставьте знак «@» перед функцией аггау_ walkO или используйте функцию error_reporting().

Функция func будет получать значения и индексы массива arr «по значению», то есть не сможет вносить в него изменения; если это необходимо, передавайте аргумент агг «по ссылке», указав перед его именем «&», и тогда все изменения отразятся на массиве.

В РНР 4 необходимо явно вызвать функцию reset(), чтобы установить внутренний курсор массива на первый элемент.

 $v = array ("d"=>"Al". "а"=>"В2".
"b"=>"C3". "c"=>"D4");
function test_alter (&$iteml. $key. $prefix)
{ // по ссылке
Siteml - "$prefix Siteml"; }
function test_print ($item2. $key)
{ echo "$key. $item2<br>\n"; )
array_walk ($v. 'test_pnnt').
reset ($v).
array_walk ($v. 'test_alter', '_t_');
reset (Sv):
array_walk ($v. 'test_pnnt');

См. также: each ()и list().

Сортировка массива

array_reverse

Расстановка элементов массива в обратном порядке

array array_reverse (array a)

Возвращает массив с обратным порядком элементов. Для вложенных массивов порядок сохраняется.

 Sinput = array ("php". 4.0. array ("green", "red"));
Sresult = array_reverse (Sinput):
// Sresult = array (array ("green", "red").
 4 0. "php").

shuffle

Перемешивание элементов массива

void shuffle (array array)

Перемешивает элементы массива в случайном порядке.

 $numbers = range (1.20):
srand ((double)microtime()*1000000);
// инициализируем генератор
shuffle (Snumbers); // случайных чисел
while (list (. Snumber)
= each (Snumbers)) { echo "Snumber "; }

См. также: arsort(), asort(), ksort(), rsort(), sort() и usort().

sort

Сортировка массива по возрастанию

void sort (array array [, int sort_flags])

Сортирует элементы массива (от меньшего к большему).

 <?php Sfruits = array
 ("lemon", "orange", "banana",
  "apple"). sort ($fruits):
reset (Sfruits):
while (list ($key. $val)
= each (Sfruits))
{. echo "fruits[".$key."] = " $val, }
>>

В этом примере будет напечатано:

 fruits[0]
= apple frultstl]
 = banana fruits[2]
 = lemon fruits[3]
= orange

Флаги типа сортировки — значения аргумента sort_flags:

  • SORT_REGULAR — сравнивать элементы «как есть»;
  • SORT_NUMERIC — сравнивать элементы как числа;
  • SORT_STRING — сравнивать элементы как строки.

См. также: arsort(),
      asort(), ksort(), natsort(), natcasesort(), rsort(), usort(),
      array_multisort() и uksort().

rsort

Сортировка массива по убыванию

void rsort (array array [, int sort_flags])

Сортирует элементы массива в обратном порядке (от большего к меньшему). Аргумент sort_flags указывает параметры сортировки — см. функцию sort().

 Sfruits = array ("lemon", "orange", "banana",
apple"): rsort (Sfruits): reset (Sfruits):
while (list ($key. $val) = each (Sfruits)) {
echo "$key -> $val\n". }

В этом примере элементы массива будут напечатаны в обратном порядке:

 fruits[0] = orange fruits[l]
= lemon fruits[2] = banana fru1ts[3] = apple

См. также: arsort(), asort(), ksort(), sort() и usort().

asort

Сортировка ассоциативного массива по возрастанию

void asort (array array [, int sort_flags])

Сортирует элементы массива агг с сохранением ассоциативных индексов. По умолчанию — в алфавитном порядке. Значения флагов сортировки (необязательный аргумент sort_flags) приведены в описании sort().

 Sfruits = array ("d"=>"lemon". "a"=>
"orange".
"b"=>"banana". "c"=>"apple").
asort (Sfruits):
eset (Sfruits):
while (list ($key. $val) = each (Sfruits))
{
echo "$key = $val\n". }

Напечатано будет (значения в алфавитном порядке, индексы сохранены):

 fnuits[c] = apple fruits[b]
= banana fruitstd] = lemon fruits[a]
= orange

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

См. также: arsort(), rsort(), ksort() и sort()

arsort

Сортировка ассоциативного массива по убыванию

void arsort (array arr [, int sort_flags])

Сортирует элементы массива arr с сохранением ассоциативных индексов. По умолчанию в обратном алфавитном порядке. Значенияфлагов сортировки (необязательный аргумент sort_flags) приведены в описании sort().

 Sfruits = array ("d"=>"lemon". "a"=>"orange".
"b"=>"banana". "c"=>"apple"):
arsort (Sfruits);
reset (Sfruits).
.vhile (list (Skey. $val) = each (Sfruits)) {
echo "$key = Sval\n";

Напечатано будет (значения в обратном алфавитном порядке):

 fruitsfa] =
orange fruits[d] = lemon fruits[b] =
 banana fruits[c] = apple

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

См. также: asort(). rsort(), ksort() nsort().

ksort

Сортировка массива по возрастанию индексов

int ksort (array array [, int sort_flags])

Сортирует массив array по значениям индексов с сохранением индексных ассоциаций. Аргумент sort_f"lags указывает параметры сортировки — см. функцию sort ().

 Sfruits = array ("d"=>"lem". "a"=>"ora".
"b"=>"ban". "c"=>"app");
ksort (Sfruits);
reset (Sfruits);
while (list ($key. $val) = each (Sfruits)) {
echo "$key -> $val\n": }

В этом примере будет напечатано:

 fruits[a] = ora fruits[b] =
ban fruits[c] = app fruits[d] - lem

См. также: asort(), arsort(), sort(), natsort() и rsort().

krsort

Сортировка массива по убыванию индексов

int krsort (array array [, int sort_flags])

Сортирует массив array по значениям индексов в обратном порядке с сохранением индексных ассоциаций. Аргумент sort_flags указывает параметры сортировки — см. функцию sort()

 $fruits = array ("d"=>"lem". "a"=>"o-a".
"b"=>"ban" "c"=>"app");
krsort (Sfruitsj:
eset (Sfrults): /
hhile (list ($key. $val) - each (Sfruits))
 {
echo "$key -> Sval\n". } \

В этом примере будет напечатано:

fri/itstd]  lem frintsfcl = app fruitstb]
j can fruits[a] = ora

См. также: asort(), arsort(), ksort(), sort(), natsortion rsort().

natsort

«Естественная» сортировка массива

void natsort (array array)

Функция сортировки массива array в «естественном» для человека порядке. Пример различия между обычным порядком сортировки (используемом в функции sort()) и «естественным»:

 Sarrayl = Sarray2 = array
("imgl2.png"."imgl0.png"."img2.png"."imgl.png");
sortdarrayl);
echo "Стандартная сортировка: ":
pnnt_r($a'rayl):
natsort($array2).
echo 'ЛпЕстественная сортировка: ":
print_r($array2):

Будет напечатано:

Стандартная сортировка.
Array ( [0] => imgl.png
[1] => imglO.png
[2] => imgl2.png
[3] => irng2.png )
Естественная сортировка:
Array (
[3] => imgl.png [2] => img2.png [1]
> imglO png [0] => img!2   png )

Более подробную информацию можно получить на странице Мар-О типа Пула «Natural Order String Comparison» (http://www.linuxcare.com.au/projects/natsort/).

См. также: natcasesort(), strnatcmp() и strnatcasecmp().

natcasesort

«Естественная» сортировка массива, нечувствительная к регистру

void natcasesort (array array)

Функция сортировки массива array в «естественном» для человека порядке с игнорированием регистра. Аналог функции natsort(), см. пример различия между обычным порядком сортировки (используемом в функции sort()) и «естественным» в описании функции natsort().

Более подробную информацию можно получить на странице Мартина Пула «Natural Order String Comparison» (http://www.linuxcare. com.au/projects/natsort/).

См. также: sort(), natsort(), strnatcmp() и strnatcasecmp().

uasort

Пользовательская сортировка ассоциативного массива

void uasort (array arr, function cmp_function)

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

Посмотрите примеры в описаниях функций usort() и uksort().

См. также: usort(), uksort(), sort(), asort(), arsort(), ksort() и rsort().

uksort

Пользовательская сортировка массива по индексам

void uksort (array array, function cmp_function)

Сортирует массив arr по индексам с сохранением индексных ассоциации, используя для сравнения индексов элементов пользовательскую функцию, указанную аргументом cmp_function. В эту функцию передаются два сравниваемых индекса элементов, а она в свою очередь должна вернуть положительное или отрицательное число или 0.

 function cmp ($a. $b) {
if ($a == $b) return 0;
return ($a > $b) ? -1 / 1; }
$a = array (4 => "four". 3 =>
 "three". 20 =>
  "twenty". 10 => "ten").
uksort ($a. "cmp").
while (list ($key. $value)
= each (Sa)) {
echo "$key: $value\n". }

Напечатано будет:

20 twenty 10 ten 4: four 3: three

См. также: usort(), uasort(), sort(), asort(), arsort(), ksort(), natsort() и rsort(),

usort

Пользовательская сортировка массива

void usort (array array, string cmp_function)

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

См. пример использования с функцией create_function().

 //Пример 1.
function cmp ($a, $b) {
if ($a == $b) return 0;
return ($a > $b) ? -1 : 1; }
$а = array (3. 2. 5. 6, 1). usort
{$a. "cmp"): while (list ($key. Svalue)
 each ($a))
{ echo "Skey: Jva1ue\n": }

В этом примере будет напечатано:

0: 6
1: 5
2: 3
3 :2
4 :1
//Пример 2" многомерный массив
function cmp ($а. $b) {

return stranp($a["fruit"],$b["fruit"]); }
$fruits[0]["fruit"] -
"lemons"; $fruits[l]L"fruit"l
  = "apoles": $fruits[2]["frun"] - "grapes":
usort($Truits. "cmp");
while (list ($key, Svalue)
= each (Sfruits)) {
echo "\$fruits[$key]: "
 . $value["fruit"] . "\n": }

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

Напечатано будет:

fruits[0]. apples
Sfruitsfl]: grapes Ifnnts!.?]:
lemons:

См. также: uasort(), uksort(), sort(), asort(), arsort(). ksort(), natsort() и rsort().

array_ multisort

Сортировка релятивных массивов

boo! array_mu1tisort (array arl [, mixed ol [, mixed rl ... [. array -..]]])

Сортирует многомерные массивы (один или более) с сохранением индексной ассоциации, возвращая TRUE при отсутствии ошибок.

Исходные массивы рассматриваются как столбцы таблицы, сортируемой построчно. Поэтому массивы должны иметь одинаковое число элементов, и взаимосвязь между ними, как в строках таблицы, сохраняется! Приоритетом сортировки пользуются первые массивы. Флаги сортиро.'жи могут указываться для каждого массива, и их действие распространяется только на тот массив, после которого они указаны.

Флаги определения порядка сортировки (аргументы ох):

  • SORT_ASC — сортировка в порядке возрастания (по умолчанию);
  • SORT_DESC - сортировка в порядке убывания.

Флаги типа сортировки (аргументы тх):

  • SORT_REGULAR — сравнивать элементы как есть (по умолчанию);
  • SORT_NUMERIC — сравнивать элементы как числа;
  • SORT_STRING — сравнивать элементы как строки.

// Пример 1
$arl - array ("10". 100. 100. "а"). $аг2 =
array (1. 3. "2". 1): arrayjnultisort
 ($arl. $ar2),
//$arl = array ("10". "a". 100. 100)
//$ar2 = array (1. 1. "2". 3)

Элементы второго массива, соответствующие одинаковым элементам (100 и 100) первого массива, также отсортированы.

// Пример 2
$ar = array (array ("10". 100. 100. "a"), array (1. 3.
  "2". D):
anrayjiultisort ($ar[0]. SORT_ASC. SORT_STRING.
$ar[l]. SORT_NUMERIC. SORT_DESC);
$ar[0] = ("10", 100, 100, "a") — сортируются как строки
  по возрастанию,
$аг[1] = (1, 3, "2", 1) — сортируются как числа по убыванию.

Функции

get_defined functions

Получение перечисления всех доступных функций

array get_defined_functions(void)

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

См. также: get_defined_vars(), get_extension_funcs().

function_ exists

Проверка существования функции

bool function exists (string function name)

Возвращает TRUE, если функция с именем function_name была декларирована.

 if ( function_exists( 'imap_open')) {
echo "IMAP функции доступны.<br>\n"
 } else
{ echo "IMAP функции НЕ
доступны <br>\n"-j }

Заметьте, что если имя функции декларировано, это еще не означа-/ ст, что ее можно использовать, и это зависит от конфигурации РНР.

См. также method_exists().

call_user_func

Косвенный вызов функции

mixed call_user_func (string functioiyiame [, mixed parameter [, mixed

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

 function AAA ($t) {
print "Аргумент - $t":
} call_user_fur>c САДА'. "МОЙ
аргумент");

create_function

Динамическое создание функции

string create_function (string args, string code)<$M2-36> Создает анонимную функцию и возвращает подобранное для нее имя. Обычно перечисление в строке args аргументов функции передается в одинарных кавычках в качестве ограничителей; и то же рекомендуется для кода тела функции, передаваемого в строке code. Это делается для того, чтобы предотвратить замену интерпретатором переменных на значения; в противном случае необходимо предварять указание переменных слешем: Uavar. Возвращаемые имена функций обычно имеют префикс lambda

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

 Snewfunc = create_function('$a.Sb',
'return "ln($a) + ln($b) = " log($a * $b),');
 echo "Новой анонимной
  функции присвоено имя:
$newfunc\n"; echo $newfunc(2.M_E)."\n";
  // Выводит следующее
// Новой анонимной функции присвоено
 имя- alambda_l // ln(2) +
ln(2.718281828459)
  = 1 6931471805599

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

 function process($varl. $var2. $farr)
{ // функция обработчик
for ($f=0: $f < count($farr); $f++)
echo $farr[$f]($varl.$var2)."\n". }
// создать набор математических функций
$fl = 'if ($a >=0) {return "b*a".5 = ".$b*sqrt($a),}'.
' else {return FALSE:}';
$f2 = "return \"min(bx2+a. a~2+b) =
 \" min(\$a*\$a+\$b.\$b*\$b+\$a):";
  $f3 = 'if ($a > 0 && $b != 0) {return
 "ln(a)/b = " log($a)/$b;}'.
I else {return FALSE;}'.
Sfarr = array(
create_function('$x.$y',
 'return "немного тригонометрии: ".
(sin($x) + $x*cos($y)):').
 create_function('$x.$y'. 'return
"гипотенуза: ".
sqrt($x*$x + $y*$y).').
 create_function('$a.$b', $fl).
create_function('$a.$b',
  $f2), create_function('$a.$b'. $f3) ):
echo "\пИспользование первого
набора матем. функций \n"; echo
"parameters:
  2.3445. M_PI\n"; process(2 3445. M_PI, Sfarr):
// теперь создать набор строковых
функций Sgarr = array( create_function
('$b.$a'.'if (strncmp($a.$b,3) == 0)'
' return "** \"$a\" и \"$b\"\n** Похоже
 строки одинаковы!'   '
 (после проверки первых
трех символов)";'). create_function('$a.$b'.';
  return "CRC: ".crc32($a).". ".
crc32(b):'), create_function('$a.$b',
'; return "sirmlar(a.b) = ".
siimlar_text($a.$b,&$p) "($p*)":') ).
echo "\пИспользование первого
набора строковых функций \n":
processC'OnbiT
  - это сын ошибок".
"Опыт - это эксперимент". Sgarr);

После запуска сценария будет выведен следующий текст:

 Использование первого набора
матем.
функций parameters: 2.3445. М_Р1
немного тригонометрии: -
1.6291725057799
гипотенуза 3.9199852871011 о*а'.5
  = 4 8103313314525 min(b~2+a a'2+b)
 = 8.6382729035898 ln(a)/b =
0 27122299212594
Использование первого набора
строковых функций **
"Опыт - это эксперимент"
 и "Опыт - это сын ошибок"
** Похоже строки
 одинаковы! (после проверки первых
трех символов) CRC: -1865696101 .
1908338681 siimlar(a.b) = 13
(60.4651162/907*)

Но, пожалуй, наиболее полезное использование анонимных лямбда-функций — это их использование для создания функций обратного вызова, например при использовании совместно с array_walk() или usort().

 //Пример 1. Использование anonymous
 функций, как callback функций
$av = arrayC'the "."a "."that "."this "):
array_walk($av. create_function('S$v.$k'.'$v =
 $v."thing".')): pnnt_r($av): // for PHP
 3 use varjJump()// Выводит: // Array
// ( // [0] => the thing
// [1] => a thing
// [2] => that thing
// [3] => this thing // )
// массив строк отсортированный
по числу
символов в строке
 // от наиболее короткой
до самой длинной $sv =
arrayC'small","larger","a big string","It
  is a string thing"); print_r($sv);
// Выводит:
// Array // ( // [0] => small
// [1] => larger
// [2] => a big string
// [3] => it is a string thing // )
// сортировать строки
usort($sv. create_function
('$a.$b' . 'return strlen($b) - strlen($a): '
 )):
print_r($sv);
// Выводит:
// Array // {
// [О] => it is a string thing
// [1] => a big string
// [2] => larger
// [3] => small // )

func_get_arg

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

mixed func_get_arg (Int argjium)

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

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

<?php
function foot) {
Snumargs = func_num_args();
echo "Число аргументов $numargs
<br>\n":
if (Snumargs >= 2) j
echo "Второй аргумент:
" func_get_arg (1) . "<br>\n": } }
foo (1. 2. 3): ?>

См. также: func_num_args() и func_get_args().

func_get_args

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

array func_get_args (void)

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

 <?рhр
function тоо() {
Jnumargs = func_num_args() ;
echo "число аргументов:
 $numargs<br>\n". $arg_list =
 func_get_args().
  for (Si = 0. $1 < Snumargs; $1+*)
{ echo "аргумент (номер $i): "
  . $arg list[$i] . "<br>\n"; } }
foo (1. 2. 3); ?>

См. также: func_num_args() и func_get_arg().

func_num_args

Определение числа полученных аргументов

int func_num_args (void)

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

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

 <?php
function foo() {
Snumargs = func_num_args():
echo "Число аргументов функции:
 $numargs\n": }
foo (]. 2, 3). // Pnnts 'Number of arguments: 3' ?>

Объекты и классы

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

В этом примере сначала определяется базовый класс, а затем его наследник.

<?php // Пример 1 Файл с определениями
 классов: classes. inc class ИсточникС
вета
  { // базовый класс var $>правляемость;
//неизменное логическое значение
 var
 $Яркость;
// конструктор function ИсточникСвета
 ( $управляемость. $яркость="неяркий"
) {
$this->Управляемость = $управляемость;
$this->flpKOCTb = $яркость: }
function 15_управляемо() {
return $1гп5->Улравляемость. }
function whatjipKOCTbО {
return $this->Яркость; }
} // конец определения класса
ИсточникСвета
// Расширение базового класса
class Лампочка extends Источник
Света {
var $Включена = FALSE.
// конструктор function Ла»мпочка() (
$this->ИсточникСвета( TRUE,
"яркий" ):
// Лампочка - это ИсточникСвета
  (управляемый, "яркий") }
function включить() {
$this->Включена = TRUE. }
function 15_вклочена () {
return $this->Включена; }
} // конец определения класса
Лампочка ?>

Следующий сценарий создает экземпляры объектов на основе определенных классов, а затем выводит основную информацию, которую можно узнать о классах и объектах средствами РНР 4.

 <php // Пример 2 Файл test_scnpt.uhp
 include
 "classes.тс": // определения функций
function print_vars($obj) (
$arr = get_object_vars($obj);
while (list($prop. $val) = each($arr))
echo "\t - свойство '$ргор' =
 \"$val\"\n": i
function pnnt_methods($cbj)
{ $arr - get_class_methods(qet_class($obj)):
foreach (Jarr as Smethod)
echo "\t - метод: $rnethodition"; }
function class_parentagp($obj. Sclass)
{ global $$obj: if (is_subclass_of($$obj
 Sclass)),
 { erho "\пОбьркт $obj принадлежит к
 классу:
" get_class($$obj); echo " поцкпасса
 $class\n"; }
 else { echo "Объект $obj не принадлежит
к подклассу $class\n"; } i /
  конец определения функций
еспо "Доступные сценарий
 '$PHP_SELF' классы\n": iclss
- get_Jeclared_classesf
  > forear.h ($c.isb as $cis name)
echo "\t- *cls_namei)\n":
// инициализируем 2 объекта
$солние = new ИсточникСвета
СTRUE."очень яркий"); $эл_лампочка *
  new Лампочка ()
// выясняем информацию об объектах
echo "\пКЛАСС объекта 'солнце'. '
" get_class($coлнце) '"\n".
  еспо "КЛАСС обьекта 'эл_лампочка' '
.get сlаss(эл_ ланлочка); echo
"'. Родительский Класс '"
get parent сlass(эл_лампочка).°)\гГ;
// проследить свойства объекта
'солнце' echo
"\n Свойства объекта 'солнце'
  \п"; print \'аг5($солнце).
// и свойства объекта 'эл_лампочка
echo "\n Методы объекта
'эл_лампочка': \n":
pnnt_methocls(эл_лампочка):
echo "\n Наследственность:\n": сlass
_раrentаgе
("эл_лампочка", "Лампочка"): сlаss
_раrentаgе
("эл_лампочка". "ИсточникСвета"):

При запуске сценария в системе РНР 4.0.4 для Windows он выводит:

 Доступные сценарию классы
class. stdClass()
class: OverloadedTestClass()
class: Directory()class COMO
class: ИсточникСвета()
class: Лампочка()КЛАСС объекта
 'солнце':
'ИсточникСвета'
КЛАСС объекта 'эл_лампочка':
'Лампочка'. Родительский Класс
 (ИсточникСвета)
Свойства обьекта 'солнце':
- свойство 'Управляемость' =
 "1" - свойство 'Яркость' =
 "очень яркий"
Методы объекта 'эл_лампочка':
- метод ИсточникСвета()
- метод. 13_управляемо()
- метод: what_яpKocTb()
- метод: Лампочка()
- метод: включить()
 метод- 15_включена()
Наследственность:
Объект эл_лампочка не
принадлежит к
подклассу: Лампочка Объект
'эл_лампочка'
  принадлежит к классу: 'Лампочка',
подкласса:
'ИсточникСвета'

get_ declared_classes

Получение списка доступных классов

array get_declared_classes (void)

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

В РНР 4 в начале возвращаемого массива указываются имена трех дополнительных классов: stdClass (определен в Zend/zend.c), Over-loadedTestClass (определен в ext/standard/basic_functions.c) и Directory (определен в ext/standard/dir.c); для системы Windows доступен также класс Com.

class_ exists

Проверка существования класса

booll_ class_exists (string class_name)

Возвращает TRUE, если для класса classjiame имеется определение; иначе — FALSE.

get_class_methods

Получение списка методов класса

array get_class_methods (string class_name)

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

См. также: get_class_vars(), get_object_vars().

get_class_vars

Получение списка свойств класса

array get_class_vars (string class_name)

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

См. также: get_classjnethods(), get_object_vars().

get _class

Получение класса объекта

string get_class (object obj)

Возвращает имя класса, к которому принадлежит объект obj.

См. также: get_parent_class(), is_subclass_of().

get_parent_class

Получение имени родительского класса объекта

string get_parent_c!ass (object obj)

Возвращает имя родительского класса для класса, которому принадлежит объект obj.

См. также: get_class(), is_subclass_of().

is_subclass_of

Проверка наследования класса

boot is_subclass_of (object obj, string superclass)

Возвращает TRUE, если объект obj принадлежит к классу, наследному от класса superclass, иначе возвращает FALSE.

См. также: get_class(), get_parent_class().

get_object_vars

Получение списка свойств объекта

array get_object_vars (object obj)

Возвращает в ассоциативном массиве инициализированные для объекта obj свойства. Если переменным класса, к которому принадлежит объект obj, не были присвоены значения, то такие переменные в возвращаемый массив не включаются.

 <?php
class Point2D { // точка на плоскости
var $x. $у: var Slabel.
//конструктор
function Point2D($x. $y) {
$this->x = $х; $this->y = $у. }
function setl_abel($label) {
$this->label = Slabel. }
function getPointO {
return arrayC'x" => $this->x.
"y" => $this->y.
  "label" => $this->label); } }
$pl = new Point2D(1.233. 3.445);
pnnt_r(get_object_vars($pl));
// "Slabel" объявлена, но не
 инициализирована // Array // (
// [х] => 1.233 // [у] => 3 445
// ) $pl->setl_abel("point #1");
рп nt_r(get_object_vars( $pl)):
// Array // (
// [х] => 1.233 // [у] => 3.445
// [label] => point #1 // ) ?>

См. также: get_classjnethods(), get_class_vars().

method_exists

Проверка наличия у объекта указанного метода

bool method_exists (object object, string method_name)

Возвращает TRUE, если объект obj имеет метод с именем methodjiame, в противном случае возвращает FALSE.

call_ user_ method

Косвенный вызов метода объекта

mixed calljjserjnethod (string method_name, object obj [, mixed parameter [, mixed ...]])

Вызывает метод method_name объекта obj. Возможные параметры методу можно передать в последующих аргументах parameter.

 <?php
class Country { // объявление класса
var $NAME; var $TLD.
function Country($name. $tld) {
$this->NAME = $name;
$this->TLD = Hid; }
function pnnt_info($prestr="") {
echo Sprestr "Country: ",$this->NAHE.
"\n": echo Sprestr."Top
  Level Domain: ".$this->TLD."\n": } }
// создаем экземпляр класса Sentry
 = new CountryC'PoccMfl". "ru");
echo "* Прямой вызов метода класса \n",
 Scntry->print_info(), echo "\n*
 Косвенный вызов того же метода
 класса \n": calljjserjnethod
  ("pnntjnfo". Sentry. "\t"): ?>

См. также call_user_func().

Математические функции

Эти математические функции предназначены только для работы с числовыми данными, которые имеет ваш компьютер. Если вам требуется дополнительная точность в расчетах, обратитесь к «математическим функциям повышенной точности BCMath».

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

Математические константы

Следующие значения определяются математическим модулем РНР как константы:

Константа | Значение | Описание
М_Р1 | 3.14 159265358979323846 | Пи
М_Е | 2.7182818284590452354 | E
M_LOG2E | 1. 4426950408889634074 | log_2 e
M_LOG10E | 0.43429448190325182765 | log_10 e
M_LN2 | 0.693 1471 8055994530942 | log_e 2
М LN10 | 2.30258509299404568402 | log_e 10
М PI 2 | 1.57079632679489661923 | Пи/2
М_Р1_4 | 078539816339744830962 | Пи/4
М_1_Р1 | 0.31330988618379067154 | 1/Пи
М 2 PI | 0.63661977236758134308 | 2/Пи
M_SQRTPI | 1.77245385090551602729 | Sqrc(nn)
M_2_SQRTPI | 1.12837916709551257390 | 2/sqrt(nii)
M_SQRT2 | 1 .4 1 42 1356237309504880 | Sqrt(2)
M_SQRT3 | 1.73205080756887729352 | Sqrt(3)
M_SQRT1_2 | 0.70710678118654752440 | l/sqrt(2)
M_LNPI | 1.144729885849400174)4 | log_e(IIn)
M_EULER | 0.57721566490153286061 | Константа Эйлера

Алгебра

abs

Получение абсолютного значения числа

mixed abs (mixed number)

Возвращает абсолютное значение аргумента number. Если аргумент имеет дробный тип, возвращается дробь; иначе целое.

 $I=abs(-546). // $I=dnt) 546; $D=abs(123 456);
 // $D=(double) 123.456:

max

Получение наибольшего аргумента

mixed max (mixed argl, mixed arg2.....mixed argn)

Возвращает наибольший из аргументов. Число аргументов неограниченно. Если в качестве первого параметра передается массив, функция возвращает наибольшее значение из этого массива. Если аргумент не массив, то необходимо как минимум два аргумента, иначе выдается предупреждение. В случае, когда в аргументах передастся более одного массива, возвращается тот массив, который содержит наибольшее значение. Комбинировать в аргументах массивы и скалярные значения не рекомендуется. Возвращается значение с тем типом, который имеет наибольшую точность среди аргументов (double или integer), и этот же тип используется для сравнения аргументов.

min

Получение наименьшего аргумента

mixed min (mixed argl, mixed arg2, mixed argn)

Возвращает наименьший из аргументов. Функция действует подобно функции тах().

round

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

double round (double val [, int precision])

Округляет дробное число val до указанной аргументом precision точности (число десятичных знаков после занятой).

 $foo = round (34). // $foo ==30 $foo =
round (3.5); // $foo ==40
$foo = round (1.95583. 2): // $foo ==
1.96
См. также: ceil ()и floor().

floor

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

int floor (float number)

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

 $foo = floor (I 95583): // $foo == 1
См. также: ceil ()и round().

ceil

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

int ceil (float number)

Возвращает целое значение аргумента number, дополненного до следующего целого числа. Указывать в аргументе целые числа бессмысленно.

 $х = ceil(4.25): // $х=5

См. также: floor() и round().

Pi

Получение значения числа Пи

double pi (void)

Возвращает значение числа Пи (3.1415926535898).

sqrt

Извлечение квадратного корня числа

float sqrt (float arg)

Возвращает квадратный корень из аргумента arg.

 echo sqrt(90),// выведет 9.4868329805051

log

Вычисление натурального логарифма

float log (float arg)

Возвращает значение натурального логарифма аргумента arg.

 echo log(2 7); // выведет 0.99325177301028

log 10

Вычисление десятичного логарифма

float logl() (float arg)

Возвращает значение десятичного логарифма аргумента arg.

 echo loglO(lOOO). // выведет 3

ехр

Вычисление экспоненты

float exp (float arg)

Возвращает число с, возведенное в степень arg.

 echo exp(l): //' выведет 2.71828)828459

См. также pow().

pow

Возведение числа в степень

float pow (float base, float exp)

Возвращает результат возведения основания base в степень ехр.

 ecno pow(2.8).// выведет 256

См. также ехр().

Генерация случайных чисел

srand

Инициализация генератора случайных чисел

void srand (int seed)

Инициализирует генератор случайных чисел значением seed.

 srand ((double) microtiroe() * 1000000): Srandval = rsnd():

См. также: rand(), getrandmax(), mt_rand(), mt_srand() и mt_getrandmax().

getrandmax

Получение максимального случайного числа int getrandmax (void)

Возвращает максимальное значение, которое может возвратить вызов функции генератора случайных чисел rand(). Обычно это 32 767.

См. также: rand(), srand(), mt_rand(), mt_srand() n mt_getrandmax().

rand

Генерация случайного числа

int rand ([int min [, int max]])

При вызове с необязательными параметрами rain, max, определяющими соответственно минимальное и максимальное значение, генерирует и возвращает целочисленное псевдослучайное значение, лежащее включительно в указанных пределах. Если аргументы не указываются, то используются значения по умолчанию: 0 и RAND MAX.

Не забывайте заранее инициализировать генератор случайных чисел функцией srand().

См. также: srand(), getrandmax(), mt_rand(), mt_srand() и rat_getrandmax().

mt_srand

Инициализация МТ-генератора случайных чисел

void mt_srand (int seed)

Инициализирует МТ-генератор случайных чисел значением seed.

 mt_srand ((double) microtimeO * 1000000): Srandval = mt_rand():

См. также: mt_rand(), mt_getrandmax(), srand(), rand() и getran dmax().

mt_ getrandmax

Получение максимального МТ-случайного числа int mt_getrandmax (void)

Возвращает максимальное значение, которое может быть получено при вызове функции, генерирующей случайные числа, — mt_rand(). Обычно это 2 147 483 647.

См. также: mt_rand(), mt_srand(), rand(), srand() и getrandmax().

mt_ rand

Генерация МТ-случайного числа

int mt_rand ([int min [, int max]])

При вызове с необязательными параметрами min, max, определяющими соответственно минимальное и максимальное значение, генерирует и возвращает целочисленное псевдослучайное значение, лежащее включительно в указанных пределах. Если аргументы не указываются, то используются значения по умолчанию: 0 и RAND_MAX.

Не забывайте заранее инициализировать генератор случайных чисел функцией rat_srand().

Многие функции генераторов случайных чисел из старых библиотек Hbcs имеют непонятные или неизвестные характеристики, и, что более важно, они медленно работают. По умолчанию РНР использует случайный генератор из библиотеки libc в функции rand(). Функция mt_rand() является заменой. Она использует известный алгоритм Мерсена Твистера (Mersenne Twister), придумавшего его для криптографических задач, и в среднем эта функция в 4 раза быстрее, нежели аналог из библиотеки libc. Для более подробной информации смотрите домашнюю страничку автора (http://www.math.keio.ac. jp/~matumoto/emt.html), а исходный оптимизированный код алгоритма МТ доступен по адресу: http://www.scp.syr.edu/~marc/hawk/twister. html.

См. также: mt_srand(), mt_getrandmax(), srand(), rand() и getrandmax().

lcg_value

Генерация случайного дробного числа

double Icg_value(void);

Возвращает псевдослучайное дробное число в диапазоне от 0 до 1.

Тригонометрия

sin

Получение синуса аргумента

float sin (float arg)

Возвращает значение синуса аргумента агд, вычисленное в радианах.

См. также: cos() и tan().

cos

Получение косинуса аргумента

float cos (float arg)

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

См. также: sin() и tan().

tan

Получение тангенса аргумента float tan (float arg)

Возвращает значение тангенса аргумента arg, вычисленное в радианах.

См. также: sin() и cos().

asin

Получение арксинуса аргумента float asin (float arg)

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

См. также: acos() и atan().

acos

Получение арккосинуса аргумента

float acos (float arg)

Возвращает значение арккосинуса аргумента аrg, вычисленное в радианах.

См. также: asin() и atan().

atan

Получение арктангенса аргумента float atan (float arg)

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

См. также: asin() и acos().

atan2

Получение арктангенса двух чисел float atan2 (float у, float x)

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

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

См. также: acos() и atan().

Конвертация чисел

base_convert

Конвертация числа из одной системы счисления в другую

string base_convert (string number, int frombase, int tobase)

Возвращает строку, содержащую представление числа number, переведенного из системы счисления frombase, в систему tobase. Для аргументов frombase и tobase допускаются значения от 2 до 36 включительно. Цифры в числах с основанием большим, чем 10, представляются буквами от «а» до «z»; «а» означает 10, «b» — ll и т. д. до «z», означающей 35.

 Sbinary - base_convert (Shexadecimal. 16. 2).

decbin

Конвертация десятичного числа в двоичное

string decbin (int number)

Возвращает строку, содержащую двоичное представление целого числа, указанного аргументом number. Наибольшее значение, которое число number может иметь, это 2 147 483 647 в десятичном представ лснии (в двоичном - это строка из 31-й единицы).

См. также bindec().

dechex

Конвертация десятичного числа в шестнадцатеричное , string dechex (int number)

Возвращает строку, содержащую шестнадцатеричное представление F целого числа, указанного аргументом number. Наибольшее значение которое число number может иметь, это 2 147 483 647 в десятичном представлении (в шестнадцатеричном - это строка 7fffffff)

См. также hexdec().

decoct

Конвертация десятичного числа в восьмеричное string decoct (int number)

Возвращает строку, содержащую восьмеричное представление ц лого числа, указанного аргументом number. Наибольшее значение которое число number может иметь, это 2 147 483 647 в десятичном представлении (в восьмеричном - это строка 17777777777).

См. также octdec().

bindec

Конвертация двоичного числа в десятичное int bindec (string_ binary_string)

Возвращает десятичный целочисленный эквивалент двоичного числа, представленного строковым аргументом binary_string. Максимальное число, которое может быть конвертировано, это строка из 31-и единицы, равная в десятичном представлении 2 147 483 647.

См. также decbin().

hexdec

Конвертация шестнадцатеричного числа в десятичное int hexdec (string hex_string)

Возвращает десятичное целочисленное значение шестнадцатеричного числа, представленного строкой hex string. Максимальное значение аргумента - «7fffffff», или 2 147 483 647 в десятичном *™

См. также dechex().

octdec

Конвертация восьмеричного числа в десятичное int octdec (string octal_string)

Возвращает десятичное целочисленное значение восьмеричного числа, представленного строкой octal_string. Максимальное значение аргумента — «17777777777», или 2 147483647 в десятичном исчислении.

См. также decoct().

deg2rad

Преобразование градусов в радианы

double deg2rad (double number)

Возвращает значение number, указанное в градусах, преобразованным в радианы.

См. также rad2deg().

rad2deg

Преобразование радианов в градусы

double rad2deg (double number)

Возвращает значение number, указанное в радианах, преобразованным в градусы.

См. также deg2rad().

number_ format

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

string number_format
(float number, int decimals, string dec_point, string thousands_sep)

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

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

 echo number_format( 96739590. 345):
 // выведет 96.733.590.

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

 echo riumber_format( 96739590. 3945.1);
// выведет 9b. 739. 590. 4 echo number
  format (96739590 3.4); // выведет 96. /29.590.3000

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

echo number_format (96739590.3.3.":". ..... );
// выведет 96 739'590:300

Математические функции повышенной точности BCMath

При компиляции с параметром --enable-bcmath эти функции доступны в РНР. В последних версиях РНР этот модуль встроен в РНР.

По причинам изменения лицензии сама библиотека ВСМАТН распространяется отдельно от стандартного пакета РНР. Загрузить архив библиотеки можно с адреса url: http://www.php.net/extra/number4. tar.gz. Прочтите файл README . ВСМАТН в дистрибутиве РНР для получения более подробной информации.

bcscale

Установка точности вычислений по умолчанию

string bcscale (int scale)

Устанавливает точность, которая будет использоваться по умолчанию функциями be math.

bcadd

Сложение

string bcadd (string left operand, string right operand [, int scale])

Возвращает строковое значение суммы (right_operand + left_operand) с точностью (числом десятичных знаков после запятой в результате), указанной в аргументе scale.

См. также bcsub().

bcsub

Вычитание

string bcsub (string left_operand, string right_operand [, int scale])

Возвращает строковое значение разности (right_operand_left_operand) с точностью (числом десятичных знаков после запятой в результате), указанной в apгументе scale.

См. также bcadd().

bcromul

Умножение

string bcmul (string left operand, string right operand [, int scale])

Возвращает строковое значение произведения (right_operand * left_ operand) с точностью (числом десятичных знаков после запятой в результате), указанной в аргументе scale.

См. также bcdiv().

bcdiv

Деление

string bcdiv (string left operand, string right operand [, int scale])

Возвращает строковое значение результата деления left_operand на right_operand с точностью (числом десятичных знаков после запятой в результате), указанной в аргументе scale.

См. также bcmul ().

bcmod

Получение остатка целочисленного деления

string bcmod (string left_operand, string modulus)

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

См. также bcdiv().

bccomp

Сравнение

int bccomp (string left_operand, string right_operand [, int scale])

Сравнивает два числа (right_operand и left_operand) с точностью (числом десятичных цифр после запятой, используемых при сравнении), заданной необязательным аргументом scale.

Возвращается целочисленный результат: 0, если два аргумента равны; + 1, если аргумент left_operand больше, чем аргумент right_operand; и -1, если left_operand меньше, чем right_operand.

bcsqrt

Извлечение квадратного корня

string bcsqrt (string operand, int scale)

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

См. также bcpow()

bcpow

Возведение числа в степень

string bcpow (string x, string у [, int scale])

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

См. также bcsqrt().

Математические функции GMP

Эти функции позволяют работать с целыми числами повышенной точности определенного формата, используя библиотеку GNU MP. Для использования их в РЫР необходимо перекомпилировать его с ключом — with-gmp.

Коды библиотеки и документацию можно загрузить с сайта http:// www.swox.com/gmp/. Требуется версия 2 или выше.

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

 <'php
function fact ($x) { //
функция вычисления факториала
if ($x <= 1) // (достаточно быстро вычисляет
return 1; // факториалы до 1000) else
return gmpjnul ($x. Tact ($x-D); }
print gmp_strval (fact (1000)) "\n": ?>

Значения чисел GMP

gmpjnit

Создание числа GMP

resource gmp_init (mixed number)

Число GMP создается из целочисленного или строкового аргумента. В строке число может быть указано в десятичном или шестнадцате-ричном (тогда оно должно иметь префикс Ох) формате.

 $а - gmp init (123456);
$b - grapjrvtt ("OxFFFFDEBACDFEDF7200");

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

gmp_intval

Конвертация числа GMP в целое

int gmp_intval(resource gmpnumber)

Возвращает целое число, если оно не превышает его максимально возможную размерность (тип знакового длинного (32 бита) — signed long type). Если необходимо всего лишь распечатать значение, используйте gmp_strval().

gmp_strval

Конвертация числа GMP в строку

string gmp_strval (resource gmpnumber [, int base])

Возвращает строковое представление числа GMP в системе счисления base (по умолчанию, в десятичной). Возможные системы счисления — от 2 до 36.

gmp_ abs

Получение абсолютного значения числа

resource gmp_abs (resource a)

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

gmp_sign

Получение знака числа

int gmp_sign (resource a)

Возвращает 1, если число положительное, или -1, если число отрицательное.

gmp_neg

Получение отрицательного значения числа

resource gmp_neg (resource a) Возвращает (-а).

Арифметика

gmp_add

Сложение

resource gmp_add (resource a, resource b)

Возвращает GMP число - сумму аргументов а и b.

gmp_sub

Вычитание

resource gmp_sub (resource a, resource b)

Возвращает GMP число - разность (a-b).

gmp_mul

Умножение

resource gmp_mul (resource a. resource b)

Возвращает GMP число - произведение аргументов а и b.

gmp_div

Синоним функции gmp_div_q

resource gmp_div (resource a, resource b [, int round])

gmp _div_q

Деление

resource gmp_div_q (resource a, resource b)

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

  • GMP_ROUND_ZERO - цифры после точки отбрасываются;
  • GMP_ROUND_PLUSINF - результат округляется в большую сторону;
  • GMP_ROUND_MINUSINF - результат округляется в меньшую сторону.

Имеется синоним функции - gmp_div().

См. также: gmp_div_r(), gmp_div_qr().

gmp_div_r

Получение остатка целочисленного деления

resource gn,p_div_r (resource n, resource d [. int round])

Функция сходна с gmp_div_q(). Остаток будет иметь знак аргумента n.

См. также: gmp_div_q(), gmp_div_qr().

gmp_div_qr

Деление с остатком

array gmp_div_qr (resource n, resource d [, int round])

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

 $а = gmpjimt ("Ox41682I79fbf5").
$res = gmp_chv_qr ($a. "OxDEFE75");
pnntf( "Результат: частное» *s.
 остаток= %s".
gmp_strval ($res[0]). gmp_strval ($res[l])):

См. также: gmp_div_q(), gmp_div_r().

gmp_mod

Получение абсолютного остатка деления

resource gmpjnod (resource n, resource d)

Функция эквивалентна gmp_div_r(), знак результата которой отбрасывается.

gmp_ divexact

Безостаточное деление

resource gmp_divexact (resource n, resource d)

Так как функция использует алгоритм «точного» деления, результат будет достоверным, только если заранее известно, что d нацело делит n.

gmp_cmp

Сравнение

int gmp_cmp (resource a, resource b)

Возвращает положительное значение, если а > b; ноль, если а = b; и отрицательное значение, если а < b.

Математика

gmp_fact

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

resource gmp_fact (int a)

gmp_sqrt

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

resource gmp_sqrt (resource a)

gmp_sqrtrm

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

array gmp_sqrtrm (resource a)

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

gmp_perfect_square

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

bool gmp_perfect_squar~e (resource a)

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

См. также: gmp_sqrt(), gmp_sqrtrm().

gmp_pow

Возведение числа в степень

resource gmp_pow (resource base, int exp)

Возвращает результат возведения основания base в степень exp. Для аргументов (0,0) возвращается 1. ехр не должен быть отрицательным.

gmp_powm

Получение остатка деления степени числа

resource gmp_powm (resource base, resource exp, resource mod)

Возвращает результат: остаток от деления (основание base, возведенное в степень ехр) на mod. При отрицательном ехр результат не определен.

gmp_prob_prime

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

int gmp_prob_pnme (resource a [, Int reps])

Функция возвращает 0, если а сложное число (имеющее более двух целых делителей). Если возвращается 1, то а, возможно, простое число. Если возвращается 2, то тогда а, без сомнения, простое число. Возможные значения аргумента reps: от 5 до 10 (по умолчанию 10) определяют качество проверки (чем больше это число, тем выше достоверность результата, то есть непринятия сложного числа за вероятно-простое).

Функция использует алгоритм вероятностного теста Мпллера-Рабина (Miller-Rabin).

gmp_ gcd

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

resource gmp_gcd (resource a, resource b) Возвращает всегда положительный результат.

gmp_ gcdext

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

array gmp_gcdext (resource a, resource b)

Возвращает в массиве значения g, s, t, такие, что a*s + b*t = g = НОД(а.b), где НОД — наибольший общий делитель.

gmp_invert

Инверсия по модулю

resource gmp_invert (resource a, resource b)

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

gmp_ legendre

Получение числа Лежандра

int gmpjegendre (resource a, resource p)

Возвращает число Лежандра (Legendre symbol), р должно быть четным положительным.

gmp_jacobi

Получение числа Якоби

int gmpjacobi (resource a, resource p)

Возвращает число Якоби (Jacob! symbol), p должно быть четным положительным.

gmp_random

Генерация случайного числа

resource grap_random (int limiter)

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

gmp_popcount

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

int gmp_popcount (resource a)

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

gmp_ hamdist

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

int gmp_hamdist (resource a, resource b)

Возвращает дистанцию (hamming) между а и b. Оба аргумента должны быть неотрицательными.

Бинарные операции

gmp_ and

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

resource gmp_and (resource a, resource b)

gmp_or

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

resource gmp_or (resource a, resource Из)

gmp_xor

Логическое исключающее ИЛИ (XOR) resource gmp_xor (resource a. resource b)

gmp_setbit

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

resource gmp_setbit (resource &a, int index [, bool set_clear])

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

gmp_ clrbit

Сброс бита

resource gmp_c!rbit (resource &a, int index) Устанавливает бит в позиции index в числе а в значение 0.

gmp_scan0

Поиск бита 0

Oint grap_scanO (resource a, int start)

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

gmp_scan1

Поиск бита 1

lint gmp_scanl (resource a, int start)

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

Дата и время

time

Получение времени в секундах (UNIX timestamp)

int time(void);

Возвращаемое значение равняется числу секунд, прошедших с момента начала «Эпохи Unix» (1 января, 1970, 00:00:00 GMT). Этот формат называется «UNIX timestamp».

 echo time(); // выводит, например: 987972956
См. также date().

microtime

Получение в строке текущей метки времени «UNIX timestamp»

string microtime(void);

Возвращает строку формата «msec sec», где sec — текущее время, измеренное в целых секундах с момента начала «Эпохи Unix » (0:00:00, 1 января, 1970 GMT), a msec — это микросекундная часть. Эта функция доступна только на системах, имеющих системную функцию gettimeofday().

 echo microtime(); // выводит, например
0.85738800 98772251
См. также time().

getdate

Получение даты и времени в массиве array getdate (Int timestamp)

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

  • «seconds» — секунды;
  • «minutes» - минуты;
  • «hours» - часы;
  • «mday» — день месяца;
  • «wday» — день недели, числовой;
  • «топ» — месяц, числовой;
  • «year» — год, числовой;
  • «yday» — день в году, числовой; например: 327;
  • «weekday» — день недели, текстовый, полный; например: «Friday»;
  • «month» — месяц, текстовый, полный; например: «January»;
  • 0 — «UNIX timestamp», полученный аргумент.

 print_r (getdate (time())),

Выводит следующее:

 Array (
[seconds] => 50
[minutes] => 55
[hours] => 13
[mday] => 16
[wday] => 0
[mon] => 4 >
[year] => 2008
[yday] => 299
[weekday] => Sunday
[month] => Apn 1
[0] => 987414950 )

localtime

Получение времени/даты в массиве

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

Первый аргумент функции timestamp — метка времени UNIX, если он не указывается, то используется текущее время. Если второй аргумент (is_associative) равен 0 (это же значение используется по умолчанию), то возвращаемый массив будет численно индексирован; в противном случае возвращается ассоциативный массив, где элементы имеют следующее значение:

([1]). «tm_sec» — секунды;

([2]). «tmjrnn» — минуты;

([3]). «tm_hour» — часы;

([4]). «tmjnday» — день месяца;

([5]). «tmjnon» — месяц в году;

([6]). «tm_year» — год (не совместимый с 2000);

([7]). «tm_wday» — день недели;

([8]). «tm_yday» — день в году;

([9]). «tm_isdst» — активен ли переход на летнее время.

gettimeofday

Получение даты системным вызовом array gettimeofday (void)

Возвращает ассоциативный массив, содержащий дату, возвращенную системным вызовом. Функция является интерфейсом системной функции gettimeofday(2). Массив содержит следующие элементы:

  • «sec» — секунды:
  • «usec» — микросекунды;
  • «minuteswest» — смещение к западу от Гринвича, в минутах;
  • «dsttime» — тин dst коррекции (переход на летнее время).

checkdate

Проверка даты на соответствие григорианскому календарю

int checkdate (int month, int day, int year)

Возвращает TRUE, если дата, указанная как «month, day, year» («месяц», «число», «год»), допустима, иначе возвращает FALSE. При проверке принимаются в расчет:

  • Год (year) находится в пределах от 1 до 32 767 включительно.
  • Месяц (month) находится в пределах от 1 до 12 включительно.
  • День Б месяце (day) находится в пределах, допустимых для соответствующего месяца month (от 1 до 28-31). Високосные года при этом также принимаются в расчет.

date

Получение даты в форматированной строке

string date (string format [, int timestamp])

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

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

  • s — секунды, от «00» до «59»;
  • i — минуты, от «00» до «59»;
  • g — часы, 12-часовой формат без нулей, от «1» до «12»;
  • 6 — часы, 24-часовой формат без нулей, от «О» до «23»;
  • h — часы, 12-часовой формат, от «01» до «12»;
  • Н — часы, 24-часовой формат, от «00» до «23»;
  • а — «до» или «после» полудня: «am» или «рт»;
  • А — «До» или «После» полудня: «AM» или «РМ»;
  • d — день месяца (2 цифры с нулями), от «01» до «31»;
  • j — день месяца (1-2 цифры без пулей), от «1» до «31»;
  • S — англоязычный суффикс числа из двух букв, например: «th», «nd»;
  • l (маленькая 'L') — название дня недели по-английски; например: «Friday»;
  • D — трехбуквенное английское сокращение дня недели; например: «Fri»;
  • w — порядковое число дня в неделе, от «О» (воскресенье) до «6» (суббота);
  • z — порядковое число дня в году, от «О» до «365»;
  • т — месяц (2 цифры с нулями), от «01» до «12»;
  • п — месяц (1-2 цифры без нулей), от «1» до «12»;
  • F — английское название месяца, например: «January»;
  • М — трехбуквенное английское сокращение месяца, например: «Jan»;
  • t — число дней в указанном месяце, от «28» до «31»;
  • Y — год, 4 цифры; например: «1999»;
  • у — год, 2 цифры; например: «99»;
  • I (большая i) — «1», если действует переход на «летнее время», иначе «О»;
  • L — «О», если год не високосный, или «1», в противном случае;
  • В — «Swatch Internet time»;
  • Т — временная зона компьютера, например: «MDT» (доступна не всегда);
  • U — целое число секунд, прошедших с момента начала эпохи UNIX (доступна не всегда);
  • Z — смешение временной зоны в секундах (от «-43200» до «43200»).

Все остальные символы в строковом аргументе format возвращаются в результирующей строке «как есть». Формат «Z» всегда возвращает «О» при использовании с функцией gmdate().

 print (date ("1 dS of F Y h.i.s A"));
 //выводит: Monday 21th
of April 2007 01:33:43 PM
Дата и время 141
print ("1-е Июля. 2000 года - это: " .
date ("I". mktime(0.0.0,7.1.2000))).
//выводит: 1-е Июля.
  2222 года - это- Saturday
Stomorrow = mktime (O.O.O.dateC'm")
.date("d")+l.date("Y")).
 Slastmonth = mktime
 (0.0.0.date("m")-l.date("d").
dateC'Y")); Snextyear = mktime
(O.O.O.dateC'm"), dateC'd").
date("Y")+l):

Для форматирования дат в других языках используйте функции setlocale() и strftime().

См. также: gmdate() и mktime().

gmdate

Аналог функции date() для времени 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 ("К 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)).

См. также: date(), mktime() и gmmktime().

strftime

Получение форматированной строки времени с использованием локальных установок

string strftime (string format [, int timestamp])

Возвращает строку согласно формату, указанному в аргументе format, для указанной в аргументе timestamp метки времени (если метка времени не указывается, то используется текущее время). Язык, на котором выводятся названия месяцев и дней, устанавливается функцией set!оса!е(). В строке формата распознаются следующие спецификаторы:

  • %а — сокращение дня недели в языке по умолчанию; например, «Wed»;
  • %А — полное название дня недели в языке по умолчанию; например, «Wednesday»;
  • %b - сокращение названия месяца в языке по умолчанию; например, «Apr»;
  • %В — полное название месяца в языке по умолчанию; например, «April»;
  • %с — формат латы времени в установках по умолчанию; например, «04/18/00 13:44:17»;
  • £С — номер века (год, деленный на 100 и без дробной части, от 00 до 99);
  • %d — число месяца (от 00 до 31);
  • %0 — эквивалент #m/£d/£y;
  • %е — число месяца (вместо незначащего нуля ставится пробел), от « 1» до «31»;
  • %h — аналог Яb;
  • %H— час в 24-часовом счислении (от 00 до 23);
  • %I — час в 12-часовом счислении (от 01 до 12);
  • %j — номер дня в году (от 001 до 366);
  • %т — номер месяца (от 01 до 12);
  • М - минуты;
  • %n — символ перехода на новую строку;
  • %р — «am» или «рт» (до или после полудня), в зависимости от времени;
  • %г — время в 12-часовом формате (a.m. или p.m.);
  • %R — время в 24-часовом формате;
  • %S — секунды;
  • %t — символ табуляции;
  • %Т — текущее время, эквивалентно #H:#M:#S;
  • %и — число дня в неделе (от 1 до 7), где понедельник - 1;
  • %11 — номер недели в году (первое воскресенье года считается первым днем первой недели);
  • %V — номер недели в году по стандарту ISO 8601:1988 (от 01 до 53), где первая неделя — та, в которой насчитывается более 3 дней в текущем году;
  • %U — номер недели в году, начиная с первого понедельника, как первого дня первой недели;
  • %w — номер дня в неделе (от 0 до 6). Воскресенье считается нулем;
  • %х — представление даты в системном формате без указания времени; например, «04/19/01»;
  • %Х — представление времени в системном формате без указания даты; например, «14:06:26»;
  • %у — год без цифр века (от 00 до 99);
  • %Y — полное число года;
  • %Z — зона времени, имя или сокращение, например «Московское время (лето)»;
  • %% — символ «%».

setlocale ("LCJIME". "С"): print (strftime ("%/\ in Finnish is ")). setlocale ("LCJIME". "fi_FI"): print (strftime ("3LA. in French ")): setlocale ("LCJIME". "fr_CA"); print (strftime ("$A и in German ")); setlocale ("LCJ-IME". "de_DE"). print (strftime ("ЛАЛп")):

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

См. также: setlocale(), mktime() и «Open Group specification of strftime()» (http://www.opengroup.org/onlinepubs/7908799/xsh/strftime.htmL).

gmstrftime

Форматирование локальных времени/даты

string gmstrftime (string format, int timestamp)

Действие функции подобно strftimeO с тем отличием, что возвращается время по Гринвичу (GMT). Например, при запуске в зоне (GMT -0500) первая строка будет следующей: «Dec 31 1998 20:00:00», а вторая: «Jan 01 1999 01:00:00».

 setlocale ('LCJIME'. 'en_US').
echo strftime ("%b Ы *Y *H:ZM:ZS".
 mktime (20.0.0.12 31.98)),"\n'
   . echo gmstrftime ("*b *d *Y XOM-XS". mktime
 (20.C.0.12 31.98))."\n";

См. также strftime().

mktime

Преобразование времени в целочисленный формат

int mktime (int hour, int minute, int second, int month, int day, int year [, int is_dst])

Аргументы функции должны быть указаны в порядке: «час, минута, секунда, месяц, день, год, коррекция_времени>>, что часто путают. Не указывать можно только последний аргумент is_dst (при неуказании большего числа аргументов справа вместо них будут подставляться значения текущего времени). Функция возвращает метку времени «Unix timestamp», соответствующую указанным дате и времени (это целое число секунд, прошедших с 1 января 1970 года).

Аргумент is_dst, указывает, осуществлен ли переход на летнее время (1) или нет (0); если это неизвестно, то аргумент — (-1).

Функция полезна при вычислении дат и их проверке, так как она автоматически корректирует время при неправильном указании временных границ. Например, все следующие строки напечатают: «Jan-01-1998».

 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)):
echo date ("M-d-Y". mktime (0.0.0.1.1.98)):

Год может быть указан двумя (0-69 означают 2000-2069 и 70-99 означают 1970-1999) или четырьмя цифрами.

Последний день месяца может быть указан как нулевой следующего (но не как -1). Следующие строки выведут: «Последнее число Февраля 2000: 29».

 Slastday • mktime (0.0.0.3.0.2000).
echo strftime ("Последнее число Февраля
 2000: И". Slastday).
Slastday - mktime (0 0.0.4.-31.2000):
echo strftime ("Последнее число Февраля
2000: Id", Slastday):

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

См. также: date ()и tirae().

gmmktime

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

int gmmktime (int hour, int minute, int second, int month, int day, int year [, int is_dst])

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

См. также gmdate().

strtotime

Лексическое преобразование строки времени в «UNIX timestamp» int strtotime (string time [, int now])

Функция ожидает получить дату time в англоязычном формате, чтобы преобразовать ее в целочисленный формат «UNIX timestamp».

 echo strtotime ("now") . "\n";
echo strtotime ("10 September 2000") "\n";
echo strtotime ("+1 day") . "\n"
echo strtotime ("+1 week") . "\n";
echo strtotime ("+1 week 2 days 4 hours 2 seconds") .
"\n":

Строковые функции

Вывод

print

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

print (string arg)

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

См. также: echo(), printf() и flush().

echo

Вывод одного или нескольких значений

echo (string argl, string [argn]...)

Выводит значения перечисленных параметров.

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

 echo "Hello World":
echo "Перенос на следущую строку.
имеющийся в коде, сохраняется
и используется при выводе".
" чтобы избежать этого используйте ".
"оператор конкатенации":
echo "This spans\nmultiple lines.
The newlines will be\noutput   as well.":
См. также: print(), printf() и flush().

printf

Вывод отформатированной строки

int printf (string format [, mixed args...])

Выводит строку согласно формату, указанному в строковом аргументе format, который рассмотрен в описании функции sprintf().

См. также: print(), sprintf(), sscanf(), fscanf() и flush().

sprintf

Форматирование строки с подстановкой переменных

string sprintf (string format [, mixed args...])

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

Строка форматирования может состоять из неопределенно длинной последовательности символов и директив: ординарных символов (это любые символы, за исключением «%»), которые просто копируются в возвращаемую строку, и «спецификаций отображения», для каждой из которых в функции должен быть указан соответствующий параметрт касается как функции sprintf(), так и printf().

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

  1. Необязательный спецификатор заполнителя, определяющий, каким символом будут дополняться строки до необходимой длины. Это может быть пробел или нулевой символ. По умолчанию используется пробел. Альтернативные символы-заполнители могут быть >к.') юны, если перед ними ставится знак одинарной кавычки ('). Например, printf CTz5d",12); // выведет: zzz!2.
  2. Необязательный спецификатор выравнивания. Если он не указывается, ч о значение будет выравниваться по правой стороне, если он указан (как символ «а»), то по левой (действует не всегда).
  3. Необязательный спецификатор ширины значения указывает минимальное число символов, которое должно выводиться в значении
  4. Необязательный спецификатор точности определяет, сколько цифр после запятой должно выводиться для дробных чисел (для чисел других типов не действует). (Для форматирования чисел также полезна функция number_format().)
  5. Спецификатор типа — сообщает, в качестве какого типа должен рассматриваться аргумент. Возможные типы:
  • X — сам знак процента;
  • b — целочисленный аргумент в двоичном формате;
  • с — выводит символ, целочисленный ASCII-код которого указан;
  • d — целочисленный аргумент в десятичном формате;
  • f — дробное число в формате числа с плавающей точкой;
  • о — целочисленный аргумент в восьмеричном формате;
  • s — аргумент выводится как строка;
  • х — целочисленный аргумент в шестнадцатеричном формате (с маленькими буквами);
  • X — целочисленный аргумент в шестнадцатеричном формате (с большими буквами).

См. также: printf(), sscanf(), fscanf() и number_format().

Sisodate = spnntf ("M4d-M2d-M2d". Syear. $month. $day);

$formatted = sprintf (%01.4f. 68 75 + 54.35);

sscanf

Интерпретация строки согласно формату и занесение значений в переменные

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

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

 // получение серийного номера
Ssenal = sscanf
("SN/235-0001".nSN/*3d-«4d"):
echo Sseria1[0]*lGOOO+$senal[l];
// выводит: 2350001
// и даты изготовления
Smandate = "January 01 2000":
list($month. $day. Syear) =
sscanf(Smandate."%s Id %d"):
echo "Дата: Syear-"
substr($month.0.3)."-$day\n".
// выводит: 2000-Jan-Ol

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

 // генерировать XML запись из строки
Sauth = "765\tLewis Carroll":
$n = sscanf (Sauth. "*d\«s Zs"
. &$id. &$first. &$last);
echo "<author id='$id'>
<f i rstname>$fi rst</firstname>
<surnarne>$last</surname>
 </author>\n";

См. также: fscanf(), printf() и sprintf().

bin2hex

Преобразование символьных данных в шестнадцатеричный вид

string bin2bex (string str)

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

 echo Din2hex("AaBblM"): // выводит. 4161426286а6

chr

Получение символа с указанным кодом ascii

string chr (int ascii)

$str = cnr (27). /* добавляет esc-символ в конец строки $str */ $str = sprintf ("Строка завершается esc-символои. 3tc". 27); Функция дополняет ord().

См. также sprintf ()с форматом %с.

ord

Получение ascii кода символа

int ord (string string)

Возвращает ASCII код первого символа строки string. Эта функция дополняет chr ().

 if (ord ($str) == 10) { // символ «\n»
echo "Первый символ строки \$str
 - переход на новую строку.\n":
    }

См. также chr ().

substr

Получение части строки

string substr (string string, int start [, int length]) Возвращает часть строки string от позиции start длиной length.

Если аргумент start положительный, то возвращается часть строки string начиная с позиции start, с отсчетом от нуля.

 Irest = substr ("abcdef". 1): // возвращает "bcdef"
Srest = substr ("abcdef". 1.3); // возвращает "bed"

Если аргумент start отрицательный, то отсчет производится от конца строки string (тогда -1 — это последний символ).

 Srest - substr ("abcdef". -1). // возвращает "f"
$rest = substr ("abcdef". -2); // возвращает "ef"
Jrest = substr ("abcdef". -3. 1); // возвращает "d"

Если указывается необязательный аргумент length и он положительный, то это определяет длину возвращаемой строки. Если он отрицательный, то тогда он указывает на позицию последнего возвращаемого символа от конца исходной строки (и тогда -1 — это предпоследний символ).

 $rest = substr ("abcdef". 1. -1). // возвращает "bcde"
См. также: strrchr(), substr_count() и ereg().

str_repeat

Получение строки из повторяющегося значения

string str_repeat (string input, int multiplier) .

 echo str_repeat ("-=". 3). // выведет "-=-=-=".

str_pad

Дополнение строки другой строкой до определенной длины

string str_pad (string input, int padjength [, string pad_string [, int pad_type]])

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

Необязательный аргумент pad_string указывает, какую строку использовать в качестве заполнителя; по умолчанию используются пробелы. Необязательным аргументом pad_type могут быть значения: STR_ PADJtIGHT (по умолчанию), STR_PAD_LEFT или STR_PAD_BOTH, указывающие соответственно, что строку следует дополнять справа, слева или с обеих сторон.

 Sinput = "Aaaaa";
print str_pad(Sinput. 10);
// возвращает "Aaaaa
print str_pad($input. 10. "-="
. STR_PAD_LEFT).
// возвращает "---=-Ааааа"
print str_pad($input. 10
. "_". STR_PAD_BOTH).
// возвращает "_Ааааа___"

chunk_split

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

string chunk_split (string string [, int chunklen [, string end]])

Возвращает строку, в которой между каждым блоком строки string длиной chunklen (по умолчанию 76) вставляется последовательность разделителей end (по умолчанию: «\г\п»). Это может быть полезно при конвертировании в формат «base64» для соответствия правилам RFC 2045.

 # форматировать Sdata. используя семантику
RFC 2045 $new_stnng = chunk_split
 (base64_encode($data)):

Эта функция работает значительно быстрее, чем ereg_replace().

См. также wordwrap().

strtok

Получение строки по частям

string strtok (string argl, string arg2)

При первом вызове функция принимает два аргумента: исходную строку argl и разделитель агд2. При каждом последующем вызове аргумент argl указывать не следует, иначе будет возвращаться первая часть строки. При каждом вызове (включая первый) возвращается часть строки до разделителя агд2, при каждом последующем -следующая часть до следующего разделителя, и так до конца строки. Когда возвращать больше нечего, возвращается значение FALSE. Заметьте, если часть строки состоит из 0 (или это пустая строка), то это будет воспринято как значение FALSE.

 $stnng = "This is an example№string№ Aaa".
 $tok = strtok ($stnng."
"); while ($tok) { echo "'$tok' ":
$tok = strtok (" №"): }
// выводит 'This' 'is' 'an' 'example' 'string'

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

См. также: split() и explode().

explode

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

array explode (string separator, string string [, int limit])

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

 $АА - "часть! часть? часть.З часть4";
$аа = explode (" ". $АА).
// теперь аа = Arrays [0] => часть!. [1] ~> часть2.
// Ш -> частьЗ. [31 -> ", [4j => часть4 )

См. также: split() и implode().

implode

Объединение элементов массива в строку

string implode (string glue, array pieces)

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

 $colon_separated= implode (" ". lady);

См. также: explode(), join() и split().

join

Синоним функции implode()

string join (string glue, array pieces)

См. также: explode(), implode() и split().

setlocale

Установка региональных настроек

string setlocale (string category, string locale)

Устанавливает указанную аргументом category региональную установку для строковых преобразований, которая может принадлежать к одной из следующих категорий:

  • LC ALL — для всех установок (например: "Russian _Russia.l251");
  • LC_COLLATE — сравнение строк (пока не реализовано в РНР);
  • LC_CTYPE — классификация и преобразование символов, например strtoupper();
  • LC_MONETARY — для функции localeconv() (пока не реализовано в РНР):
  • LC_ NUMERIC — десятичный разделитель чисел;
  • LC_TIME — форматирование даты и времени функцией strftime().

В аргументе locale указывается то значение настройки, которое необходимо установить. При передаче пустой строки «» региональные установки будут установлены в соответствии с имеющимися в системе по умолчанию. Если передается ноль (строковый или числовой), региональные настройки не изменяются, а возвращается текущее значение установки.

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

Вычисления строковых сумм и хешей

strlen

Вычисление длины строки

int strlen (string str)

count_chars

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

mixed count_chars (string string [. mode])

Вычисляет частоту встречаемости каждого байта (0-255) в строке string и возвращает в массиве результат согласно аргументу mode:

  • 0 — массив с байтами в качестве индексов и частотой в качестве значений элементов массива (по умолчанию, если аргумент mode не указан);
  • 1 — то же, что и 0, но отсутствующие в строке string байты не возвращаются;
  • 2 — то же, что и 0, но возвращаются только тс байты, которые отсутствуют;
  • 3 - возвращается строка, состоящая из всех обнаруженных символов;
  • 4 - возвращается строка, состоящая из всех отсутствующих символов.

сгс32

Получение полиминала строки сгс32 int crc32 (string str)

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

См. также md5().

md5

Вычисление строки-хеша MD5 string md5 (string str)

Возвращает вычисленный строковый MD5-xem строки str, используя «RSA Data Security, Inc. MD5 Message-Digest Algorithm», описанный в файле RFC1321 (http://www.faqs.org/rfcs/rfcl321.html). Часто используется для генерации уникальных идентификаторов. Возвращается 32-значнос число, состоящее из шсстнадцатеричных цифр.

См. также сгс32().

crypt

Симметричное шифрование

string crypt (string str [, string salt])

Функция является реализацией имеющегося в Unix алгоритма шифрования DES1. Аргумент str — это шифруемая строка, a salt — начальное (двухбайтовое)2 основание шифра (если оно не указано, то оно случайным образом генерируется). Функция рассмотрена в справочной системе Unix (man). Некоторые системы заменяют стандартный метод шифрования DES методом MD5.

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

  • CRYPT_STD_DES — стандартное 2-байтовое DES-шифрование (SALT-2);
  • CRYPT_EXT_DES — расширенное 9-байтовое DES-шифрование (SALT=9);
  • CRYPT_MD5 — 12-байтовое МО5-шифрование (SALT начинается с$1$);
  • CRYPT_BLOWFISH — расширенное 12-байтовое DES-шифрование (SALT начинается с $2$).

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

См. также md5().

metaphone

Вычисление метафон-хеша string metaphone (string str)

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

Алгоритм функции разработан Лоуренсом Филипсом (Lawrence Philips, lphilips@verity.com) и описан в книге: «Practical Algorithms for Programmers», Binstock & Rex, Addison Wesley, 1995.

soundex

Вычисление хеша сходности произношения

string soundex (string str)

Функция может быть использована для проверки правописания, когда приблизительно известно как звучит слово, но не известно, как оно пишется, и имеется словарь (база данных), относительно которого возможно осуществлять проверку. Возвращается строка из 4 символов: первая буква слова и 3 цифры.

Алгоритм функции описан Дональдом Кнауфом (Donald Knuth) в книге «The Art of Computer Programming, vol. 3: Sorting and Searching», Addison-Wesley (1973).

 sOundex ("Euler") == sOundex ("tilery") == 'E460';
sOundex ("Gauss") == sOundex ("GhOsh") =•* 'G200';
sOundex ("Hilbert") " sOundex ("HenlbrOnn') "-
 'H416'. soundex ("Knuth") — sOundex ("Kant") =- 'K530':
sOundex ("Lloyd") == sOundex ("Ladd") -= 'L300'; sOundex
("Lukasiewicz") == sOundex ("Lissajcus") -= '1222'  :

Сравнение

strcmp

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

int strcmp (string strl. string str2)

Возвращает < 0, если strl «меньше» str2; > 0 если strl «больше» str2, и (), если они равны. Регистр в строках учитывается.

См. также: ereg(), strcasecmp(), substr(), stristr(), strncasecmp(), strncmp() и strstr().

strncmp

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

Int strncmp (string strl, string str2, int Ten)

Функция отличается от strcmp() тем, что строки strl и str2 сравниваются не целиком, а только их первые len байтов. Если len меньше, чем длина меньшей из строк, они сравниваются целиком. Возвраща-ет <0, если strl «меньше» str2; >0 если strl «больше» str2, и 0, если они равны. Регистр в строках учитывается.

См. также: ereg(), strncasecmp(), strcasecmp(), substr(), stristr(), strcmp() и strstr().

strcasecmp

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

int strcasecmp (string strl, string str2)

Возвращает < 0, если strl «меньше» str2; > 0 если strl «больше» str2, и (), если они равны. Регистр символов строк не учитывается.

 $varl = "HellO"; $var2 = "hello".
if (fstrcasecmp
(Svarl. $var2))
{ echO 'Svarl == $var2
при сравнении строк без учета регистра'.
 }

См. также: ereg(), strcrap(), substr(), stristr(), strncasecmp() и strstr().

strncasecmp

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

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

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

См. также: ereg(), strcasecmp(), strcmp(), substr(), stristr() и strstr().

strnatcmp

«Естественное» сравнение строк

int strnatcmp (string strl, string str2)

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

 $arrl = $агг2 = array
 ("img!2 png"."imgl0.png"."img2.png"."imgl.png");
echO "Обычная сортировка \n";
usOrt($arrl."strcmp").
print_r($arrl).
echO "\n«Естественная»
 сортировка \n":
usOrt($arr2."strnatcmp");
print_r($arr2);

При запуске будет выдано следующее:

 Обычная сортировка
Array
(
[0] => imgl.png
[1] => imglO.png
[2] => img!2 png
[3] => img2.png )
«Естественная» сортировка
 Array (
[0] => imgl.png
[1] => img2.png
[2] => imglO.png
[3] => img!2.png )

Для более подробной информации смотрите страницу Мартина Пула «Natural Order String COmparisOn» (http://www.linuxcare.cOm.au/ prOjects/natsOrt/).

Во всем остальном функция ведет себя подобно всем остальным функциям сравнения: возвращает < 0, если strl «меньше» str2; > 0 если strl «больше» str2, и 0, если они равны. При этом регистр сравниваемых строк учитывается.

См. также: егед(), strcasecmp(), substr(), stristr(), strcmp(), strncmp(), strncasecmp(), strnatcasecmp(), strstr(), natsOrt() и natcasesort().

strnatcasecmp

«Естественное» сравнение строк без учета регистра int strnatcasecmp (string strl, string str2)

Дополнение функции strcmp(), которое игнорирует при сравнении регистр.

См. также: егед(), strcasecmp(), substr(), stristr(), strcmp(), strncmp(), strncasecmp(), strnatcmp() и strstr().

simila_r text

Определение схожести двух строк

int similar_text (string first, string secOnd [, dOuble percent])

Функция вычисляет схожесть двух строк по алгоритму, описанному Оливером (Oliver [1993]). Но вместо стека (как в псевдокоде Оливера) она использует рекурсивные вызовы. Сложность алгоритма делает функцию медленной, и ее скорость пропорциональна (N3), где N — длина наибольшей строки.

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

levenshtein

Определение различия Левенштейна двух строк int levenshtein (string strl, string str2)

int levenshtein (string strl, string str2, int cOst_ins, int cOst_rep, int cOst_del)

int levenshtein (string strl, string str2. function cOst)

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

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

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

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

  • применяемая операция (вставить, изменить, удалить): «I», «R», «D»;
  • фактический символ первой строки;
  • фактический символ второй строки;
  • позиция строки 1;
  • позиция строки 2;
  • оставшаяся длина строки 1;
  • оставшаяся длина строки 2.

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

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

См. также: sondex(), similar_text() и metaphone().

Поиск

strchr

Поиск первого вхождения символа в строку

string strchr (string haystack, string needle) Функция является синонимом для strstr().

strstr

Нахождение первого вхождения подстроки

string strstr (string haystack, string needle)

Возвращает оставшуюся часть строки haystack, которая начинается с первого фрагмента, указанного в аргументе needle. Если это не удается, то возвращает FALSE. Функция чувствительна к регистру.

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

 $email = 'ntymail@designmultimedia.com'.
$dOmain = strstr (Semail. '(?').
tdOmain = strstr (Semail. Ord('P')): // можно и так
print SdOmain: // выводит-
@designinultimedia.com

См. также: stristr(), strrchr(), substr() и ereg().

stristr

Аналог strstr, нечувствительный к регистру

string stristr (string haystack, string needle)

Возвращает оставшуюся часть строки haystack, которая начинается с фрагмента, указанного в аргументе needle. Если это не удается, то возвращает FALSE. Функция Нечувствительна к регистру.

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

См. также: strchr(), strrchr(), substr() и ereg().

strrchr

Поиск последнего вхождения подстроки

string strrchr (string haystack, string needle)

Возвращает оставшуюся часть строки haystack, которая начинается с последнего фрагмента, указанного в аргументе needle. Если это не удастся, то возвращает FALSE. Функция чувствительна к регистру.

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

 // получить последний каталог в $РАTH
$aiг = substr (strrchr (SPATH. ":"). 1):
// получить все после последнего
перевода строки
$text = "Line IXnLine 2\nLine 3".
$last = substr (strrchr (Stext. 10). 1 ):

См. также: substr(), stristr() и strstr().

strpos

Определение первой позиции фрагмента в строке

int strpOs (string haystack, string needle [. int Offset])

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

 $pOs = strpOs (Smystnng. "b"):
if (SpOs = FALSE) ( // идентичность-
три знака равемс'-..:
// nOt fOund . }

Если аргумент needle — не строка, то тогда его значение преобразуется в целое и используется как код искомого символа.

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

См. также: strrpos(), strrchr(), substr(), stristr() и strstr().

strrpos

Определение последней позиции фрагмента в строке

int strrpos (string haystack, char needle)

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

 $pos = strrpos ($mystnng. 'b").
it (SpOs = FALSE) { // идентичность-
 три знака равенства
// not found . }

Если аргумент needle — не строка, то тогда его значение преобразуется в целое и используется как код искомого символа; если это строка, содержащая более одного символа, то используется первый.

См. также: strpos(), strrchr(), substr(), stristr() и strstr().

substr count

Определение числа вхождений фрагмента в строку

int substr_count (string haystrack, string needle)

Возвращает число фрагментов needle, присутствующих в строке haystrack.

 print substr_count("This is a test", "is").
 // =    2

strspn

Определение присутствия начальных символов в строке

int strspn (string strl, string str2)

Возвращает длину начального фрагмента строки strl, состоящего полностью из символов, имеющихся в строке str2.

 strspn ("42 is ...". "1234567890"). // = 2
См. также strcspn().

strcspn

Определение отсутствия начальных символов в строке int strcspn (string strl, string str2)

Возвращает длину начального фрагмента строки strl, состоящего полностью НЕ из символов, имеющихся в строке str2.

См. также strspn().

Простые манипуляции

Itrim

Удаление начальных пробелов

string Itrim (string str)

Возвращает исходную строку str, из которой удалены начальные пробельные символы (такими символами являются: «\n», «\r», «\t», «\v», «\0» и пробел).

См. также: chop(), rtrim() и tnm().

rtrim

Синоним функции chop()

string rtrim (string str)

$tnimed -- rtrim ;$line).

См. также: trim(), Itrim().

chop

Удаление конечных пробелов

string chop (string str)

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

См. также: trim(), Itrim(), rtrim() и chop().

trim

Удаление начальных и конечных пробелов

string trim (string str)

Возвращает исходную строку str, из которой удалены начальные и конечные пробельные символы (такими символами являются: «\п», «\г>>, «\t», «\v», «\0» и пробел).

См. также: chop(), rtrim() и Itrim().

strrev

Реверс строки

string strrev (string string)

Возвращает строку string «задом наперед».

strtolower

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

string strtolower (string str)

Возвращает строку string, в которой все алфавитные буквы делаются маленькими (lowercase). Понятие «алфавитные» определяется локальными установками. Обычно символы кириллицы не конвертируются (или конвертируются неправильно).

 $str = "HeLLo World".
$str = strtolower($str);
print $str: # Выводит, hello world

См. также: strtoupper() и ucfirst().

strtoupper

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

string strtoupper (string string)

Возвращает строку string, в которой все алфавитные буквы делаются большими (uppercase). Понятие «алфавитные» определяется локальными установками. Обычно символы кириллицы не конвертируются (или конвертируются неправильно).

 $str = "Hello":
$str = strtoupper ($str):
print $str. # выводит HELLO

См. также: strtolower() и ucfirst().

ucfirst

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

string ucfirst (string str)

Если первый символ строки — строчная буква, то в возвращаемой строке она становится заглавной. Символы кириллицы могут быть неправильно конвертированы.

 Stext = 'hello hello'.
Stext = ucfirst (Stext): // теперь Stext =
 Hello hello

См. также: strtoupper() и strtolower().

ucwords

Преобразование первого символа каждого слова в заглавный string ucwords (string str)

 Stext = 'hello hello':
itext = ucwords(Itext).
// теперь Stext = Hello Hello

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

См. также: strtoupper(), strtolower() и ucfirst().

strtr

Замена указанных символов

string strtr (string str, string from, string to)

string strtr (string str, array from)

Возвращается строка str, в которой каждый символ, присутствующий в строке from, заменяется на корреспондирующий из строки to. Если строки from и to различной длины, то «лишние» конечные символы длинной строки игнорируются.

 $addr = strtr(Saadr. "абвгд". "fbcde"):

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

 $trans = array ("hello" => "hi", "hi"
  => "hello"): echo strtrC'hi all. ! said hello". Strans)
. "\n": // выведет "hello all I said hi".

См. также ereg_replace().

str_replace

Замена фрагментов

string str_replace (string needle, string str, string haystack)

Возвращает строку haystack, в которой все фрагменты needle заменены значением строки str. Также функция может работать с двоичными строками. Эта функция в простых случаях может успешно заменить ereg_replace().

 Sbodytag = str_replace ("*body_coU". "black".
"<body color^body_coU>"):

См. также: ereg_replace() и strtrt).

substr_ replace

Замена части строки

string substr_replace (string string, string replacement, int start [, int length])

Возвращает строку string, в которой часть от символа с позицией start и длиной length (или до конца, если аргумент длины не указан) заменяется строкой replacement.

Если значение start положительно, отсчет производится от начала строки string, иначе — от конца (-1 — последний символ строки).

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

 <?php
$var = 'ABCDEFGH:/MNRPQR/':
echo "Original: $var\n":
/* замена строки целиком (от 0 символа до
последнего) */ echo substr_rep1ace
($var, 'bob1. 0) "<br>\n". echo substr_replace ($var.
 'bob'. 0. strlen ($var)) "<br>\n";
// выводит: bob<br>
/* вставить 'bob' в начале строки $var. */
echo substr_replace ($var. 'bob'. 0. 0) .
"<br>\n":
// выводит: bobABCDEFGH:/MNRPQR
/<br>
//* замена 'MNRPQR' в $var на 'bob' */
 echo substr_replace ($var. 'bob'.
10. -1) . "<br>\n". echo substr_rep1ace ($var. 'bob'.
 -7. -1) . "<br>\n": // выводит:
 ABCDEFGH:/bob/<br>
/* удаление 'MNRPQR' из $var. */
echo substr_replace ($var. ", 10. -1) .
 "<br>\n":
// выводит: ABCDEFGH-//<br>
C. 1 ?>

См. также: str_replace() n substr().

Сложные манипуляции

addslashes

Добавление слешей перед специальными символами строки

string addslashes (string str) .

Возвращает строку, в которой перед символами, имеющими специальное значение для строк, вставляется слеш. Такими символами являются: одиночная (') и двойная (") кавычки, обратный слеш (\) и нулевой байт NUL (\0). Это часто требуется, чтобы затем правильно передать строку в запросе к базе данных и т. д.

См. также: stripslashes(), htmlspecialchars() и quotemeta().

addcslashes

Форматирование строки слешами в С-представление

string addcslashes (string str, string charlist)

Возвращает строку str, в которую вставлены символы обратного слеша «\» перед перечисленными в строке-списке charlist символами. Это позволяет преобразовать непечатные символы в их визуальное С-представлсние.

В примере, приведенном ниже управляющие символы: «\n>>, «\r», и другие с кодами ASCII до 32 и выше 126, а также знак восклицания и «собака», конвертируются в их специальное или восьмеричное представление. Будьте осторожны с алфавитно-цифровыми символами и кодами (например, символы кириллицы имеют коды выше 126). Строка charlist содержит диапазоны кодов в формате "\0..\37", что в данном случае означает: коды от 0 до 31.

 $not_escaped = " Эта строка \t is (@)
 much complex \r to \x9f be
\n presented! \n\n". echo $not_escaped.
Sescaped = addcslashes
 ($not_escaped. "\0 .\37!@\177..\377"):
 echo Sescaped;

При запуске сценарий выводит следующее:

 Эта строка is (@) much complex to
Я be presented1
\235\342\240 \341\342\340\256\252\240
 \t is (\@) much \r\n complex \r
 to \237 be \n presented\!\n

См. также: stripcslashes(), stripslashes(), html special chars(), htralspe-cialchars() и quotemeta().

stripslashes

Удаление обратных слешей

string stripslashes (string str)

Возвращает строку, из которой удалены обратные слеши. Двойные слеши делаются одиночными.

См. также addslashes().

stripcslashes

Преобразование специальных символов в их двоичное представление string stripcslashes (string str)

Возвращает строку, в которой те специальные символы, которые закомментированы (для визуального отображения) обратным слешем, преобразуются в их естественное двоичное представление. Распознаются С-подобные записи, например: \n, \r ..., восьмеричные и шсст-надцатеричные последовательности.

См. также addcslashes().

quotemeta

Цитирование метасимволов string quotemeta (string str)

Возвращает строку str, в которую добавлены обратные слеши «\» перед каждым из следующих символов:

\\ + *?["]($)

Может использоваться для подготовки шаблонов в регулярных выражениях.

См. также: addslashes(), htmlentities(), htmlspecialchars(), nl2br() и stripslashes().

wordwrap

Расстановка переносов строк по ширине

string wordwrap (string str [, int width [. string break [, int cut]]])

Возвращает строку str, в которой расставлены символы перехода на новую строку («\п» или тот, который указан аргументом break), таким образом, что число символов на строке не превышает значения width (по умолчанию оно равно 75). Перенос осуществляется по словам; если указывается параметр cut, равный 1, то перенос строки выполняется всегда, как бы длинно слово ни было.

 $text = "The quick brown fox jumped
over the lazy dog "; Snewtext
 = wordwrapf Stext. 20 ); echo "$newtext\n";

Будет выведено

The quick brown fox jumped
over the lazy dog.

Следующий пример демонстрирует использование последнего аргумента cut=l:

Stext = "A very long woooooooooooord ".
 Snewtext = wordwrap!
 $text. 8. "\n". 1). echo "$newtext\n":

Будет выведено

 A very long

wooooooo ooooord

См. также: nl2br(), chunk_split().

convert_cyr_string

Конвертация строк из одной кодировки кириллицы в другую

string convert_cyr_string (string str, string from, string to)

Аргументы from и to — одиночные символы, представляющие соответственно исходную и целевую кодировки. Поддерживаемые типы кодировок, используемые в аргументах from и to:

  • k — koi8-r;
  • w — windows-1251;
  • i — iso8859-5;
  • a — x-cp866;
  • d — x-cp866;
  • m — x-mac-cyrillic.

hebrev

Конвертация логического текста Hebrew в отображаемый

string hebrev (string hebrew_text [, int max_chars_per_line])

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

См. также hebrevc().

hebrevc

Аналог функции hebrev с расстановкой переносов

string hebrevc (string hebrew_text [, int max_chars_per_"hne])

Функция сходна с hebrev() с тем отличием, что она преобразует символы перевода строк «\п» в «<br>\n». Необязательный аргумент тах_ chars_per_line указывает число символов на строку вывода. Функция пытается избежать разрыва слов.

См. также hebrev().

quoted printable decode

Преобразование цитированной строки в 8-битную

string quoted_printable_decode (string str)

Функция сходна с imap_qprint(), но не требует модуля ШАР.

Функции URL

parse_url

Разделение строки URL на ее компоненты

array parse_ur! (string url)

Возвращает ассоциативный массив, содержащий различные присутствующие в URL компоненты. Такими компонентами могут быть: «scheme», «host», «port», «user», «pass», «path», «query» и «fragment».

parse_str

Занесение строки URL в переменные

void parse_str (string str [, array arr])

Интерпретирует строку str, как если бы эта строка содержала переменные и их значения и передавалась в URL; устанавливает для найденных переменных значения. Если указывается второй аргумент, то значения сохраняются не в глобальных переменных, а в элементах указанного массива.

$str = "first=val33&second[]=
trns+works&second[]=another"
parse_str($str).
 parse_str($str.$ar).
echo Sfirst: /* выводит "va!33" */
echo $secona[0].
/* выводит "this works" */
echo $second[l]. /
* выводит "another" */
print_r($ar):
 * выводит:
[first] => va!33 [second] =>
 Array ( [0] => this works [1] =>
another ) */

rawurlencode

Кодирование URL

string rawurlencode (string str)

Возвращает строку, в которой вес не алфавитно-цифровые символы (за исключением дефиса «-», знака подчеркивания «_» и точки «.») заменены последовательностями: знак процента (%), за которым следуют две шестнадцатеричпыс цифры (обозначающие код символа). Схема этого кодирования описана в файле RFC1738, и она предназначена для того, чтобы буквенные символы не обрабатывались в качестве разделителей строки URL и не искажались при передаче в сетях (что характерно для некоторых систем электронных сообщений).

 echo '<A HREF="ftp://user: ' .
rawurlencode (Smypasswd).
'@ftp.my.com/x.txt">' .
// передача пароля в гиперссылке

Или при передаче нестандартной для URL строки пути:

echo '<A HREFz"http://x
com/department_list_sc'"ipt/' .
rawurlencode ('sales и
 marketing/Miami '). '">':

См. также: rawurldecode(), urldecode(), urlencode().

rawurldecode

Декодирование URL

string rawurldecode (string str)

Возвращает строку, в которой последовательности со знаком процента «%» с последующими двумя шестнадцатеричными цифрами заменяются соответствующими данному коду символами. Например, строка:

 fool20bart40baz

преобразуется в

 foo bargbaz

См. также: rawurlencode(), urldecode(), urlencode().

urlencode

Кодирование строки в URL

string urlencode (string str)

Возвращает строку, в которой все не алфавитно-цифровые символы (за исключением дефиса «-», знака подчеркивания «_» и точки «.») заменены последовательностями: знак процента (%), за которым следуют две шестнадцатеричные цифры (обозначающие код символа), а символ пробела заменен на знак «+». Именно таким образом кодируются все данные, посылаемые HTML-формами. Медиа-тип этого кодирования обозначается как application/x-www-form-urlencoded; он отличается от стандарта кодирования RFC 1738 (ем. функцию rawur-lencode()) тем, что, по историческим причинам, пробелы заменяются па знак плюс. Эта функция удобна при кодировании строки для использования в строке запроса, являющейся частью URL, и при передаче переменных на следующую страницу:

 echo '<А HREF="mycgi?foo=', urlencode
 (Susennput). '">':
РОЮ ra-yurl encode С foo М/ЯгЛ?&#').
// выводит f6o«20Z405!28
«25Z2R886«5CJ!3lrZ26Z23
echo urlencode ('foo @+l/»\\7&#');
// выводит
 foo+X40X2B3;25*2F*86*5a3F*26*23

Будьте осторожны с передачей переменных (в ссылках), которые могут совпасть с зарезервированными в HTML словами (например: Samp, Scopy и Spound — интерпретируются браузером и замещаются соответствующими символами).

См. также: urIdecode(), htmlentities(), rawurldecode(), rawurlencode().

urldecode

Декодирование строки из URL

string urldecode (string str)

Декодирует в строке последовательности %## (так в URL кодируются спецсимволы).

 $а = split ('&'. Squerystnng):
$i=0 while ($1 < count (la)) {
$b - split (' = '. $a [ii i;.
echo 'Value for parameter '.
htmlspecialchars (urldecode ($b [0])).
' is '. htrnlspecialchars (urldecode
($b [I].)). "<BR>"; $1++; }

См. также: urlencode(), rawurlencode(), rawurldecode().

base64_encode

Кодирование строки в формат base64

string base64_encode (string data)

Возвращает закодированную метолом «base64» строку data. Это кодирование предназначено для того, чтобы передаваемые двоичные данные могли правильно (без искажений) передаваться системами, изменяющими 8-й бит, например при передаче двоичных данных в теле сообщении электронной почты. При этом кодировании размер данных увеличивается на треть.

См. также: base64_decode(), chunk_split"(), RFC2045.

base64_decode

Декодирование строки из формата base64

string base64_decode (string encoded data)

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

См. также: base64_encode(), RFC2045.

HTML-конвертации

nl2br

Форматирование HTML-переносов строк string nl2br (string string)

Возвращает строку, в которой перед каждым символом перевода строки (newline) «\n» вставляется последовательность <BR>.

См. также: htmlspecialchars(), htmlentities() и wordwrap().

strip_tags

Удаление из строки тегов

string strip_tags (string str [, string allowablejtags])

Возвращает строку str, из которой удалены все HTML- и PHP-теги. Незавершенные и фиктивные теги вызывают ошибку. Схема, по которой производится удаление тегов, такая же, как и в функции fgetss().

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

get_meta_tags

Извлечение содержимого метатегов из файла в массив

array get_meta_tags (string filename [, int use_include_path])

Функция открывает файл filename и интерпретирует его построчно, находя теги <meta>:

 <meta name="author" content="name">
<meta name="tags" content="php3
documentation'>
</head> <!-- Здесь функция завершается -->

В возвращаемом массиве индексами становятся значения атрибута name, а самими значениями — значения атрибута content. Спецсимволы в значении атрибута name заменяются на знак подчеркивания «_», а алфавитные символы преобразуются в нижний регистр.

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

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 (no умолчанию — ЕМТ_СОМРАТ), его описание приведено в функции htmlspecialchars().

 $trans get_html_translation_table
(HTMLJNTITIES): $str = "< A & В >".
Sencoded = strtr ($str. Strans),
// теперь Sencoded = "&lt; A &amp; В &gt."

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

 Strans = array_flip (Strans): Sorlginal =
strtr (Sencoded. Strans):

См. также: htmlspecialchars(), htmlentities(), strtr() и array_flip().

htmlspecialchars

Конвертация спецсимволов в HTML-представление

string htmlspecialchars (string string [, int quote_style])

Некоторые символы имеют специальное значение в HTML, и поэтому для использования в тексте их необходимо заменять эквивалентами. Функция производит следующие замены:

  • & (амперсант) становится &атр;
  • " (двойная кавычка) становится &quot; при quote_style <> ENT_ NOQUOTES;
  • ' (одиночная кавычка) становится &#039; при quote_style = ENT_ QUOTES;
  • < (знак меньше) становится &lt;
  • > (знак больше) становится &gt;
 $new = htmlspeciaichars("<a href='test'>Test</a>". ENT_QUOTES).

Функция удобна для предотвращения неправильного вывода текста, введенного пользователем, если он содержит элементы форматирования HTML (например, в досках объявлений, гостевых книгах, чатах). Необязательный аргумент quote_style указывает, как поступать с кавычками: режим по умолчанию ЕМТ_СОМРАТ, служащий для обратной совместимости, разрешает трансляцию только двойных кавычек; ENT_QUOTES разрешает трансляцию любых кавычек; a ENT_NOQUOTES запрещает трансляцию любых кавычек.

Такую же операцию производит функция htmlentities().

См. также: html entities ()и nl2br().

htmlentities

Конвертация символов, имеющих HTML-представление

string htmlentities (string string [, int quote_style])

Функция подобна htmlspecialchars() с тем отличием, что она производит не выборочную трансляцию, а полную — для всех символов, которые могут иметь эквивалентные HTML-представления. Необязательный аргумент quote_style указывает, как поступать с кавычками: режим по умолчанию ENT_COMPAT, служащий для обратной совместимости, разрешает трансляцию только двойных кавычек; ENT_ QUOTES разрешает трансляцию любых кавычек; a ENT_NOQUOTES запрещает трансляцию любых кавычек. В настоящее время используется кодировка ISO-8859-1.

См. также: htmlspecialchars() и nl!2br().

Синтаксис регулярных выражений (PCRE )

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

Регулярное выражение должно состоять из: ограничителей шаблона, самого шаблона и необязательных модификаторов.

/шаблон/модификаторы

Ограничителями могут служить: прямые слеши «/», а также любые не алфавитно-цифровые символы, кроме обратного слеша «\». Часто в качестве ограничителей служат символы: \, %, $. Завершающий ограничитель должен быть представлен тем же символом, что и начинающий; ограничитель должен быть первым символом регулярного выражения. Если необходимо использовать символ, выбранный ограничителем в шаблоне, ему должен предшествовать обратный слеш «\» (например: «/\d{l,2}V\d{2}/»).

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

 Sbegin = "OOps"; Spattern = "/Sbegnn/".

Теперь шаблон Spattern будет искать последовательность Oops в любом месте текста вместо ожидаемого фрагмента begin в начале текста. В данном случае строку следует записывать как Spattern = "ASbegin/"; либо как: Spattern = '/$begin/':. Подобных примеров можно привести множество, поэтому не брезгуйте заглянуть в раздел «Типы: Строки», чтобы вспомнить, как РНР интерпретирует строки, и, в частности, как следует использовать слеши.

Синтаксис шаблона

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

Метасимвол | Значение
\ | подстановка;
. | любой символ: [*\n] или [\0-\xFF];
I | альтернатива;
0 | ограничители подшаблона;
|] | ограничители класса символов;
{} | числители повторения «от X до У раз»;
? | числитель «1 или 0 раз»; или мишшизатор числителя; или расширение значения метасимвола «(»;
* | числитель «0 или более pa:i>>;
+ | числитель «1 или более раз»;
< | претензия «в начале строки»;
$ | претензия «в конце строки».

В классах символов метасимволом является знак диапазона «минус» (-), а метасимвол инвертирует класс методом «все символы, кроме указанных».

Обычно пробелы в шаблоне рассматриваются как значащие. При установке же модификатора х все пробелы в шаблоне и все символы от знака # и до конца строки воспринимаются как комментирующие. Тем не менее, в классах символов пробел и знак # всегда являются значащими. В маркерах специальных подшаблонов не допускается использование пробелов, так как тогда нарушается смысл маркеров (сравните: (?<= ххх) и (? < = ххх)).

Например, шаблон (неплохой пример, хотя он и неадекватно работает с одинаковыми вложенными тегами):

 '% < ([*> ]+) (['>]*) > # открывающий тег
 (и атрибуты тега) (.*) # содержимое тега
< / \1 > # закрывающий тег £xis'

эквивалентен шаблону:

'*<(Г> ]+)(Г>]*)>(.*Н?#содержимое Tera)</\l>*is'

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

Подстановки

Символ (\) помимо операций подстановки, рассмотренных ниже, используется для превращении метасимволов в обычные. Например, для того, чтобы использовать точку в шаблоне как «точку», а не как «оператор подстановки любого символа», перед ней следует ставить слеш (\). Так же желательно поступать со всеми спецсимволами (то есть не являющимися буквенно-цифровыми), даже если они и не являются метасимволами. (При установленном модификаторе х слешем также следует предварять пробел и символ #, если только они не обозначают комментарий.)

Подстановки, обозначаемые символом обратного слеша (\), бывают пяти видов.

1. Подстановка непечатного символа.

Вместо следующих последовательностей вставляется:

  • \а - символ BEL (07 в ASCII);
  • \е — символ escape (hex IB в ASCII);
  • \f — символ прогонки страницы formfeed (hex ОС в ASCII);
  • \n — символ перевода строки newline (hex OA в ASCII);
  • \г — символ возврата каретки (hex OD в ASCII);
  • \t — символ табуляции (hex 09 в ASCII);
  • \сх — символ «Control-X», где х — любой буквенный символ.

Фактическое же действие последовательности \сх следующее: если «х» в нижнем регистре, он преобразуется в верхний, затем бит 6 (hex 40) этого символа инвертируется. Таким образом «\cz» становится шестнадцагеричным 1А, а «\с{»становится \хЗВ, тогда как «\с;» становится \х7В.

2. Подстановка символа с указанным кодом.

Для подстановок этого вида используются две записи:

  • \хшш, где шш — одна или две шестнадцатиричных цифры, буквы можно указывать в верхнем или нижнем регистре;
  • \ДДД, где ДДД — одна-три восьмеричных цифры.

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

3. Подстановка фрагмента совпадения с подшаблоном (обратная ссылка).

Указываются в виде: \ДД, где ДД — одна-две десятичных цифры (1-99) без незначащих нулей. Таким образом, обратных ссылок не может быть более 99. См. подробную информацию в разделе «Подшаблоны».

4. Подстановка класса символов.

  • \d — любой цифровой символ, [0-9];
  • \0 — любой НЕцифровой символ, [*0-9];
  • \s — любой пробельный символ, [\t\ \r\f\n];
  • \S — любой НЕпробелышй символ;
  • \w — любой алфавитно-цифровой символ;
  • \W — любой НЕалфавитно-цифровой символ.

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

Эти подстановки можно включать в класс символов.

5. Обозначение общего вида претензий.

  • \b — «на границе слова»;
  • \В — «не на границе слова»;
  • \А — в начале текста;
  • \Z — в конце текста или перед символом перевода строки;
  • \z — в конце текста.

Последовательности \А, \Z и \z, в отличие от метасимволов $ и А, действуют вне зависимости от режима многострочности (см. модификатор т).

Эти последовательности не должны использоваться в классах символов.

См. также раздел «Претензии».

Если после слеша указывается буква и эта последовательность не имеет специального значения подстановки, обычно слеш игнорируется и последовательность воспринимается как обычная буква. При установке же модификатора X такая последовательность вызывает ошибку. Это сделано для того, чтобы в дальнейшем, если когда-то такая последовательность приобретет специальное значение, она не использовалась бы неумышленно.

Альтернативы и классы символов

Допустим, в тексте нужно найти слово: «АА», «Бб» или «ВвВ», тогда в шаблоне следует указать 'АА|Бб|ВвВ', используя как обозначение альтернативы знак |, Допустимо любое число альтернатив и пустая альтернатива (соответствующая пустому фрагменту). Перебор альтернатив производится слева направо, и используется первая подходящая.

Для удобства можно заключать список альтернатив в скобки (то есть образовывать, таким образом, подшаблон), и в дальнейшем ссылать-ся на найденную альтернативу с помощью обратной ссылки. Например, шаблон: '*<(Н1|Н2|НЗ)>( .*)</\\l>*imUs' будет искать содержимое тегов заголовков.

Иногда необходимо искать символ, который может принимать различные значения, тогда используется класс символов, обозначаемый символами «[» и «]». Чтобы использовать символ ] в классе символов в качестве «самого себя», следует ставить перед ним слеш: \].

Если первый символ класса «А», то это означает: «любой символ, кроме тех, которые указаны в классе». Символ минус обозначает (если он не является первым или последним символом класса) символьный диапазон. Например, класс [лО-9] соответствует любому нецифровому символу (также можно записать как [А\хЗО-\х39]). Любую английскую букву можно указать как [a-z] |[A-Z]'. Если необходимо включить в класс символы «А» и «-», то первый не должен быть первым символом класса, а второй должен стоять в начале или конце класса.

В классе символов или вместо них допускается использование подстановок: \d, \D, \s, \S, \w. \W. Например, можно использовать последовательность \D вместо [лО-9]; или [\da-fA-F] для указания «любой шсстнадцатеричной цифры».

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

Прочие метасимволы (например, «$» или «}») в классе метасимволами не являются, но все же их желательно предварять слешем.

Особое значение имеет метасимвол «точка» (вне класса символов). Фактически он эквивалентен классу [*/n], представляющему собой совпадение с любым символом (включая также непечатные). Но, по умолчанию, если не используется модификатор s, ему не может соответствовать символ перехода на новую строку (\n); при указании же модификатора s точка соответствует абсолютно любому символу (то есть классу [\0-\xFF]).

Повторения и числители

Предположим, вы хотите найти в тексте номер, состоящий из 3-5 десятичных цифр, тогда в шаблоне необходимо указать \d{3,5}. Как вы можете догадаться, повторения символа (или, возможно, подшаб-лона) обозначаются указанием после него чисел в фигурных скобках, где первое число — минимально допустимое повторение символа (подшаблона), а после запятой — максимальное. Числители могут представляться также в следующем виде:

  • {n} — повторение, указанное n число раз;
  • {n,} — повторение, не меньше чем n раз.

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

Заменитель числителя | Значение | Эквивалент
у | « 1 или 0 раз» | {0,1}
* | «0 или более раз» | {0,}
+ | «1 или более раз» | 1.}

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

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

 <Р> Текст <Р> абзаца</Р>
со вложениями </Р>

Тогда шаблон /<p>(.*)<\/p>/i может (теоретически) вернуть 4 варианта совпадения. По умолчанию ищется максимальное повторение (то есть в данном варианте — строка целиком). Чтобы находилось минимально повторяющееся значение, используйте модификатор U. Для снижения «жадности» не всех числителей а только избранных ставьте после них знак вопроса, например: /<p>(.*?)<\/p>/i; этот способ изменяет «жадность» числителя на противоположную от основной.

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

Подшаблоны и обратные ссылки

Сами по себе подшаблоны (части шаблона, заключенные в круглые скобки) не влияют на функционирование регулярных выражений и могут служить исключительно для удобства группировки (они могут быть вложенными). Подшаблон может использоваться для ограничения набора альтернатив. При использовании же с обратными ссылками подшаблоны являются действенным инструментом поиска. Например, для поиска содержимого парных тегов может использоваться запись: *<([*>]*)>(.*)</\\1>*.

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

Заметьте, вместо ссылки подставляется фрагмент реального текста; например, регулярное выражение /слов(о|а) и числ\1/ будет подходить фразе: «слово и число» и «слова и числа», но не «слова и число»; а регулярное выражение /(A+)6\l/i не будет подходить строке «Аба», хотя и указано игнорирование регистра.

Ссылка может быть использована тогла и в том месте шаблона, когда ей уже можно будет однозначно сопоставить фрагмент текста. Например, конструкции (а\1) и (а|(b+))\2 неправильны.

Обратите внимание на то, как используются подшаблоны и ссылки с числителями:

(.*), (.)*, ([abc]*), ([abc])* (\2|\1+), (\2|\1)+.

Когда на подшаблон не имеется ссылок, его можно пометить указанием после открывающей скобки последовательности ?:, это исключает подшаблон из списка ссылок. Например, регулярное выражение /a((b+)(?:c*))(d?)/ будет иметь три ссылки: 1 -- на подшаблон ((b+)(?:с*)), 2 — на (b+) и 3 —.на (d?). Это может использоваться для увеличения общего числа подшаблонов до 200 (99 со ссылками и 101 без них). В такой форме записи становится возможным указывать внутренние модификаторы между ? и :, например: (?i:c|e|) эквивалентно (?:(?i)c|e|).

При необходимости указания внутри шаблона комментария (и возможном нежелании использовать модификатор х) допустимо исполь-

зовать подшаблоны комментариев (?#мой комментарий), игнорируемые при обработке.

Претензии

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

Простейшие из них " и $ обозначают, что фрагмент должен находиться соответственно в начале или в конце текста. Так, шаблон /*А/ указывает на то, что ищется символ «А» в начале текста, а шаблон /Z$/ на то, что ищется символ «Z» в конце текста. Как видно из примеров, сами символы л и $, должны находиться соответственно в начале или конце шаблона. Шаблон /привет$/ будет проверять, состоит ли текст целиком из слова «привет».

У этих претензий есть одна особенность: что считать началом и концом текста (строки)? Установка модификатора m указывает на то, что конец и начало строки могут обозначаться символом (\п). Например, шаблон /~А/т ищет букву «А» либо в начале текста, либо после каждого символа (\п). При установленном модификаторе D знак $ обозначает исключительно фактический конец текста, иначе же (если указан модификатор т) он также может обозначать конец строки, то есть то, что непосредственно после фрагмента должен следовать символ перевода строки (\п). В отличие от модификатора D, влияющего только на претензию конца строки, модификатор m влияет на обе. Если текст не содержит символов перевода строки, эти модификаторы не имеют значения.

Следующими претензиями, аналогичными описанным выше, являются подстановки \А, \Z, \z, обозначающие соответственно фактическое начало текста, конец текста или перевод строки, и фактический конец текста. Эти претензии не зависят от модификаторов. Например, шаблон /\A.*T\Z.+\z/ra будет искать символ «Т» в конце строки, но не текста.

Дополнительными похожими претензиями являются подстановки \b и \В, обозначающие соответственно «на» и «не на» границе «слова». Словом считается последовательность, ограниченная пробельными символами (включая переводы строк) или началом или концом текста. А границей — промежуток между двумя символами, один из которых пробельный, а другой нет. Например, шаблон /\bпре(\^)ый\b/ ищет все слова, имеющие приставку «пре-» и окончание «-ый».

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

  • (?=текст) — текст после точки совпадения должен соответствовать указанному;
  • (?!текст) — текст после точки совпадения не должен соответствовать указанному;
  • (?<=текст) — текст до точки совпадения должен соответствовать указанному;
  • (?<!текст) — текст до точки совпадения не должен соответствовать указанному.

Их отличие от простого указания последовательностей в подшабло-не в том, что фрагмент совпадения с такой претензией не возвращается в результате. Например, шаблон /(?<=\()\w+(?=\))/ возвращает всякое слово, стоящее в скобках без пробелов, но сами скобки не возвращаются.

В претензиях возможно указывать альтернативы и все то, что может использоваться в обычных шаблонах, кроме повторений. Для претензий предшествия альтернативы не должны иметь неопределенную длину, например, следующая претензия допустима: (?<lа[bс), в то время как недопустимы: (?<!а(а be)) и (?<lа?|bс).

Допустимо использовать последовательности претензий, например (?<=\d{3}) (?<!000)\w соответствует слову, которому предшествуют три цифры, не являющиеся одновременно нулями. Таким образом, можно производить многочисленные проверки одного места совпадения.

Также возможны вложения, например (?<=(?<!вв)ББ)аа будет соответствовать фрагменту «ББаа», но не «ввББаа». На подшаблоны претензий ссылки не указываются.

Специальные структуры подшаблонов

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

Поэтому в подшаблонах возможно использовать последовательности, блокирующие дальнейший перебор повторений подшаблона после того, как уже было найдено первое соответствие фрагменту текста. Такие подшаблоны маркируются последовательностью после открывающей скобки. Модификаторы «жадности» сохраняют при этом свое значение. Иными словами, вместо того, чтобы семь раз отмерять, мы сразу нарезаем строку на фрагменты.

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

Допустим, необходимо определить, оканчивается ли длинный текст на символы «Хх». При обычном шаблоне /Хх$/ проверка будет проходить от начала текста (сначала будет искаться символ, а потом определяться, стоит ли он в конце). Если усложнить шаблон до Г(. .*)Хх$/, это не сильно ускорит обработку, так как большую часть времени будет перебираться повторение первого подшаблона, и только потом определяться окончание текста. Если же написать шаблон как: /А(?>.*)(?<=Хх}$/, то первый подшаблон сразу же захватит весь текст целиком, а затем будет проверено окончание.

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

(? (условие) подшаблон!) или (?(условие)подшаблон1|подшаблон2).

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

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

 / ( ( \( )? # необязательная открывающая
скобка
( [*()]+ ) # все. кроме скобок
С?(2) \) )# если была открывающая
скобка, должна быть закрывающая )+
 I повторим? /х

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

 / (?(?=х) # если префикс х
[\da-fA-F]+ # то шестнадцатеричное
число
Синтаксис регулярных выражений
(PCRE)
I \d+ # иначе - десятичное ) /x

Модификаторы

Функционирование регулярных выражений можно видоизменять модификаторами трех уровней: глобальными, внешними и внутренними.

Модификатор | Внутреннее имя | Воздействие
i | PCRE_CASELESS | Игнорировать регистр
S | PCRE_DOTALL | Точка = [\0-\xFF], а не [А\п]
и | PCRE_UNGREEDY | Минимизировать числитель
га | PCRE_MULTILINE | А, $ учитывают \п
D | PCRE_DOLLAR_ENDONLY | $ не учитывает \п
А | PCRE_ ANCHORED | Привязать шаблон к началу текста
е |  | Только для preg_rep!ace()
X | PCRE_EXTENDED | Разрешить комментарии: пробел и #
X | PCRE_EXTRA | Воспринимать неверную подстановку как ошибку
S |  | Предварительная оптимизация шаблона перед исполнением

Значение модификаторов и их использование описаны в соответствующих разделах.

Модификатор га обладает большим приоритетом, чем 0. Модификатор А предназначен для ускорения обработки, но более выгодно явное конструирование оптимизированных шаблонов, например /.*шаблон/з для однострочного текста.

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

Модификаторы i, m, s, x, U, X можно устанавливать внутри шаблона, внутри подшаблона модификаторов (? ... ), после знака вопроса. Если в таком подшаблоне присутствует знак «минус», то модификаторы, стоящие за ним, сбрасываются. Действие таких модификаторов распространяется на промежуток шаблона от места его указания до его следующего возможного указания (со знаком минус) или до конца шаблона. Например: /аб(?51)вгде(?х-1т)ж(?тт: .*)з/га. При указании внутренних модификаторов внутри подшаблона их действие (в отличие от Perl) распространяется только на этот подшаблон. Например, шаблон /(а(?1)б)в/ соответствует только фрагментам «абв» и «аБв», а шаблон /(а(?1)б|г)/ соответствует фрагментам: «аб», «аБ», «г» или «Г».

Функции регулярных выражений (PCRE)

pregjnatch

Одиночный регулярный поиск

int pregjnatch (string pattern, string subject [, array matches])

Ищет в тексте, указанном аргументом subject, соответствие шаблону, указанному в pattern. Если совпадение находится, то функция возвращает TRUE, в противном случае — FALSE.

При указании в аргументе matches массива (одномерного) он заполняется найденными фрагментами совпадения. $matches[0] будет содержать фрагмент, совпадающий с полным шаблоном, $matches[l] -совпадение с первым подшаблоном и т. д.

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

 if (pregjnatch ("/XX/i". "уу Хх хухх"))
 { // игнорировать        регистр
print "Найдено" } else {
rint "Безуспешный поиск".
if (preg_match C7\bxx\b/i" . "уу Хх лухх"))
 // искать         слово '<хх»
print "Найдено": else print
"Безуспешный поиск";
preg_match("r(http
"http-//www php.net/index.html", Smatches):
$host = $matches[2]:
//должно содержать: www.php.net
// найти имена двух последних доменов
 сервера
preg_match("/r\.\/]-t-\.r\.\/]+$/".$host.$matches):
 echo "domain name is: ".$matches[0]."\n":
 // напечатает domain nane   is php net

См. также: pregjnatcrall(), preg_replace(), preg_split().

preg_match_all

Полный регулярный поиск

int preg_match_all (string pattern, string subject, array matches [, int order])

Ищет в тексте, указанном аргументом subject, все возможные соответствия шаблону, указанному в pattern. Поиск последующих совпадений производится от места последнего совпадения. Функция возвращает число совпадений с полным шаблоном или FALSE, если совпадений не было (или произошла ошибка).

В аргументе matches указывается массив (двухмерный), который заполняется найденными фрагментами совпадения. Аргумент order определяет вид, в котором сохраняются результаты поиска в массиве matches, и может принимать два значения.

PREG_PATTERN_ORDER (по умолчанию) - в виде [(под)шаб-лон] [фрагмент]. В (под)массиве Smatches[0] сохраняются совпадения с полным шаблоном, в $matches[l] и последующих — совпадения с подшаблонами.

 preg_match__all ("|<[A>]+>( .*)</[*>]+>|U".
"<b>Пример: </b> <div aliqn=left> мой текст
</div>",
 Jout. PREG_PATTERN_ORDER):

 Теперь массив Sout будет содержать следующие элементы (общая схема):

 |  | Фрагменты |  |
 |  | 0 | 1 | ...
Шаблон | 0 | $out[0]|0] = "<b>Пример: </b>" | $out[0][l] = "<cliv aligrHeft> мой T6KCT</div>" | $out[0)[...]
Под-шаблоны | 1 | $out[l][0] = "Пример: " | Sout[l][l] = " мой текст " | $out[l]L-..]
 |  | $out[...][0] | $out[...][l] | $out[...][...]

        PREG_SET_ORDER — в виде [фрагмент] [(под)шаблон]. В (гюд)массивах
          $matches[0] — $matches[xxx] сохраняются соответствующие фрагменты совпадения.

 preg_match_all ("[<[*>]+>(.*)</[">]+>|U".
"<b>Пример: </b> <div align-left* мой
текст </div>",
 $out. PREG SET ORDER):

 |  | Шаблон | Подшаблоны |
 |  | 0 | , |
Фрагменты | 0 | $out[0][0] =• "<b>Пример: </b>" | $out[0][l] = "Пример: " | $out(0][...J
 | 1 | $out[l][0] - "<div align=lefl> мой текст </div>" | $put[lj[l]-" мой текст " | $out[l]|...|
 | ... | $out[...][0] | $out [...][!] | $out[...][...]

//Пример 1.
Получение телефонного номера.
preg_match_all t"/\(?
(\d{3.6})? \)?
(?(1) [\-\s] ) \d{3}-\d{4}/x".
"Call 555-1212 or 1-800-555-1212",
Sphones).
// Пример 2. Искать парные
 HTML теги (жадно) // \\2 - ссылка, здесь
 на t[\wj+)
Shtml = "<b>bold text</b>--a href=howdy.htrol>click
me</a> preg_match_dll ("/(<([\w]+)[*>]*>K.*)(<\/\\2>)/".
Shtnl. Sratches);
for ($i=0. $i< count($inatches[0]). $i++)
{ echo "фрагмент:
" $matches[0][$i] "\n".
"часть 1 " $matches[l][$i] "\n".
"часть 2: ".$matches[3][$i]."\n".
"часть 3: ".$matches[4][$i]."\n\n". }

      После запуска примера будет выведено:

 фрагмент: <b>bold text</b>
 часть 1 <b>

часть 2: bold text часть 3: </b>
фрагмент: <а href=howdy.html>
click me<@060>/a> часть1:
<а href=howdy.html> часть 2:
 click me часть 3 </а>

 См. также: preg_match(), preg_replace(), preg_split().

 preg_replace

 Регулярный поиск с заменой

 mixed preg_replace (mixed pattern, mixed replacement, mixed subject
        [, int limit])

 Ищет в тексте subject вес фрагменты, соответствующие шаблону pattern,
        и заменяет их на replacement. Возвращает измененный текст. Если совпадений
        не находится, то возвращается неизмененный текст subject. Аргумент limit
        указывает, сколько фрагментов надо заменить; если он не указан или равен

        -1, то заменяются все найденные фрагменты.

 replacement может содержать обратные ссылки (обычные для регулярных
        выражений) в форме \\п или, что более предпочтительно, в форме $п. Каждая
        такая ссылка будет заменяться на фрагмент исходного текста, соответствующий
        указанному подшаблону. Обычно n может быть от 0 до 99 и \\0 или $0 соответствует
        целому шаблону.

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

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

 //Пример 1
Spatterns = array ("/(19|20)(\d{2})
-(\d{1.2})-(\d{1.2})/".
"r\s*{(\w+)}\s*=/"): $r-eplace =
 array ("\\3/\\4/\\l\\2". "$\U =");
print preg_replace (Spatterns,
Sreplace. "{startDate} = 1984-5-27");
 //напечатает: SstartDate = 5/27/1984
// Пример 2.
«использование модификатора /е»
// делает все  HTML теги заглавными
preg_replace ("/(<V)(\w+)([">]*>)/e".
"\\Г .strtoupper('\\2') '\\3'",
$html_body);
// Пример 3.
Преобразование HTML в текст
// Sdocument должен содержать
 текст HTML.
// Удаляются теги HTML tags,
секции javascript
// пробелы 8 начале строк.
 Подстановки HTML конвертируются
// в их символьное представление.
$search = array C"<scnpt[*>]*?> *?
</scnpt»'sn".
  // Вырезать javascript
"<[\Л!]*?[Ж<>]*?>'51". //
 Вырезать теги html "' ([\r\n])[\s]+'".
// Вырезать начальные  пробелы
"'&(quot|#34);'т",
// Заменить html entities
"'&(amp||38).'V.  '"&(lt|#60):'i". "'&(gt|#62):
'-!". '"&(nbsp|#160):'i". '"Sdexcllfien.1!"
. '"&(cent|fl62);'i". '"&(pound|#163);'i".
 '"&(copy|#169);'i". "'&#(\d+).'e"):
// обработать   php кодом
Sreplace = array ("".
"\\1", "\"". "&". 11 <" M>".
chr(161). chr(162). chr(163). chr(169).
 "chr(\\l)"):
Stext = preg_replace
(Ssearch. Sreplace. Sdocument).

 См. также: pregjnatch(), preg_match_all(), preg_split().

 preg_split

 Нарезка регулярным выражением

 array preg_split (string pattern, string subject [,

 int limit [, int flags]])

 Возвращает массив, содержащий части текста subject, находящиеся между
        фрагментами, соответствующими шаблону pattern.

 Аргументом limit можно указать число элементов в возвращаемом массиве.

 При указании в аргументе flags значения PREG_SPLIT_NO_EMPTY в возвращаемом
        массиве не сохраняются пустые значения.

 // Разделить текст пробельными
символами или запятыми
Skeywords = preg_split ("/[\s.]+/".
"hypertext language,   programming");
// разделить строку на составляющие
символы $str = 'ноя string';
$chars = preg_split('//'. $str. 0.
 PREG_SPLIT_NO_FMPTY):
print_r($chars):

 См. также: preg_match(), pregjnatch_al 1 (), preg_replace().

 preg_quote

 Цитирование метасимволов регулярного выражения

 string preg_quote (string str [, string delimiter])

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

 Метасимволами регулярных выражений считаются: .Л\ + *?[*]$(){}-! <>
        .| :

 В аргументе delimiter можно указать перечисление дополнительных символов,
        которые следует предварять слешем (обычно здесь полезно указать ограничитель
        шаблона).

 Skeywords = "$40 за дЗ/400";
Skeywords = preg_quote (Skeywords. "/");
echo $keywords. // возвращает:
 \$40 for a g3\/400
// Выделение курсивом слова в тексте HTML,
помеченного звездочками
Stextbody = "Это *очснь* сложное выражение.".
Sword = "*очень*":
Stextbody •= preg_replace
 ("/(".preg_quote(Sword) ")/".
"<-,>$1</1>". Stextbody);

 preg_grep

 фильтрация элементов массива в соответствии с шаблоном

 array preg_grep (string pattern, array input)

 Возвращает массив input, в котором оставлены только элементы, соответствующие
        указанному pattern шаблону.

 // возвращает все элементы, содержащие

        дробные числа $f1 array =

        preg_grep ("/~(\d+)?\ \d+$/". $arra;y)

Расширение регулярных выражений POSIX

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

ereg <"'abc". $stnng).

        /* Возвращает TRUE, если Istnng содержит

        фрагмент "abc". */ егеУ ("*abc". Sstring);

        /* Возвращает TRUE, если Sstring

        начинается с "abc". */

        ereg ("abc$". Sstring):

        /* Возвращает TRUE, если Sstring

        заканчивается на "abc" */

        eregi ("(ozilla [23]JMSIE.3)".

        $HTTP_USER_AGLNT); /* возвращает TRUE,

        если браузер клиента

        Netscape 2. 3 или MSIE 3. */

        ereg ("([[.alnum:]]+) ([[.alnum ]]+)

        ([[ :alnum:]]+)". Sstring.Sregs).

        /* Заносит три слова, разделенных

        пробелами в $regs[l].

        Sregs[2]и$regs[3].*/

        $stnng = ereg_replace ("*". "<BR>". Sstring);

        /* вставляет тег <BR> в начало строки

        Sstring */ Jstring = ereg_replace

        ("$". "<BR>". Sstnng). /* вставляет тег

        <BR> в конец строки Sstnng. */

        Sstring •= ereg_replace ("\n". "". Sstnngj.

        /* вырезает символы перехода на

        новую строку в Sstring. */

        Расширение регулярных выражений POSIX

 ereg

 Регулярный поиск

 int ereg (string pattern, string
        string [, array regs])

 Возвращает TRUE, если в строке string находится фрагмент, подходящий
        шаблону pattern, иначе — FALSE. В случае успеха массив regs заполняется
        совладениями с нодшаблонами. Элемент [0] массива regs содержит совпадение
        с полным шаблоном, а все последующие (1-9) — совпадения с подшаблонами.
        Массив regs всегда будет иметь 10 элементов, и это не зависит от числа
        подшаблонов.

 Следующий пример печатает дату формата ISO (YYYY-MM-DD) в виде DD.MM.YYYY:

 Sdate = "1982-11-29",

        if (ereg

        ("([0-9]{4})-([0-9]{1.2})-([0-9]{1.2})",

        $date. Sregs»

        { echo "$regs[3j.$regs[2].$regs[l]": } else f

        echo "Дата в неправильной формате: $date". }

 См. также: eregi(), ereg_replace(), eregi_replace().

 eregi

 Нечувствительный к регистру регулярный поиск

 int eregi (string pattern, string string [, array regs])

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

 См. также: ereg(), ereg_replace(). eregi_replace().

 ereg_replace

 Регулярная замена

 string ereg_replace (string pattern, string replacement, string string)

 В строке string ищутся фрагменты совпадения с pattern и возвращается
        строка string, в которой фрагменты совпадения (если таковые нашлись) заменены
        на replacement. Допускается использовать ссылки (0-9) на совпадения с
        подшаблонами. Ссылка \\0 означает совпадение с целым шаблоном.

 tstring - "This is a test".

        echo ereg_repl асе ("( )

        is". '\\lwas". $st'~ing):

 Однако если replacement содержит целочисленное значение, оно будет воспринято
        как код символа заместителя.

 Jstrirg = "В строке четыре слова";

        echo ereg_replасе('четыре', 4. Sstnng):

        /* выводит: В строке слова */ echo ereg_replace

        ( 'четыре'. '4'. Sstnng):

        /* выводит: В строке 4 слова */

См. также: ereg(), eregi(), eregi_replace().

 eregi_replace

 Нечувствительная к регистру регулярная замена

 string eregi_replace (string pattern, string replacement, string string)

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

 См. также: ereg(), eregi(), ereg_replace().

 split

 Нарезка в массив регулярным выражением

 array split (string pattern, string string [, int limit])

 Возвращает массив частей строки string, на которые она была разделена
        последовательностями, совпадающими с регулярным выражением pattern. В
        аргументе можно указать максимальное число частей, возвращаемое в массиве;
        если таких частей обнаружилось больше, последний элемент массива будет
        содержать оставшуюся неразделенной часть строки string. При ошибке возвращается
        FALSE.

 // выделить четыре первых поля

        строки файла /etc/passwd

        $pasc,wd_list = split (":". $passwd_line. 5):

 //разделить на переменные строку даты-времени

        list ($month. $day. Syear, Shour. Srmnutes, Sseconds)

        = split ('[/. -]'. "04/30/1973 14 23 88").

 Заметьте, иногда проще использовать функцию explodeO. См. также: splitiO,
        explodeO, implodeO.

 spliti

 Нечувствительный к регистру аналог split()

 array spliti (string pattern, string string [, int limit])

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

 См. также: split(), explode(), implode().

 sql_ regcase

 Игнорирование регистра для SQL выражений

 string sql_regcase (string string)

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

 Например, это позволяет при указании в SQL выражениях игнорировать регистр
        строки поиска. Например, выражение: SELECT * FROM tbl WHERE fieldl='Abc'
        часто чувствительно к регистру, а его аналогия: SELECT * FROM tbl WHERE
        fieldl»1 [Aa][Bb][Cc]' - нет. Но для многих СУБД поиск и так нечувствителен
        к регистру, например: SELECT * FROM tbl WHERE fieldl LIKE 'Abc'

 pcho sql_regcase ("Fv Жъ '");

        //выводит: [Ff][Vv] [ВДГЪь] !


<HTML><HEAD><TITLE>1.htm</TITLE><META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=WINDOWS-1251"><style> .Title_1{ text-align: left; font-family: Arial, Helvetica, sans-serif; font-size: 22px; } .Title_2{ text-align: left; font-family: Arial, Helvetica, sans-serif; font-size: 20px; font-weight: bold; } .Title_3{ text-align: left; font-family: Arial, Helvetica, sans-serif; font-size: 20px; } .Title_4{ text-align: left; font-family: Arial, Helvetica, sans-serif; font-size: 18px; font-weight: bold; } .list{ text-align: left; font-family: "Courier New", Courier, mono; font-size: 14px; } .Text { font-family: Arial, Helvetica, sans-serif; font-size: 16px; } .Text_Bold{ font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-weight: bold; } .Text_italic{ font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-style: italic; } .Picture { font-size: 16px; font-weight: bold; text-align: left; font-style: italic; } .Picture_i { text-align: left; font-weight: lighter; } .Prim { font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-style: italic; } .Menu { font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-style: normal; font-weight: bold; font-variant: normal; line-height: normal; list-style-type: square; } </style></HEAD><body BGCOLOR="#bed0f4" class="Text" designtimesp=21643> <P DESIGNTIMESP=21644> <iframe width="100%" height=20 src="http://www.powerbuilder.sbn.bz" border=0 designtimesp=21645> </iframe></P> <table width="100%" border="0" class="Text" designtimesp=21646> <tr designtimesp=21647> <td designtimesp=21648><P class="Title_1" DESIGNTIMESP=21649><FONT face=Tahoma size=4 DESIGNTIMESP=21650><STRONG DESIGNTIMESP=21651>Файлы и сети</STRONG></FONT> </P> <ul designtimesp=21652> <li class="Menu" designtimesp=21653><A href="#1" DESIGNTIMEURL="#1" DESIGNTIMESP=21654><FONT size=2 DESIGNTIMESP=21655><FONT face=Tahoma DESIGNTIMESP=21656>Файловая система</SPAN></FONT></FONT></a><FONT face=Tahoma size=2 DESIGNTIMESP=21657> </FONT> <li class="Menu" designtimesp=21658> <A href="#2" DESIGNTIMEURL="#2" DESIGNTIMESP=21659><FONT face=Tahoma size=2 DESIGNTIMESP=21660>Работа с архивами Zlib</FONT> </a><FONT face=Tahoma size=2 DESIGNTIMESP=21661> </FONT> <li class="Menu" designtimesp=21662> <A href="#3" DESIGNTIMEURL="#3" DESIGNTIMESP=21663><FONT face=Tahoma size=2 DESIGNTIMESP=21664>Сжатые файлы Bzip2</FONT> </a><FONT face=Tahoma size=2 DESIGNTIMESP=21665> </FONT> <li class="Menu" designtimesp=21666><A href="#4" DESIGNTIMEURL="#4" DESIGNTIMESP=21667><FONT face=Tahoma size=2 DESIGNTIMESP=21668>FTP</FONT></a><FONT face=Tahoma size=2 DESIGNTIMESP=21669> </FONT> <li class="Menu" designtimesp=21670> <A href="#5" DESIGNTIMEURL="#5" DESIGNTIMESP=21671><FONT face=Tahoma size=2 DESIGNTIMESP=21672>Сетевые функции </FONT> </a> <li class="Menu" designtimesp=21673> <A href="#6" DESIGNTIMEURL="#6" DESIGNTIMESP=21674><FONT face=Tahoma size=2 DESIGNTIMESP=21675>Низкоуровневый сетевой (сокет) интерфейс</FONT> </a><FONT face=Tahoma size=2 DESIGNTIMESP=21676> </FONT> <li class="Menu" designtimesp=21677><A href="#7" DESIGNTIMEURL="#7" DESIGNTIMESP=21678><FONT face=Tahoma size=2 DESIGNTIMESP=21679>Библиотека CURL (Client URL Library)</FONT> </a><FONT face=Tahoma size=2 DESIGNTIMESP=21680> </FONT> <li class="Menu" designtimesp=21681> <A href="#8" DESIGNTIMEURL="#8" DESIGNTIMESP=21682><FONT face=Tahoma size=2 DESIGNTIMESP=21683>Отправка почты</FONT> </a><FONT face=Tahoma size=2 DESIGNTIMESP=21684> </FONT> <li class="Menu" designtimesp=21685> <A href="#9" DESIGNTIMEURL="#9" DESIGNTIMESP=21686><FONT face=Tahoma size=2 DESIGNTIMESP=21687>IMАР, РОРЗ и NNTP</FONT> </a><FONT face=Tahoma size=2 DESIGNTIMESP=21688> </FONT></li> </ul> <P class="Text_Bold" DESIGNTIMESP=21689><FONT face=Tahoma size=2 DESIGNTIMESP=21690></FONT>&nbsp;</P> <p class="Title_2" designtimesp=21691><a name="1" designtimesp=21692></a><span class="Title_2" designtimesp=21693><FONT face=Tahoma size=2 DESIGNTIMESP=21694>Файловая система </FONT> </span></p> <P class="Title_3" DESIGNTIMESP=21695><FONT face=Tahoma size=2 DESIGNTIMESP=21696>Работа с каталогами </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21697><FONT face=Tahoma size=2 DESIGNTIMESP=21698>basename </FONT> </P> <P DESIGNTIMESP=21699><FONT face=Tahoma size=2 DESIGNTIMESP=21700>Получение компонента файлового имени в пути </FONT> </P> <P DESIGNTIMESP=21701><FONT face=Tahoma size=2 DESIGNTIMESP=21702>string basename (string path) </FONT> </P> <P DESIGNTIMESP=21703><FONT face=Tahoma size=2 DESIGNTIMESP=21704>Возвращает имя файла, выделенного из строки path, представляющей путь к файлу. </FONT> </P> <P DESIGNTIMESP=21705><FONT face=Tahoma size=2 DESIGNTIMESP=21706>В большинстве систем разделителем каталогов в пути служит прямой слеш «/&gt;&gt;. В Windows также может использоваться обратный слеш «\». </FONT> </P> <P DESIGNTIMESP=21707> <span class="list" designtimesp=21708><FONT face=Tahoma size=2 DESIGNTIMESP=21709>Spath = "/home/httpd/html/index.php3": <br designtimesp=21710> $file =basename ($path).<br designtimesp=21711> // $file is set to "index.php3" </FONT> </span></P> <P DESIGNTIMESP=21712><FONT face=Tahoma size=2 DESIGNTIMESP=21713>См. также dirname()</FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21714><FONT face=Tahoma size=2 DESIGNTIMESP=21715>dirname </FONT> </P> <P DESIGNTIMESP=21716><FONT face=Tahoma size=2 DESIGNTIMESP=21717>Исключение имени файла из пути </FONT> </P> <P DESIGNTIMESP=21718><FONT face=Tahoma size=2 DESIGNTIMESP=21719>string dirname (string path) </FONT> </P> <P DESIGNTIMESP=21720><FONT face=Tahoma size=2 DESIGNTIMESP=21721>Возвращает строку пути path, из которой исключено имя файла. </FONT> </P> <P DESIGNTIMESP=21722><FONT face=Tahoma size=2 DESIGNTIMESP=21723>В большинстве систем разделителем каталогов в пути служит прямой слеш «/». В Windows также может использоваться обратный слеш «\». </FONT> </P> <P DESIGNTIMESP=21724> <span class="list" designtimesp=21725><FONT face=Tahoma size=2 DESIGNTIMESP=21726>Spath = "/etc/passwd" <br designtimesp=21727> Sfile = dirname ($path); <br designtimesp=21728> // Sfile is set to "/etc" </FONT> </span></P> <P DESIGNTIMESP=21729><FONT face=Tahoma size=2 DESIGNTIMESP=21730>См. также basename(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21731><FONT face=Tahoma size=2 DESIGNTIMESP=21732>realpath </FONT> </P> <P DESIGNTIMESP=21733><FONT face=Tahoma size=2 DESIGNTIMESP=21734>Исключение сокращений в строке пути </FONT> </P> <P DESIGNTIMESP=21735><FONT face=Tahoma size=2 DESIGNTIMESP=21736>string realpath (string path) </FONT> </P> <P DESIGNTIMESP=21737><FONT face=Tahoma size=2 DESIGNTIMESP=21738>Заменяет все символьные ссылки и сокращения типа: «/./», «/../» (с дополнительными слешами «/») в строке path и возвращает полученный абсолютный путь. </FONT> </P> <P class="list" DESIGNTIMESP=21739><FONT face=Tahoma size=2 DESIGNTIMESP=21740>$real_path = realpath <br designtimesp=21741> (". /. ./index.php"): </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21742><FONT face=Tahoma size=2 DESIGNTIMESP=21743>getcwd </FONT> </P> <P DESIGNTIMESP=21744><FONT face=Tahoma size=2 DESIGNTIMESP=21745>Определение текущего каталога </FONT> </P> <P DESIGNTIMESP=21746><FONT face=Tahoma size=2 DESIGNTIMESP=21747>string getcwd(void); </FONT> </P> <P DESIGNTIMESP=21748><FONT face=Tahoma size=2 DESIGNTIMESP=21749>Возвращает текущую директорию, относительно которой проводятся файловые операции. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21750><FONT face=Tahoma size=2 DESIGNTIMESP=21751>chdir </FONT> </P> <P DESIGNTIMESP=21752><FONT face=Tahoma size=2 DESIGNTIMESP=21753>Смена текущего каталога </FONT> </P> <P DESIGNTIMESP=21754><FONT face=Tahoma size=2 DESIGNTIMESP=21755>int chdir (string directory) </FONT> </P> <P DESIGNTIMESP=21756><FONT face=Tahoma size=2 DESIGNTIMESP=21757>Возвращает FALSE при ошибке, в противном случае — TRUE. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21758><FONT face=Tahoma size=2 DESIGNTIMESP=21759>mkdir </FONT> </P> <P DESIGNTIMESP=21760><FONT face=Tahoma size=2 DESIGNTIMESP=21761>Создание каталога </FONT> </P> <P DESIGNTIMESP=21762><FONT face=Tahoma size=2 DESIGNTIMESP=21763>int mkdir (string pathname, int mode) </FONT> </P> <P DESIGNTIMESP=21764><FONT face=Tahoma size=2 DESIGNTIMESP=21765>Пытается создать новый каталог pathname с атрибутами доступа mode (если они указываются в восьмеричной системе, первой цифрой должен быть ноль). </FONT> </P> <P class="list" DESIGNTIMESP=21766><FONT face=Tahoma size=2 DESIGNTIMESP=21767>mkdir ("/path/to/my/chr". 0700). </FONT> </P> <P DESIGNTIMESP=21768><FONT face=Tahoma size=2 DESIGNTIMESP=21769>Возвращает TRUE или FALSE — при ошибке.</FONT> </P> <P DESIGNTIMESP=21770><FONT face=Tahoma size=2 DESIGNTIMESP=21771>См. также rmdirz(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21772><FONT face=Tahoma size=2 DESIGNTIMESP=21773>rmdir </FONT> </P> <P DESIGNTIMESP=21774><FONT face=Tahoma size=2 DESIGNTIMESP=21775>Удаление каталога </FONT> </P> <P DESIGNTIMESP=21776><FONT face=Tahoma size=2 DESIGNTIMESP=21777>int rmdir (string dirname) </FONT> </P> <P DESIGNTIMESP=21778><FONT face=Tahoma size=2 DESIGNTIMESP=21779>Пытается удалить каталог dirname. Ката/юг должен быть пустым, и его атрибуты должны позволять это. </FONT> </P> <P DESIGNTIMESP=21780><FONT face=Tahoma size=2 DESIGNTIMESP=21781>При ошибке возвращает 0 (то есть FALSE). </FONT> </P> <P DESIGNTIMESP=21782><FONT face=Tahoma size=2 DESIGNTIMESP=21783>См. также mkdir(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21784><FONT face=Tahoma size=2 DESIGNTIMESP=21785>diskfreespace </FONT> </P> <P DESIGNTIMESP=21786><FONT face=Tahoma size=2 DESIGNTIMESP=21787>Определение свободного пространства в каталоге </FONT> </P> <P DESIGNTIMESP=21788><FONT face=Tahoma size=2 DESIGNTIMESP=21789>float diskfreespace (string directory) </FONT> </P> <P DESIGNTIMESP=21790><FONT face=Tahoma size=2 DESIGNTIMESP=21791>Возвращает в байтах свободное пространство в каталоге directory, то есть в соответствующей ей файловой системе или на разделе диска. </FONT> </P> <P class="list" DESIGNTIMESP=21792><FONT face=Tahoma size=2 DESIGNTIMESP=21793> $df - diskfreespacet"/");<br designtimesp=21794> // свободное место в корневой директории "/" </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21795><FONT face=Tahoma size=2 DESIGNTIMESP=21796>dir </FONT> </P> <P DESIGNTIMESP=21797><FONT face=Tahoma size=2 DESIGNTIMESP=21798>Класс каталога </FONT> </P> <P DESIGNTIMESP=21799><FONT face=Tahoma size=2 DESIGNTIMESP=21800>new dir (string directory) </FONT> </P> <P DESIGNTIMESP=21801><FONT face=Tahoma size=2 DESIGNTIMESP=21802>Псевдоориентированный механизм для получения списка файлов каталога. При создании объекта на основе класса открывается каталог, указанный directory. </FONT> </P> <P DESIGNTIMESP=21803><FONT face=Tahoma size=2 DESIGNTIMESP=21804>После этого становятся доступны два свойства объекта: дескриптор каталога handle (который может использоваться с функциями readdir(), rewinddir() и closedir()) и строка path, указывающая, какой каталог в настоящий момент используется. У класса имеются три метода: read, rewind и close. </FONT> </P> <P class="list" DESIGNTIMESP=21805><FONT face=Tahoma size=2 DESIGNTIMESP=21806>$d = dirC'/etc"). <br designtimesp=21807> echo "Дескриптор: " .$d-&gt;handle."&lt;br&gt;\n".<br designtimesp=21808> echo "Путь: " $d-&gt;path."&lt;br&gt;\n":<br designtimesp=21809> while($entry=Sd-&gt;read()) {<br designtimesp=21810> // последовательно выводить <br designtimesp=21811> echo Sentry."&lt;br&gt;\n".// имя каждого файла. }<br designtimesp=21812> // имеющегося в каталоге <br designtimesp=21813> $d-&gt;close(): </FONT> <P class="Text_Bold" DESIGNTIMESP=21814><FONT face=Tahoma size=2 DESIGNTIMESP=21815>opendir </FONT> </P> <P DESIGNTIMESP=21816><FONT face=Tahoma size=2 DESIGNTIMESP=21817>Открытие дескриптора каталога </FONT> </P> <P DESIGNTIMESP=21818><FONT face=Tahoma size=2 DESIGNTIMESP=21819>int opendir (string path) </FONT> </P> <P DESIGNTIMESP=21820><FONT face=Tahoma size=2 DESIGNTIMESP=21821>Возвращает дескриптор открытого каталога path, который затем можно использовать в функциях closedir(), readdir(), rewinddir(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21822><FONT face=Tahoma size=2 DESIGNTIMESP=21823>closedir </FONT> </P> <P DESIGNTIMESP=21824><FONT face=Tahoma size=2 DESIGNTIMESP=21825>Закрытие открытого дескриптора каталога </FONT> </P> <P DESIGNTIMESP=21826><FONT face=Tahoma size=2 DESIGNTIMESP=21827>void closedir (int dir_handle) </FONT> </P> <P DESIGNTIMESP=21828><FONT face=Tahoma size=2 DESIGNTIMESP=21829>В аргументе указывается дескриптор каталога, возвращенный функцией opendir (). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21830><FONT face=Tahoma size=2 DESIGNTIMESP=21831>readdir </FONT> </P> <P DESIGNTIMESP=21832><FONT face=Tahoma size=2 DESIGNTIMESP=21833>Получение имени следующего файла в списке каталога </FONT> </P> <P DESIGNTIMESP=21834><FONT face=Tahoma size=2 DESIGNTIMESP=21835>string readdir (int dir_handle) </FONT> </P> <P DESIGNTIMESP=21836><FONT face=Tahoma size=2 DESIGNTIMESP=21837>Возвращает имя следующего файла в каталоге. Файлы возвращаются в виде неупорядоченной последовательности. </FONT> </P> <P class="list" DESIGNTIMESP=21838><FONT face=Tahoma size=2 DESIGNTIMESP=21839> &lt;?php <br designtimesp=21840> $handle=opendir('.'). <br designtimesp=21841> echo "Directory handle: $handle\n", <br designtimesp=21842> echo "FilesAn"; <br designtimesp=21843> while («file = readdir($handle))<br designtimesp=21844> !==FALSE) { <br designtimesp=21845> echo "$file\n":<br designtimesp=21846> closedir($handle). </FONT> </P> <P DESIGNTIMESP=21847><FONT face=Tahoma size=2 DESIGNTIMESP=21848>Заметьте, что функция также возвращает значения «.» и «..». Если они не требуются, их можно просто исключать: $handle=opendir('.'): < /FONT> </P> <P class="list" DESIGNTIMESP=21849><FONT face=Tahoma size=2 DESIGNTIMESP=21850> while (FALSE!==<br designtimesp=21851> ($flie = readdir(Shandle))) { if <br designtimesp=21852> (Sfile != "." &amp;&amp; Sfile != "..")<br designtimesp=21853> { echo "$file\n". <br designtimesp=21854> closedir($handle): </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21855><FONT face=Tahoma size=2 DESIGNTIMESP=21856>rewinddir </FONT> </P> <P DESIGNTIMESP=21857><FONT face=Tahoma size=2 DESIGNTIMESP=21858>Реинициализация дескриптора каталога </FONT> </P> <P DESIGNTIMESP=21859><FONT face=Tahoma size=2 DESIGNTIMESP=21860>void rewinddir (int dir_handle) </FONT> </P> <P DESIGNTIMESP=21861><FONT face=Tahoma size=2 DESIGNTIMESP=21862>После вызова этой функции функция readdir() с аргументом dir_ hand! e будет возвращать имена файлов с начала в списке каталога. </FONT> </P> <P class="Title_3" DESIGNTIMESP=21863><FONT face=Tahoma size=2 DESIGNTIMESP=21864>Получение свойств и атрибутов файлов </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21865><FONT face=Tahoma size=2 DESIGNTIMESP=21866>file_exists </FONT> </P> <P DESIGNTIMESP=21867><FONT face=Tahoma size=2 DESIGNTIMESP=21868>Проверка существования файла </FONT> </P> <P DESIGNTIMESP=21869><FONT face=Tahoma size=2 DESIGNTIMESP=21870>bool file_exists (string filename) </FONT> </P> <P DESIGNTIMESP=21871><FONT face=Tahoma size=2 DESIGNTIMESP=21872>Возвращает TRUE, если файл, указанный filename, существует; иначе — FALSE. Функция не работает с удаленными файлами, файл должен находиться в доступной для сервера файловой системе. </FONT> </P> <P DESIGNTIMESP=21873><FONT face=Tahoma size=2 DESIGNTIMESP=21874>Результаты функции кэшируются, см. функцию clearstatcache(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21875><FONT face=Tahoma size=2 DESIGNTIMESP=21876>is_dir </FONT> </P> <P DESIGNTIMESP=21877><FONT face=Tahoma size=2 DESIGNTIMESP=21878>Проверка существования каталога </FONT> </P> <P DESIGNTIMESP=21879><FONT face=Tahoma size=2 DESIGNTIMESP=21880>bool is_dir (string filename) </FONT> </P> <P DESIGNTIMESP=21881><FONT face=Tahoma size=2 DESIGNTIMESP=21882>Возвращает TRUE, если указанный каталог filename существует. Результаты функции кэшируются, см. функцию clearstatcache(). </FONT> </P> <P DESIGNTIMESP=21883><FONT face=Tahoma size=2 DESIGNTIMESP=21884>См. также: is_file() и isJink(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21885><FONT face=Tahoma size=2 DESIGNTIMESP=21886>is_executable </FONT> </P> <P DESIGNTIMESP=21887><FONT face=Tahoma size=2 DESIGNTIMESP=21888>Проверка существования запускаемого файла </FONT> </P> <P DESIGNTIMESP=21889><FONT face=Tahoma size=2 DESIGNTIMESP=21890>bool is_executable (string filename) </FONT> </P> <P DESIGNTIMESP=21891><FONT face=Tahoma size=2 DESIGNTIMESP=21892>Результаты функции кэшируются, см. функцию clearstatcache(). </FONT> </P> <P DESIGNTIMESP=21893><FONT face=Tahoma size=2 DESIGNTIMESP=21894>См. также: is file() и is link(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21895><FONT face=Tahoma size=2 DESIGNTIMESP=21896>is_file </FONT> </P> <P DESIGNTIMESP=21897><FONT face=Tahoma size=2 DESIGNTIMESP=21898>Проверка существования обычного файла </FONT> </P> <P DESIGNTIMESP=21899><FONT face=Tahoma size=2 DESIGNTIMESP=21900>bool is_file (string filename) </FONT> </P> <P DESIGNTIMESP=21901><FONT face=Tahoma size=2 DESIGNTIMESP=21902>Результаты функции кэшируются, см. функцию clearstatcache(). </FONT> </P> <P DESIGNTIMESP=21903><FONT face=Tahoma size=2 DESIGNTIMESP=21904>См. также: is_dir() и is_link(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21905><FONT face=Tahoma size=2 DESIGNTIMESP=21906>is_ link </FONT> </P> <P DESIGNTIMESP=21907><FONT face=Tahoma size=2 DESIGNTIMESP=21908>Проверка существования символической ссылки на файл </FONT> </P> <P DESIGNTIMESP=21909><FONT face=Tahoma size=2 DESIGNTIMESP=21910>bool isjink (string filename) </FONT> </P> <P DESIGNTIMESP=21911><FONT face=Tahoma size=2 DESIGNTIMESP=21912>Результаты функции кэшируются, см. функцию clearstatcache(). </FONT> </P> <P DESIGNTIMESP=21913><FONT face=Tahoma size=2 DESIGNTIMESP=21914>Функция не работает под Windows. </FONT> </P> <P DESIGNTIMESP=21915><FONT face=Tahoma size=2 DESIGNTIMESP=21916>См. также: is_dir() и is_file(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21917><FONT face=Tahoma size=2 DESIGNTIMESP=21918>is_eadable </FONT> </P> <P DESIGNTIMESP=21919><FONT face=Tahoma size=2 DESIGNTIMESP=21920>Проверка существования файла, доступного для чтения bool is_readable (string filename) </FONT> </P> <P DESIGNTIMESP=21921><FONT face=Tahoma size=2 DESIGNTIMESP=21922>Обычно PUP осуществляет доступ к файлу с привилегиями пользователя, запускающего web-сервер (часто «nobody»). Соображения безопасности должны приниматься в расчет. </FONT> </P> <P DESIGNTIMESP=21923><FONT face=Tahoma size=2 DESIGNTIMESP=21924>Результаты функции кэшируются, см. функцию clearstatcache().</FONT> </P> <P DESIGNTIMESP=21925><FONT face=Tahoma size=2 DESIGNTIMESP=21926>См. также is_writeable(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21927><FONT face=Tahoma size=2 DESIGNTIMESP=21928>is_writeable </FONT> </P> <P DESIGNTIMESP=21929><FONT face=Tahoma size=2 DESIGNTIMESP=21930>Проверка существования файла, доступного для записи </FONT> </P> <P DESIGNTIMESP=21931><FONT face=Tahoma size=2 DESIGNTIMESP=21932>bool is_writeable (string filename) </FONT> </P> <P DESIGNTIMESP=21933><FONT face=Tahoma size=2 DESIGNTIMESP=21934>Обычно PHP осуществляет доступ к файлу с привилегиями пользователя, запускающего web-сервер (часто «nobody»). Соображения безопасности должны приниматься в расчет. </FONT> </P> <P DESIGNTIMESP=21935><FONT face=Tahoma size=2 DESIGNTIMESP=21936>Результаты функции кэшируются, см. функцию clearstatcache().</FONT> </P> <P DESIGNTIMESP=21937><FONT face=Tahoma size=2 DESIGNTIMESP=21938>См. также is_readable(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21939><FONT face=Tahoma size=2 DESIGNTIMESP=21940>is_uploaded file </FONT> </P> <P DESIGNTIMESP=21941><FONT face=Tahoma size=2 DESIGNTIMESP=21942>Проверка существования файла, загруженного методом HTTP POST bool is_uploaded_file (string filename) </FONT> </P> <P DESIGNTIMESP=21943><FONT face=Tahoma size=2 DESIGNTIMESP=21944>Возвращает TRUE, если файл с именем filename был загружен на сервер посредством HTTP POST. Часто это полезно, чтобы убедиться, что пользователи из злого умысла не пытались заставить сценарий работать с теми файлами, с которыми им работать не следует, например: /etc/ passwd. </FONT> </P> <P DESIGNTIMESP=21945><FONT face=Tahoma size=2 DESIGNTIMESP=21946>См. также: move_uploaded_file(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21947><FONT face=Tahoma size=2 DESIGNTIMESP=21948>filetype </FONT> </P> <P DESIGNTIMESP=21949><FONT face=Tahoma size=2 DESIGNTIMESP=21950>Получение типа файла </FONT> </P> <P DESIGNTIMESP=21951><FONT face=Tahoma size=2 DESIGNTIMESP=21952>string filetype (string filename) </FONT> </P> <P DESIGNTIMESP=21953><FONT face=Tahoma size=2 DESIGNTIMESP=21954>Возможные возвращаемые значения: fifo, char, dir, block, link, file, unknown. В случае ошибки возвращается FALSE. </FONT> </P> <P DESIGNTIMESP=21955><FONT face=Tahoma size=2 DESIGNTIMESP=21956>Результаты функции кэшируются, см. функцию clearstatcache(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21957><FONT face=Tahoma size=2 DESIGNTIMESP=21958>fileatime </FONT> </P> <P DESIGNTIMESP=21959><FONT face=Tahoma size=2 DESIGNTIMESP=21960>Получение времени последнего доступа к файлу </FONT> </P> <P DESIGNTIMESP=21961><FONT face=Tahoma size=2 DESIGNTIMESP=21962>int fileatime (string filename) </FONT> </P> <P DESIGNTIMESP=21963><FONT face=Tahoma size=2 DESIGNTIMESP=21964>Возвращает время в формате «Unix timestamp» пли FALSE в случае / ошибки. </FONT> </P> <P DESIGNTIMESP=21965><FONT face=Tahoma size=2 DESIGNTIMESP=21966>Результаты функции кэшируются. см. функцию clearstatcache().</FONT> </P> <P DESIGNTIMESP=21967><FONT face=Tahoma size=2 DESIGNTIMESP=21968>Атрибут времени последнего доступа к файлу изменяется каждый раз, когда данные файла читаются. Так как это сильно снижает производительность при интенсивной работе с файлами и каталогами, часто изменение этого атрибута в операционных системах блокируют, и тогда функция бесполезна. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21969><FONT face=Tahoma size=2 DESIGNTIMESP=21970>filemtime </FONT> </P> <P DESIGNTIMESP=21971><FONT face=Tahoma size=2 DESIGNTIMESP=21972>Получение времени последней записи в файл int filemtime (string filename) </FONT> </P> <P DESIGNTIMESP=21973><FONT face=Tahoma size=2 DESIGNTIMESP=21974>Возвращает время в формате «Unix timestamp» или FALSE в случае ошибки. </FONT> </P> <P DESIGNTIMESP=21975><FONT face=Tahoma size=2 DESIGNTIMESP=21976>Результаты функции кэшируются. см. функцию clearstatcache(). </FONT> </P> <P DESIGNTIMESP=21977><FONT face=Tahoma size=2 DESIGNTIMESP=21978>Этот атрибут файла отражает последнее изменение самих данных файла (при операциях вывода в файл). Используйте функцию date() для преобразования возвращаемого значения в читабельный формат. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21979><FONT face=Tahoma size=2 DESIGNTIMESP=21980>filectime </FONT> </P> <P DESIGNTIMESP=21981><FONT face=Tahoma size=2 DESIGNTIMESP=21982>Получение времени последнего изменения файла </FONT> </P> <P DESIGNTIMESP=21983><FONT face=Tahoma size=2 DESIGNTIMESP=21984>int filectime (string filename) </FONT> </P> <P DESIGNTIMESP=21985><FONT face=Tahoma size=2 DESIGNTIMESP=21986>Возвращает время в формате «Unix timestamp» или FALSE в случае ошибки. </FONT> </P> <P DESIGNTIMESP=21987><FONT face=Tahoma size=2 DESIGNTIMESP=21988>Результаты функции кэшируются, см. функцию clearstatcache(). </FONT> </P> <P DESIGNTIMESP=21989><FONT face=Tahoma size=2 DESIGNTIMESP=21990>В большинстве систем изменением файла считается также изменение его атрибутов (например, прав доступа). </FONT> </P> <P DESIGNTIMESP=21991><FONT face=Tahoma size=2 DESIGNTIMESP=21992>См. также: filemtime() и fileatime(). </FONT> </P> <P DESIGNTIMESP=21993><FONT face=Tahoma size=2 DESIGNTIMESP=21994>В некоторых системах этот атрибут неправильно рассматривается как время создания файла. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=21995><FONT face=Tahoma size=2 DESIGNTIMESP=21996>filegroup </FONT> </P> <P DESIGNTIMESP=21997><FONT face=Tahoma size=2 DESIGNTIMESP=21998>Получение группы принадлежности файла </FONT> </P> <P DESIGNTIMESP=21999><FONT face=Tahoma size=2 DESIGNTIMESP=22000>int filegroup (string filename) </FONT> </P> <P DESIGNTIMESP=22001><FONT face=Tahoma size=2 DESIGNTIMESP=22002>Возвращает ID группы владельца файла или FALSE в случае ошибки. Идентификатор группы возвращается в численном формате, используйте posix_getgrgid() для преобразования его в имя группы. </FONT> </P> <P DESIGNTIMESP=22003><FONT face=Tahoma size=2 DESIGNTIMESP=22004>Результаты функции каптируются, см. функцию clearstatcache(). Функция не работает под Windows. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22005><FONT face=Tahoma size=2 DESIGNTIMESP=22006>fileowner </FONT> </P> <P DESIGNTIMESP=22007><FONT face=Tahoma size=2 DESIGNTIMESP=22008>Получение группы владельца файла </FONT> </P> <P DESIGNTIMESP=22009><FONT face=Tahoma size=2 DESIGNTIMESP=22010>int fileowner (string filename) </FONT> </P> <P DESIGNTIMESP=22011><FONT face=Tahoma size=2 DESIGNTIMESP=22012>Возвращает ID владельца файла или FALSE в случае ошибки. </FONT> </P> <P DESIGNTIMESP=22013><FONT face=Tahoma size=2 DESIGNTIMESP=22014>Идентификатор владельца возвращается в численном формате, используйте posix_getpwuid() для преобразования его в имя владельца (username). </FONT> </P> <P DESIGNTIMESP=22015><FONT face=Tahoma size=2 DESIGNTIMESP=22016>Результаты функции кэшируются, см. функцию clearstatcache(). </FONT> </P> <P DESIGNTIMESP=22017><FONT face=Tahoma size=2 DESIGNTIMESP=22018>Функция не работает под Windows. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22019><FONT face=Tahoma size=2 DESIGNTIMESP=22020>fileperms </FONT> </P> <P DESIGNTIMESP=22021><FONT face=Tahoma size=2 DESIGNTIMESP=22022>Получение атрибутов доступа файла </FONT> </P> <P DESIGNTIMESP=22023><FONT face=Tahoma size=2 DESIGNTIMESP=22024>int fileperms (string filename) </FONT> </P> <P DESIGNTIMESP=22025><FONT face=Tahoma size=2 DESIGNTIMESP=22026>Возвращает FALSE в случае ошибки. </FONT> </P> <P DESIGNTIMESP=22027><FONT face=Tahoma size=2 DESIGNTIMESP=22028>Результаты функции кэшируются, см. функцию clearstatcache(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22029><FONT face=Tahoma size=2 DESIGNTIMESP=22030>filesize </FONT> </P> <P DESIGNTIMESP=22031><FONT face=Tahoma size=2 DESIGNTIMESP=22032>Получение размера файла </FONT> </P> <P DESIGNTIMESP=22033><FONT face=Tahoma size=2 DESIGNTIMESP=22034>int filesize (string filename) </FONT> </P> <P DESIGNTIMESP=22035><FONT face=Tahoma size=2 DESIGNTIMESP=22036>Возвращает FALSE в случае ошибки. </FONT> </P> <P DESIGNTIMESP=22037><FONT face=Tahoma size=2 DESIGNTIMESP=22038>Результаты функции кэшируются, см. функцию clearstatcache(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22039><FONT face=Tahoma size=2 DESIGNTIMESP=22040>fileinode </FONT> </P> <P DESIGNTIMESP=22041><FONT face=Tahoma size=2 DESIGNTIMESP=22042>Получение файлового блока inode int fileinode (string filename) </FONT> </P> <P DESIGNTIMESP=22043><FONT face=Tahoma size=2 DESIGNTIMESP=22044>Возвращает номер блока файла в файловой системе или FALSE в случае ошибки. </FONT> </P> <P DESIGNTIMESP=22045><FONT face=Tahoma size=2 DESIGNTIMESP=22046>Результаты функции кэшируются, см. функцию clearstatcache(). Функция не работает под Windows. </FONT> </P> <P class="Title_3" DESIGNTIMESP=22047><FONT face=Tahoma size=2 DESIGNTIMESP=22048>Манипулирование файлами </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22049><FONT face=Tahoma size=2 DESIGNTIMESP=22050>touch </FONT> </P> <P DESIGNTIMESP=22051><FONT face=Tahoma size=2 DESIGNTIMESP=22052>Установка времени последней модификации или создание файла </FONT> </P> <P DESIGNTIMESP=22053><FONT face=Tahoma size=2 DESIGNTIMESP=22054>int touch (string filename [, int time]) </FONT> </P> <P DESIGNTIMESP=22055><FONT face=Tahoma size=2 DESIGNTIMESP=22056>Пытается установить для файла filename атрибут последней модификации time. Если он не указывается, используется текущее время. Если файл не существует, он создается (поэтому эту функцию часто используют для создания файла). Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P DESIGNTIMESP=22057><FONT face=Tahoma size=2 DESIGNTIMESP=22058>if (touch (SFileName)) { print "Ок";} else { print "Ошибка". } </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22059><FONT face=Tahoma size=2 DESIGNTIMESP=22060>unlink </FONT> </P> <P DESIGNTIMESP=22061><FONT face=Tahoma size=2 DESIGNTIMESP=22062>Удаление файла </FONT> </P> <P DESIGNTIMESP=22063><FONT face=Tahoma size=2 DESIGNTIMESP=22064>int unlink (string filename) </FONT> </P> <P DESIGNTIMESP=22065><FONT face=Tahoma size=2 DESIGNTIMESP=22066>В системах Unix для удаления файлов используется системная функция unlink(). </FONT> </P> <P DESIGNTIMESP=22067><FONT face=Tahoma size=2 DESIGNTIMESP=22068>Возвращает TRUE или FALSE — при ошибке. Для удаления каталога используйте: rmdir(). Функция может не работать под Windows. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22069><FONT face=Tahoma size=2 DESIGNTIMESP=22070>сору </FONT> </P> <P DESIGNTIMESP=22071><FONT face=Tahoma size=2 DESIGNTIMESP=22072>Копирование файла </FONT> </P> <P DESIGNTIMESP=22073><FONT face=Tahoma size=2 DESIGNTIMESP=22074>int copy (string source, string dest) </FONT> </P> <P DESIGNTIMESP=22075><FONT face=Tahoma size=2 DESIGNTIMESP=22076>Копирует файл source в место, указанное dest. Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P class="list" DESIGNTIMESP=22077><FONT face=Tahoma size=2 DESIGNTIMESP=22078> if (!copy($file, Sfile.' bak')j { <br designtimesp=22079> print ("Ошибка копирования <br designtimesp=22080> $file...&lt;br&gt;\n"): } </FONT> </P> <P DESIGNTIMESP=22081><FONT face=Tahoma size=2 DESIGNTIMESP=22082>См. также rename(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22083><FONT face=Tahoma size=2 DESIGNTIMESP=22084>rename </FONT> </P> <P DESIGNTIMESP=22085><FONT face=Tahoma size=2 DESIGNTIMESP=22086>Переименование или перемещение файла </FONT> </P> <P DESIGNTIMESP=22087><FONT face=Tahoma size=2 DESIGNTIMESP=22088>int rename (string oldname, string newname) </FONT> </P> <P DESIGNTIMESP=22089><FONT face=Tahoma size=2 DESIGNTIMESP=22090>Переименовывает файл oldname в newname. Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22091><FONT face=Tahoma size=2 DESIGNTIMESP=22092>move_uploaded_file </FONT> </P> <P DESIGNTIMESP=22093><FONT face=Tahoma size=2 DESIGNTIMESP=22094>Перемещение загруженного файла </FONT> </P> <P DESIGNTIMESP=22095><FONT face=Tahoma size=2 DESIGNTIMESP=22096>boo! move_uploaded_file (string filename, string destination) </FONT> </P> <P DESIGNTIMESP=22097><FONT face=Tahoma size=2 DESIGNTIMESP=22098>Функция проверяет, является ли файл filename реально загруженным t помощью метода HTTP POST, если нет — возвращается FALSE. </FONT> </P> <P DESIGNTIMESP=22099><FONT face=Tahoma size=2 DESIGNTIMESP=22100>Затем функция перемещает файл в новое место destination; а если это неосуществимо, возвращается FALSE (с выдачей системного сообщения). </FONT> </P> <P DESIGNTIMESP=22101><FONT face=Tahoma size=2 DESIGNTIMESP=22102>См. также: is_uploaded_file(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22103><FONT face=Tahoma size=2 DESIGNTIMESP=22104>tempnam </FONT> </P> <P DESIGNTIMESP=22105><FONT face=Tahoma size=2 DESIGNTIMESP=22106>Генерация уникального имени временного файла string tempnam (string dir, string prefix) </FONT> </P> <P DESIGNTIMESP=22107><FONT face=Tahoma size=2 DESIGNTIMESP=22108>Возвращает имя несуществующего в каталоге dir файла, начинающегося с prefix. Если аргументы не указываются, то используется временный каталог системы (в Windows он указан в системной переменной ТМР и значение аргумента dir не используется; в Linux аналогично используется значение.TMPDIR; проверьте системную документацию функции tempnam(3) для разрешения вопросов). </FONT> </P> <P DESIGNTIMESP=22109><FONT face=Tahoma size=2 DESIGNTIMESP=22110>При ошибке возвращается пустая строка. </FONT> </P> <P class="list" DESIGNTIMESP=22111><FONT face=Tahoma size=2 DESIGNTIMESP=22112> Stmpfname " tempram ("/tmp". TOO"); <br designtimesp=22113> // в Windows 2000 выдаст, <br designtimesp=22114> например: <br designtimesp=22115> //E:\DOCUMr-i\9335-l\LOCALS-l\<br designtimesp=22116> Temp\F009.tmp </FONT> </P> <P DESIGNTIMESP=22117><FONT face=Tahoma size=2 DESIGNTIMESP=22118>В версии РНР 4.0.3 поведение функции было изменено: при получении имени одновременно создается такой файл. Это сделано для того, чтобы в промежутке между получением уникального имени и созданием такого файла друюе приложение или сценарий не могли создать идентичный временный файл. </FONT> </P> <P DESIGNTIMESP=22119><FONT face=Tahoma size=2 DESIGNTIMESP=22120>См. также tmp'ile(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22121><FONT face=Tahoma size=2 DESIGNTIMESP=22122>tmpfile </FONT> </P> <P DESIGNTIMESP=22123><FONT face=Tahoma size=2 DESIGNTIMESP=22124>Создание временного файла int tmpfile (void) </FONT> </P> <P DESIGNTIMESP=22125><FONT face=Tahoma size=2 DESIGNTIMESP=22126>Создает уникальный файл в режиме записи, возвращая его дескриптор, подобно функции fopen(). Этот файл автоматически удаляется при его явном закрытии (функцией fclose()) или завершении сценария. </FONT> </P> <P DESIGNTIMESP=22127><FONT face=Tahoma size=2 DESIGNTIMESP=22128>Для более подробной информации просмотрите использование системной функции tmpfile()) и заголовочный файл stdio.h. </FONT> </P> <P DESIGNTIMESP=22129><FONT face=Tahoma size=2 DESIGNTIMESP=22130>См. также tempnam(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22131><FONT face=Tahoma size=2 DESIGNTIMESP=22132>chgrp </FONT> </P> <P DESIGNTIMESP=22133><FONT face=Tahoma size=2 DESIGNTIMESP=22134>Изменение группы файпч </FONT> </P> <P DESIGNTIMESP=22135><FONT face=Tahoma size=2 DESIGNTIMESP=22136>int chgrp (string f;,aname, mixed group) </FONT> </P> <P DESIGNTIMESP=22137><FONT face=Tahoma size=2 DESIGNTIMESP=22138>Пытается сменить у файла filename группу на значение group. Только администратор может безусловно изменять этот атрибут у любого файла, иначе необходимо входить в группу владельцев файла. </FONT> </P> <P class="Title_5" DESIGNTIMESP=22139><FONT face=Tahoma size=2 DESIGNTIMESP=22140>Возвращает TRUE или FALSE — при ошибке. Функция не работает под Windows. </FONT> </P> <P class="Title_5" DESIGNTIMESP=22141><FONT face=Tahoma size=2 DESIGNTIMESP=22142>См. также: chown() и chmod(). </FONT> </P> <P DESIGNTIMESP=22143><FONT face=Tahoma size=2 DESIGNTIMESP=22144>Пытается сменить у файла filename группу на значение group. Только администратор может безусловно изменять этот атрибут у любого файла, иначе необходимо входить в группу владельцев файла. </FONT> </P> <P DESIGNTIMESP=22145><FONT face=Tahoma size=2 DESIGNTIMESP=22146>Возвращает TRUE или FALSE — при ошибке. Функция не работает под Windows.</FONT> </P> <P DESIGNTIMESP=22147><FONT face=Tahoma size=2 DESIGNTIMESP=22148>См. также: chown() и chmod(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22149><FONT face=Tahoma size=2 DESIGNTIMESP=22150>chmod </FONT> </P> <P DESIGNTIMESP=22151><FONT face=Tahoma size=2 DESIGNTIMESP=22152>Изменение атрибутов доступа файла </FONT> </P> <P DESIGNTIMESP=22153><FONT face=Tahoma size=2 DESIGNTIMESP=22154>int chmod (string filename, int mode) </FONT> </P> <P DESIGNTIMESP=22155><FONT face=Tahoma size=2 DESIGNTIMESP=22156>Аргумент mode нужно явно задавать как восьмеричное число (то есть первой цифрой должен быть 0), а строки типа «g+vv» не будут приниматься: </FONT> </P> <P class="list" DESIGNTIMESP=22157><FONT face=Tahoma size=2 DESIGNTIMESP=22158> chmod ("/somedir/somefile". 755).<br designtimesp=22159> // десятичное число; возможно неверное<br designtimesp=22160> значение chmod<br designtimesp=22161> ("/somedir/somefile". "u+rwx.go+rx"), <br designtimesp=22162> // строка; неверное значение<br designtimesp=22163> chmod ("/somedir/somefile". 0755). <br designtimesp=22164> // десятичное число; правильный вариант </FONT> </P> <P DESIGNTIMESP=22165><FONT face=Tahoma size=2 DESIGNTIMESP=22166>Возвращает TRUE или FALSE — при ошибке. Функция не работает иод Windows.</FONT> </P> <P DESIGNTIMESP=22167><FONT face=Tahoma size=2 DESIGNTIMESP=22168>См. также: chown() и chgrp(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22169><FONT face=Tahoma size=2 DESIGNTIMESP=22170>chown </FONT> </P> <P DESIGNTIMESP=22171><FONT face=Tahoma size=2 DESIGNTIMESP=22172>Смена владельца файла </FONT> </P> <P DESIGNTIMESP=22173><FONT face=Tahoma size=2 DESIGNTIMESP=22174>int chown (string filename, mixed user) </FONT> </P> <P DESIGNTIMESP=22175><FONT face=Tahoma size=2 DESIGNTIMESP=22176>Только администратор может изменять этот атрибут файла. </FONT> </P> <P DESIGNTIMESP=22177><FONT face=Tahoma size=2 DESIGNTIMESP=22178>Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P DESIGNTIMESP=22179><FONT face=Tahoma size=2 DESIGNTIMESP=22180>Функция не работает иод Windows. </FONT> </P> <P DESIGNTIMESP=22181><FONT face=Tahoma size=2 DESIGNTIMESP=22182>См. также: chown() и chmod(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22183><FONT face=Tahoma size=2 DESIGNTIMESP=22184>umask </FONT> </P> <P DESIGNTIMESP=22185><FONT face=Tahoma size=2 DESIGNTIMESP=22186>Изменение текущего значения umask int umask (int mask) </FONT> </P> <P DESIGNTIMESP=22187><FONT face=Tahoma size=2 DESIGNTIMESP=22188>Устанавливает значение PHP umask равным (mask &amp; 0777) и возвращает предыдущее значение umask. При использовании РНР как серверного модуля значение umask восстанавливается при завершении каждого запроса. </FONT> </P> <P DESIGNTIMESP=22189><FONT face=Tahoma size=2 DESIGNTIMESP=22190>При неуказании аргументов просто возвращается текущая маска. Функция может не работать под Windows. </FONT> </P> <P class="Title_3" DESIGNTIMESP=22191><FONT face=Tahoma size=2 DESIGNTIMESP=22192>Системные функции </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22193><FONT face=Tahoma size=2 DESIGNTIMESP=22194>linkinfo </FONT> </P> <P DESIGNTIMESP=22195><FONT face=Tahoma size=2 DESIGNTIMESP=22196>Получение информации о файловой ссылке int linkinfo (string path) </FONT> </P> <P DESIGNTIMESP=22197><FONT face=Tahoma size=2 DESIGNTIMESP=22198>Возвращает поле st_dev структуры stat UNIX С, возвращаемой системным запросом Istat, или FALSE (0) при ошибке. Используется для проверки существования файловой ссылки (с именем path ). Такой же метод используется макросом S_ISLNK, определенным в файле stat.h. </FONT> </P> <P DESIGNTIMESP=22199><FONT face=Tahoma size=2 DESIGNTIMESP=22200>Функция не работает под Windows. </FONT> </P> <P DESIGNTIMESP=22201><FONT face=Tahoma size=2 DESIGNTIMESP=22202>См. также: symlink(), link() и readlink(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22203><FONT face=Tahoma size=2 DESIGNTIMESP=22204>readlink </FONT> </P> <P DESIGNTIMESP=22205><FONT face=Tahoma size=2 DESIGNTIMESP=22206>Получение назначения символьной ссылке string readlink (string path) </FONT> </P> <P DESIGNTIMESP=22207><FONT face=Tahoma size=2 DESIGNTIMESP=22208>Возвращает путь к файлу, на который указывает ссылка path, или О — при ошибке. </FONT> </P> <P DESIGNTIMESP=22209><FONT face=Tahoma size=2 DESIGNTIMESP=22210>Функция не работает под Windows. </FONT> </P> <P DESIGNTIMESP=22211><FONT face=Tahoma size=2 DESIGNTIMESP=22212>См. также: symlink(), readlink() и linkinfo(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22213><FONT face=Tahoma size=2 DESIGNTIMESP=22214>symlink </FONT> </P> <P DESIGNTIMESP=22215><FONT face=Tahoma size=2 DESIGNTIMESP=22216>Создание символьной ссылки на файл </FONT> </P> <P DESIGNTIMESP=22217><FONT face=Tahoma size=2 DESIGNTIMESP=22218>int symlink (string target, string link) </FONT> </P> <P DESIGNTIMESP=22219><FONT face=Tahoma size=2 DESIGNTIMESP=22220>Создает файл link, являющийся ссылкой на существующий файл target. </FONT> </P> <P DESIGNTIMESP=22221><FONT face=Tahoma size=2 DESIGNTIMESP=22222>Функция не работает под Windows. </FONT> </P> <P DESIGNTIMESP=22223><FONT face=Tahoma size=2 DESIGNTIMESP=22224>См. также: link(), readlink(), linkinfo(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22225><FONT face=Tahoma size=2 DESIGNTIMESP=22226>link </FONT> </P> <P DESIGNTIMESP=22227><FONT face=Tahoma size=2 DESIGNTIMESP=22228>Создание жесткой файловой связи </FONT> </P> <P DESIGNTIMESP=22229><FONT face=Tahoma size=2 DESIGNTIMESP=22230>int link (string target, string link) </FONT> </P> <P DESIGNTIMESP=22231><FONT face=Tahoma size=2 DESIGNTIMESP=22232>Функция не работает под Windows. </FONT> </P> <P DESIGNTIMESP=22233><FONT face=Tahoma size=2 DESIGNTIMESP=22234>См. также: symlink(), readlink(), linkinfo(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22235><FONT face=Tahoma size=2 DESIGNTIMESP=22236>stat </FONT> </P> <P DESIGNTIMESP=22237><FONT face=Tahoma size=2 DESIGNTIMESP=22238>Получение информации о файле </FONT> </P> <P DESIGNTIMESP=22239><FONT face=Tahoma size=2 DESIGNTIMESP=22240>array stat (string filename) </FONT> </P> <P DESIGNTIMESP=22241><FONT face=Tahoma size=2 DESIGNTIMESP=22242>Возвращает массив следующих элементов: </FONT> </P> <P DESIGNTIMESP=22243><FONT face=Tahoma size=2 DESIGNTIMESP=22244> 0. номер устройства (device); <br designtimesp=22245> 1. номер файлового блока (mode); <br designtimesp=22246> 2. режим защиты файлового блока (inode); <br designtimesp=22247> 3. число файловых связей (links); <br designtimesp=22248> 4. идентификатор владельца (user id); <br designtimesp=22249> 5. идентификатор группы (group id); <br designtimesp=22250> 6. тип блочного устройства (inode); <br designtimesp=22251> 7. размер в байтах; <br designtimesp=22252> 8. время последнего доступа; <br designtimesp=22253> 9. время последней модификации; <br designtimesp=22254> 10. время последнего изменения; <br designtimesp=22255> 11. размер блока для системного ввода-вывода; <br designtimesp=22256> 12. число занимаемых блоков. </FONT> </P> <P DESIGNTIMESP=22257><FONT face=Tahoma size=2 DESIGNTIMESP=22258>Результаты функции кэшируются, см. функцию clearstatcache(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22259><FONT face=Tahoma size=2 DESIGNTIMESP=22260>Istat </FONT> </P> <P DESIGNTIMESP=22261><FONT face=Tahoma size=2 DESIGNTIMESP=22262>Получение информации о файле или ссылке на файл array Istat (string filename) </FONT> </P> <P DESIGNTIMESP=22263><FONT face=Tahoma size=2 DESIGNTIMESP=22264>Функция подобна stat(), но она также работает с файловыми ссылками (причем информация возвращается о самой ссылке). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22265><FONT face=Tahoma size=2 DESIGNTIMESP=22266>clearstatcache </FONT> </P> <P DESIGNTIMESP=22267><FONT face=Tahoma size=2 DESIGNTIMESP=22268>Очистка кэша файловой информации void clearstatcache(void); </FONT> </P> <P DESIGNTIMESP=22269><FONT face=Tahoma size=2 DESIGNTIMESP=22270>Во многих системах системный вызов stat() или Istat ()(а также функций, перечисленных ниже) достаточно накладен, поэтому их результаты кэшируются и при последующем вызове извлекаются из кэша. При необходимости обновления кэшированных данных (например, когда файл мог быть изменен другим приложением) вызывается данная функция. </FONT> </P> <P DESIGNTIMESP=22271><FONT face=Tahoma size=2 DESIGNTIMESP=22272>Воздействует на функции stat(), Istat(), file_exists(), is_writeable(), is_readable(), is executable(), is file(), is_dir(), isJink(), filectime(), fileatime(), filemtime(), fileinode(), filegroup(), fileowner(), filesize(), filetype() и fileperms(). </FONT> <P class="Text_Bold" DESIGNTIMESP=22273><FONT face=Tahoma size=2 DESIGNTIMESP=22274>ftruncate </FONT> </P> <P DESIGNTIMESP=22275><FONT face=Tahoma size=2 DESIGNTIMESP=22276>Урезание размера файла </FONT> </P> <P DESIGNTIMESP=22277><FONT face=Tahoma size=2 DESIGNTIMESP=22278>int ftruncate (int fp, int size) </FONT> </P> <P DESIGNTIMESP=22279><FONT face=Tahoma size=2 DESIGNTIMESP=22280>В качестве аргумента fp принимается дескриптор файла (а не имя), возвращаемый fopen(). Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22281><FONT face=Tahoma size=2 DESIGNTIMESP=22282>set_file_buffer </FONT> </P> <P DESIGNTIMESP=22283><FONT face=Tahoma size=2 DESIGNTIMESP=22284>Установка буферизации файловых операций </FONT> </P> <P class="list" DESIGNTIMESP=22285><FONT face=Tahoma size=2 DESIGNTIMESP=22286>int set_fi1e_buffer (int fp, int buffer) </FONT> </P> <P DESIGNTIMESP=22287><FONT face=Tahoma size=2 DESIGNTIMESP=22288>Вывод в файл, осуществляемый функцией fwrite(), обычно буферизируется порциями по 8 Кбайт. Это означает, что если два процесса одновременно осуществляют запись в один поток вывода (файл), каждый из них после записи очередных 8 Кбайт данных останавливается, чтобы позволить другому выполнить операцию записи. </FONT> </P> <P DESIGNTIMESP=22289><FONT face=Tahoma size=2 DESIGNTIMESP=22290>Функция устанавливает размер буфера buffer байтов для операций записи в файл, имеющий дескриптор fp. Если аргумент buffer указывается со значением 0, то тогда буферизация отменяется, что- позволяет быть уверенным, что все операции записи, выполненные функцией fwrite(), совершаются при ее завершении (до того, как другим приложениям будет разрешена запись в тот же файл). </FONT> </P> <P DESIGNTIMESP=22291><FONT face=Tahoma size=2 DESIGNTIMESP=22292>Возвращается 0 или EOF, если запрос не может быть выполнен. </FONT> </P> <P DESIGNTIMESP=22293> <span class="list" designtimesp=22294><FONT face=Tahoma size=2 DESIGNTIMESP=22295>$fp=fopen($file, "w"): if($fp){ <br designtimesp=22296> set_file_buffer($fp. 0). <br designtimesp=22297> fputs($fp. Soutput); <br designtimesp=22298> fclose(Sfp): } </FONT> </span> </P> <P DESIGNTIMESP=22299><FONT face=Tahoma size=2 DESIGNTIMESP=22300>См. также: fopen(), fwrite(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22301><FONT face=Tahoma size=2 DESIGNTIMESP=22302>flock </FONT> </P> <P DESIGNTIMESP=22303><FONT face=Tahoma size=2 DESIGNTIMESP=22304>Блокирование совместного доступа </FONT> </P> <P DESIGNTIMESP=22305><FONT face=Tahoma size=2 DESIGNTIMESP=22306>boo! flock (int fp, int operation [, int wouldblock]} </FONT> </P> <P DESIGNTIMESP=22307><FONT face=Tahoma size=2 DESIGNTIMESP=22308>PHP поддерживает совместимый способ блокировки файла в целом для разделения совместного доступа (при этом все приложения, осуществляющие доступ, должны использовать этот единый способ блокировки, иначе это не будет работать). </FONT> </P> <P DESIGNTIMESP=22309><FONT face=Tahoma size=2 DESIGNTIMESP=22310>Функция использует простейший метод блокировки чтения и записи, имеющийся в большинстве систем (Unix и Windows). В аргументах функции указывается: дескриптор открытого файла fp и способ его блокировки operation, который может принимать следующие значения</FONT> </P> <ul designtimesp=22311> <li designtimesp=22312><FONT face=Tahoma size=2 DESIGNTIMESP=22313>LOCK_SH — разделяемый доступ для чтения, </FONT> <li designtimesp=22314><FONT face=Tahoma size=2 DESIGNTIMESP=22315>LOCKJiX — монопольный доступ для записи, </FONT> <li designtimesp=22316><FONT face=Tahoma size=2 DESIGNTIMESP=22317>LOCKJJN — отмена разделяемой или монопольной блокировки, </FONT> <li designtimesp=22318><FONT face=Tahoma size=2 DESIGNTIMESP=22319>LOCK_NB — блокировка не требуется. </FONT> </li> </ul> <P DESIGNTIMESP=22320><FONT face=Tahoma size=2 DESIGNTIMESP=22321>Если в необязательном третьем аргументе указывается значение TRUE, то таким образом выясняется возможность блокировки (состояние errno: EWOULDBLOCK). </FONT> </P> <P DESIGNTIMESP=22322><FONT face=Tahoma size=2 DESIGNTIMESP=22323>Возвращается TRUE или FALSE — если блокировка невозможна. </FONT> </P> <P DESIGNTIMESP=22324><FONT face=Tahoma size=2 DESIGNTIMESP=22325>В большинстве операционных систем функция реализована для уровня приложения, и при использовании на многопоточном сервере с API, подобным ISAPI, нельзя полностью полагаться на нее для защиты от сценариев РНР параллельно исполняемых различными «потоками» (threads) одного серверного модуля. Фактически для операционной системы «потоки» одного процесса неразличимы. </FONT> </P> <P class="Title_3" DESIGNTIMESP=22326><FONT face=Tahoma size=2 DESIGNTIMESP=22327>Ввод и вывод </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22328><FONT face=Tahoma size=2 DESIGNTIMESP=22329>fopen </FONT> </P> <P DESIGNTIMESP=22330><FONT face=Tahoma size=2 DESIGNTIMESP=22331>Открытие файла или URL </FONT> </P> <P DESIGNTIMESP=22332><FONT face=Tahoma size=2 DESIGNTIMESP=22333>int fopen (string filename, string mode [, int use_include_path]) </FONT> </P> <P DESIGNTIMESP=22334><FONT face=Tahoma size=2 DESIGNTIMESP=22335>Функция открывает указанный аргументом filename поток ввода/ вывода (файл) в режиме чтения/записи mode и возвращает назначенный для него дескриптор. </FONT> </P> <P DESIGNTIMESP=22336><FONT face=Tahoma size=2 DESIGNTIMESP=22337>Для того чтобы можно было открывать удаленные файлы (посредством протоколов http и ftp), необходимо, чтобы параметр конфшу-рации allow_url_fopen был разрешен (по умолчанию он разрешен). Эта способность РНР называется «URL fopen wrapper». В дальнейшем также станет возможно открывать сжатые файлы (gxip и bz2) аналогичным способом. </FONT> </P> <P DESIGNTIMESP=22338><FONT face=Tahoma size=2 DESIGNTIMESP=22339>Если строка пути filename начинается с «http://» (регистр не важен) и HTTP 1.0 доступ к указанному серверу возможен, то открывается сеанс связи (указанный URL посылается серверу с указанным в пути заголовком 'Host:' для разрешения имен виртуальных хостов) и указатель файла настраивается на текст, получаемый в ответ на запрос. Это не обрабатывает редиректы адреса HTTP, поэтому необходимо включать завершающие слеши для каталогов. Файл может быть открыт только для чтения. </FONT> </P> <P DESIGNTIMESP=22340><FONT face=Tahoma size=2 DESIGNTIMESP=22341>Если строка пути filename начинается с «ftp://» (регистр не важен), то файл запрашивается через протокол FTP. При этом сервер должен поддерживать пассивный метод ftp-передачи. Если это позволяет сервер, файл может быть открыт либо для чтения, либо для записи (но не одновременно). </FONT> </P> <P DESIGNTIMESP=22342><FONT face=Tahoma size=2 DESIGNTIMESP=22343>Если в аргументе filename указывается значение «php://stdin» или "php://stdout", "php://stderr", открывается соответствующий стандартный ноток. </FONT> </P> <P DESIGNTIMESP=22344><FONT face=Tahoma size=2 DESIGNTIMESP=22345>Если filename начинается с чего-либо иного, открывается соответствующий файл в локальной файловой системе. Можно указать необязательный аргумент use_include path со значением 1, и тогда файл будет искаться не только в текущем каталоге, но и в установленном по умолчанию (директивой include_path в файле php.ini) для подключаемых файлов. </FONT> </P> <P DESIGNTIMESP=22346><FONT face=Tahoma size=2 DESIGNTIMESP=22347>Если открыть файл (в заданном режиме) не удастся, то возвращается значение FALSE. </FONT> </P> <P DESIGNTIMESP=22348><FONT face=Tahoma size=2 DESIGNTIMESP=22349>Режим открытия mode может быть одним из следующих: </FONT> </P> <ul designtimesp=22350> <li designtimesp=22351><FONT face=Tahoma size=2 DESIGNTIMESP=22352>г — только для чтения; курсор файла устанавливается в (и последующее чтение производится с) начала файла; </FONT> <li designtimesp=22353><FONT face=Tahoma size=2 DESIGNTIMESP=22354>г+ — для чтения и записи; о г начала файла; </FONT> <li designtimesp=22355><FONT face=Tahoma size=2 DESIGNTIMESP=22356>w — только для записи «набело»; если файл существует, его содержимое удаляется, если не существует, то он создается; </FONT> <li designtimesp=22357><FONT face=Tahoma size=2 DESIGNTIMESP=22358>w+ — для чтения и записи «набело»; если файл существует, его содержимое удаляется, если не существует, то он создастся; </FONT> <li designtimesp=22359><FONT face=Tahoma size=2 DESIGNTIMESP=22360>а — только для дозаписи в конец; если файл существует, курсор устанавливается в его конец, если не существует, то он создается; </FONT> <li designtimesp=22361><FONT face=Tahoma size=2 DESIGNTIMESP=22362>• а+ — для чтения и дозаписи в конец; если файл существует, курсор устанавливается в его конец, если не существует, то он создается. </FONT> </li> </ul> <P DESIGNTIMESP=22363><FONT face=Tahoma size=2 DESIGNTIMESP=22364>В аргументе mode можно также указать символ b, что бывает полезно в системах, различающих двоичные (binary) и текстовые файлы1. Для других систем (например, Unix) это бесполезно и игнорируется. </FONT> </P> <P class="list" DESIGNTIMESP=22365><FONT face=Tahoma size=2 DESIGNTIMESP=22366> $fp - fopen ("/home/rasmus/file.txt". "г");<br designtimesp=22367> $fp = fopen ("/home/rasmus/file.gif". "wb"): < /FONT > </P> <P DESIGNTIMESP=22368><FONT face=Tahoma size=2 DESIGNTIMESP=22369>Различие между двоичными и текстовыми файлами о том, что конец первых определяется исходя из их размера, а вторых — по присутствию символа конца файла (EOF). </FONT> </P> <P class="list" DESIGNTIMESP=22370><FONT face=Tahoma size=2 DESIGNTIMESP=22371> $fp = fopen<br designtimesp=22372> ("http://www.php net/", "r"): <br designtimesp=22373> $fp = fopen<br designtimesp=22374> ("ftp;//user:password@example.com/". "w"); </FONT> </P> <P DESIGNTIMESP=22375><FONT face=Tahoma size=2 DESIGNTIMESP=22376>He забывайте, что для доступа к файлу необходимы соответствующие полномочия. </FONT> </P> <P DESIGNTIMESP=22377><FONT face=Tahoma size=2 DESIGNTIMESP=22378>В Windows обратные слеши должны быть двойными или заменяться на прямые, если строка пути заключена в двойные кавычки. </FONT> </P> <P class="list" DESIGNTIMESP=22379><FONT face=Tahoma size=2 DESIGNTIMESP=22380>$fp = fopen ("c:\\data\\info.txt". "r"): < /FONT > </P> <P DESIGNTIMESP=22381><FONT face=Tahoma size=2 DESIGNTIMESP=22382>Следующий пример открывает удаленный HTML-файл (по протоколу http) и выводит его заголовок: </FONT> </P> <P class="list" DESIGNTIMESP=22383><FONT face=Tahoma size=2 DESIGNTIMESP=22384> &lt;?php <br designtimesp=22385> Sfile = fopen ("http://www.php.nert/", "r"); <br designtimesp=22386> if (!$file) { <br designtimesp=22387> echo "^Невозможно открыть<br designtimesp=22388> удаленный файл.\n": <br designtimesp=22389> exit; \ i <br designtimesp=22390> while (Ifeof ($file)) { <br designtimesp=22391> fgets ($nle. 1024); <br designtimesp=22392> /* Заголовок и его теги должны <br designtimesp=22393> располагаться в одной строке */ <br designtimesp=22394> if (eregi ("&lt;titie&gt;( *)&lt;/title&gt;". <br designtimesp=22395> Sline. $out)) { $title = $out[l]; break. } <br designtimesp=22396> fclose($fiie); echo Stitle; ?&gt; </FONT> </P> <P DESIGNTIMESP=22397><FONT face=Tahoma size=2 DESIGNTIMESP=22398>Еще один пример демонстрирует открытие и запись в FTP-фапл (на самом деле для работы с FTP-файлами рекомендуется использовать специальные функции). </FONT> </P> <P class="list" DESIGNTIMESP=22399><FONT face=Tahoma size=2 DESIGNTIMESP=22400> &lt;?php <br designtimesp=22401> Sfile ' fopen <br designtimesp=22402> ("ftp;//ftp.php.net/inconiing/outpL:tfile". "w"). <br designtimesp=22403> if (!$file) { echo 'vp&gt; <br designtimesp=22404> Невозножно открыть удаленный <br designtimesp=22405> файл для записи.\n"; exit; <br designtimesp=22406> /* Запись в файл */ <br designtimesp=22407> fputs ($flle. "$HnP_USER_AGENT\n"); <br designtimesp=22408> fclose (Sfile). ?&gt; </FONT> <P DESIGNTIMESP=22409><FONT face=Tahoma size=2 DESIGNTIMESP=22410>Заметьте, что запись в конец FTP-файла не поддерживается (файл не должен существовать, а должен создаваться). Если для НТР-доступа необходим пароль (по умолчанию вход осуществляется под именем «anonymous» без пароля), то его можно указывать в строке адреса в виде: </FONT> </P> <P class="list" DESIGNTIMESP=22411><FONT face=Tahoma size=2 DESIGNTIMESP=22412> ' ftp : //user : password@f tp . exampl e . <br designtimesp=22413> com/path/f ile </FONT> </P> <P DESIGNTIMESP=22414><FONT face=Tahoma size=2 DESIGNTIMESP=22415>Такую же форму ввода пароля можно использовать и для протокола HTTP, когда требуется аутентификация типа Basic. </FONT> </P> <P DESIGNTIMESP=22416><FONT face=Tahoma size=2 DESIGNTIMESP=22417>См. также: fclose(), fsockopen(), socket_set_timeout() и popen(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22418><FONT face=Tahoma size=2 DESIGNTIMESP=22419>fclose </FONT> </P> <P DESIGNTIMESP=22420><FONT face=Tahoma size=2 DESIGNTIMESP=22421>Закрытие (дескриптора) файла int fclose (int fp) </FONT> </P> <P DESIGNTIMESP=22422><FONT face=Tahoma size=2 DESIGNTIMESP=22423>Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P DESIGNTIMESP=22424><FONT face=Tahoma size=2 DESIGNTIMESP=22425>Дескриптор файла fp должен быть возвращен при успешном открытии файла функцией fopen() или fsockopen(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22426><FONT face=Tahoma size=2 DESIGNTIMESP=22427>рореn</FONT> </P> <P DESIGNTIMESP=22428><FONT face=Tahoma size=2 DESIGNTIMESP=22429>Открытие дескриптора вывода процесса </FONT> </P> <P DESIGNTIMESP=22430><FONT face=Tahoma size=2 DESIGNTIMESP=22431>int рореп (string command, string mode) </FONT> </P> <P DESIGNTIMESP=22432><FONT face=Tahoma size=2 DESIGNTIMESP=22433>Запускает процесс приложения command и возвращает дескриптор потока ввода/вывода, назначенный ему в режиме mode (аналогично fopen(J). При ошибке возвращает FALSE. Дескриптор может в дальнейшем использоваться функциями fgets(), fgetss() и fputs(), а затем закрыт pclose(). </FONT> </P> <P class="list" DESIGNTIMESP=22434><FONT face=Tahoma size=2 DESIGNTIMESP=22435>$fp = poptn ( VtTn/ls" "r"}; < /FONT > </P> <P DESIGNTIMESP=22436><FONT face=Tahoma size=2 DESIGNTIMESP=22437>См. также pclose(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22438><FONT face=Tahoma size=2 DESIGNTIMESP=22439>pclose </FONT> </P> <P DESIGNTIMESP=22440><FONT face=Tahoma size=2 DESIGNTIMESP=22441>Закрытие дескриптора процесса </FONT> </P> <P DESIGNTIMESP=22442><FONT face=Tahoma size=2 DESIGNTIMESP=22443>int pclose (int fp) </FONT> </P> <P DESIGNTIMESP=22444><FONT face=Tahoma size=2 DESIGNTIMESP=22445>Закрывает дескриптор процесса (он должен быть предварительно успешно создан функцией рореп()). </FONT> </P> <P DESIGNTIMESP=22446><FONT face=Tahoma size=2 DESIGNTIMESP=22447>Возвращае r-код завершения процесса. </FONT> </P> <P DESIGNTIMESP=22448><FONT face=Tahoma size=2 DESIGNTIMESP=22449>См. также рореn(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22450><FONT face=Tahoma size=2 DESIGNTIMESP=22451>fstat </FONT> </P> <P DESIGNTIMESP=22452><FONT face=Tahoma size=2 DESIGNTIMESP=22453>Получение информации о файле через дескриптор </FONT> </P> <P DESIGNTIMESP=22454><FONT face=Tahoma size=2 DESIGNTIMESP=22455>array fstat (int fp) </FONT> </P> <P DESIGNTIMESP=22456><FONT face=Tahoma size=2 DESIGNTIMESP=22457>Возвращает массив с информацией о файле аналогично функции stat(). но отличается от нее тем, что принимает в качестве аргумента дескриптор успешно открытого файла вместо его имени. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22458><FONT face=Tahoma size=2 DESIGNTIMESP=22459>fgetc </FONT> </P> <P DESIGNTIMESP=22460><FONT face=Tahoma size=2 DESIGNTIMESP=22461>Чтение символа из файла </FONT> </P> <P DESIGNTIMESP=22462><FONT face=Tahoma size=2 DESIGNTIMESP=22463>string fgetc (int fp) </FONT> </P> <P DESIGNTIMESP=22464><FONT face=Tahoma size=2 DESIGNTIMESP=22465>Возвращает строку, содержащую один символ из файла, имеющего дескриптор fp (ранее возвращенный функцией fopen(), popen() или fsockopen()). Если это символ EOF (указатель конца файла), возвращает FALSE. </FONT> </P> <P DESIGNTIMESP=22466><FONT face=Tahoma size=2 DESIGNTIMESP=22467>См. также: fread(), fopen(), popen(), fsockopen() и fgets(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22468><FONT face=Tahoma size=2 DESIGNTIMESP=22469>fgets </FONT> </P> <P DESIGNTIMESP=22470><FONT face=Tahoma size=2 DESIGNTIMESP=22471>Чтение строки из файла </FONT> </P> <P DESIGNTIMESP=22472><FONT face=Tahoma size=2 DESIGNTIMESP=22473>string fgets (int fp, int length) </FONT> </P> <P DESIGNTIMESP=22474><FONT face=Tahoma size=2 DESIGNTIMESP=22475>Возвращает строку из файла, имеющего дескриптор fp (ранее возвращенный функцией fopen(), popen() или fsockopen()). Длина возвращаемой строки указывается аргументом length. Если в строке встречается символ EOF (указатель конца файла) или «\n» (конец строки), то возвращаются все символы вплоть до этого (длина строки тогда может быть менее length). При ошибке возвращает FALSE. </FONT> </P> <P class="list" DESIGNTIMESP=22476><FONT face=Tahoma size=2 DESIGNTIMESP=22477> $fd = fopen ("/tmp/inputfile.txt". "r"):<br designtimesp=22478> while (Ifeof ($fd)) { <br designtimesp=22479> $buffer = fgets($fd. 4096); <br designtimesp=22480> echo Sbuffer; } fclose ($fd): </FONT> </P> <P DESIGNTIMESP=22481><FONT face=Tahoma size=2 DESIGNTIMESP=22482>См. также: fread(), fopen(), popen(), fgetc(), fsockopen() и socket_set_ timeout(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22483><FONT face=Tahoma size=2 DESIGNTIMESP=22484>fgetss </FONT> </P> <P DESIGNTIMESP=22485><FONT face=Tahoma size=2 DESIGNTIMESP=22486>Чтение строки из файла и удаление из нее HTML-тегов </FONT> </P> <P DESIGNTIMESP=22487><FONT face=Tahoma size=2 DESIGNTIMESP=22488>string fgetss (int fp, int length [, string allowable_tags]) </FONT> </P> <P DESIGNTIMESP=22489><FONT face=Tahoma size=2 DESIGNTIMESP=22490>Функция подобна fgets(), за исключением того, что она также удаляет любые HTML- и PHP-теги из получаемого текста. В аргументе allowable_tags можно указать, какие теги не следует удалять. </FONT> </P> <P DESIGNTIMESP=22491><FONT face=Tahoma size=2 DESIGNTIMESP=22492>См. также: fgets(), fopen(), fsockopen(), popen() и strip_tags(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22493><FONT face=Tahoma size=2 DESIGNTIMESP=22494>fgetcsv </FONT> </P> <P DESIGNTIMESP=22495><FONT face=Tahoma size=2 DESIGNTIMESP=22496>Чтение строки файла и разделение ее на поля CSV </FONT> </P> <P DESIGNTIMESP=22497><FONT face=Tahoma size=2 DESIGNTIMESP=22498>array fgetcsv (int fp, int length [, string delimiter]) </FONT> </P> <P DESIGNTIMESP=22499><FONT face=Tahoma size=2 DESIGNTIMESP=22500>Функция сходна с fgets(), но после чтения она разделяет полученную строку на поля (согласно формату CSV) и возвращает их в элементах массива. Разделителем полей считается запятая либо другой символ, который можно указать в аргументе delimiter. </FONT> </P> <P DESIGNTIMESP=22501><FONT face=Tahoma size=2 DESIGNTIMESP=22502>Аргумент fp должен быть дескриптором успешно открытого файла (возвращенный функциями fopen(), popen() или fsockopen()). </FONT> </P> <P DESIGNTIMESP=22503><FONT face=Tahoma size=2 DESIGNTIMESP=22504>Аргумент length должен быть больше, чем самая длинная строка CSV-файла (включая завершающие символы строки). </FONT> </P> <P DESIGNTIMESP=22505><FONT face=Tahoma size=2 DESIGNTIMESP=22506>Возвращает FALSE при ошибке (которой также считается непредвиденный конец файла). Часто в CSV-файлах признаком конца файла считается пустая строка, которая будет возвращена в виде массива, содержащего один нулевой элемент, и это не будет считаться ошибкой. </FONT> </P> <P class="list" DESIGNTIMESP=22507><FONT face=Tahoma size=2 DESIGNTIMESP=22508> $l"OW = 1: <br designtimesp=22509> $fp = fopen ("test.csv"."r"). <br designtimesp=22510> while<br designtimesp=22511> (Sdata = fgetcsv ($fp. 1000. ".")) {<br designtimesp=22512> $num = count ($data); <br designtimesp=22513> print "&lt;p&gt;<br designtimesp=22514> Jnura fields in line $row: &lt;br&gt;"; <br designtimesp=22515> $row++: <br designtimesp=22516> for ($c=0: $c&lt;$num: Ic++)<br designtimesp=22517> { print $data[$c] "&lt;br&gt;"; <br designtimesp=22518> } } fclose ($fp): </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22519><FONT face=Tahoma size=2 DESIGNTIMESP=22520>file </FONT> </P> <P DESIGNTIMESP=22521><FONT face=Tahoma size=2 DESIGNTIMESP=22522>Чтение всего файла в массив </FONT> </P> <P DESIGNTIMESP=22523><FONT face=Tahoma size=2 DESIGNTIMESP=22524>array file (string filename [, int use_include_path]) </FONT> </P> <P DESIGNTIMESP=22525><FONT face=Tahoma size=2 DESIGNTIMESP=22526>Функция подобна readfile(), но строки файла возвращаются в массиве. Концом строки считается символ «\п» (он также возвращается). </FONT> </P> <P DESIGNTIMESP=22527><FONT face=Tahoma size=2 DESIGNTIMESP=22528>Можно указать необязательный аргумент use_include_path со значением 1, и тогда файл будет искаться не только в текущем каталоге, но и в установленном по умолчанию (директивой include_path в файле php.ini) для подключаемых файлов. </FONT> </P> <P class="list" DESIGNTIMESP=22529><FONT face=Tahoma size=2 DESIGNTIMESP=22530> &lt;?php <br designtimesp=22531> // прочитать web-страницу в массив<br designtimesp=22532> и распечатать Sfcontents = file<br designtimesp=22533> ('http://www.php.net'): while (list (Slinejmm. Sline) <br designtimesp=22534> = each ($fcontents)) <br designtimesp=22535> { echo "&lt;b&gt;Line $line_num:&lt;/b&gt; " . <br designtimesp=22536> htmlspecialchars ($line) . <br designtimesp=22537> "&lt;br&gt;\n", } <br designtimesp=22538> // прочитать в одну строку <br designtimesp=22539> $fcontents - join (". file <br designtimesp=22540> ('http://www.php.net')): ?&gt; </FONT> </P> <P DESIGNTIMESP=22541><FONT face=Tahoma size=2 DESIGNTIMESP=22542>См. также: readfile(), fopen(), fsockopen() и popen(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22543><FONT face=Tahoma size=2 DESIGNTIMESP=22544>fread </FONT> </P> <P DESIGNTIMESP=22545><FONT face=Tahoma size=2 DESIGNTIMESP=22546>Чтение файла </FONT> </P> <P DESIGNTIMESP=22547><FONT face=Tahoma size=2 DESIGNTIMESP=22548>string fread (int fp, int length) </FONT> </P> <P DESIGNTIMESP=22549><FONT face=Tahoma size=2 DESIGNTIMESP=22550>Возвращается строка, представляющая последовательность байтов файла (указанного дескриптором fp) длиной length. Чтение прекращается также, если встречается символ EOF. </FONT> </P> <P class="list" DESIGNTIMESP=22551><FONT face=Tahoma size=2 DESIGNTIMESP=22552>$filename = "/usr/local/something.txt"; <br designtimesp=22553> $fd - fopen (Sfilename. "r").<br designtimesp=22554> $contents = fread ($fd, filesize (Sfllename)):<br designtimesp=22555> fclose ($fd): </FONT> </P> <P DESIGNTIMESP=22556><FONT face=Tahoma size=2 DESIGNTIMESP=22557>См. также: fwrite(), fopen(), fsockopen(), popen(), fgets(), fgetss(), fscanf(), file(), fpassthru(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22558><FONT face=Tahoma size=2 DESIGNTIMESP=22559>readfile </FONT> </P> <P DESIGNTIMESP=22560><FONT face=Tahoma size=2 DESIGNTIMESP=22561>Вывод файла </FONT> </P> <P DESIGNTIMESP=22562><FONT face=Tahoma size=2 DESIGNTIMESP=22563>int readfile (string filename [, int use_include_path]) </FONT> </P> <P DESIGNTIMESP=22564><FONT face=Tahoma size=2 DESIGNTIMESP=22565>Функция выполняет последовательно три операции. Открывает файл, так же как функция fopen() (режим открытия не указывается, так как он используется только для чтения). Читает и выводит все содержимое файла в стандартный поток вывода и закрывает файл. </FONT> </P> <P DESIGNTIMESP=22566><FONT face=Tahoma size=2 DESIGNTIMESP=22567>Отличие этой функции от директив include(), require() в том, что она возвращает количество выведенных байтов (или значение FALSE при ошибке). В случае возникновения ошибки также выводится стандартное уведомление (если, конечно, при вызове функции сообщения об ошибках не блокируются, например, так: @readfile). </FONT> </P> <P DESIGNTIMESP=22568><FONT face=Tahoma size=2 DESIGNTIMESP=22569>См. также: fpassthru(), file(), fopen(), include(), require(), virtual(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22570><FONT face=Tahoma size=2 DESIGNTIMESP=22571>fpassthru </FONT> </P> <P DESIGNTIMESP=22572><FONT face=Tahoma size=2 DESIGNTIMESP=22573>Вывод содержимого файла int fpassthru (int fp) </FONT> </P> <P DESIGNTIMESP=22574><FONT face=Tahoma size=2 DESIGNTIMESP=22575>Читает содержимое файла с дескриптором (пока не встретится символ EOF) и выводит его в стандартный поток вывода. При ошибке возвращается FALSE. </FONT> </P> <P DESIGNTIMESP=22576><FONT face=Tahoma size=2 DESIGNTIMESP=22577>Дескриптор должен быть возвращен при успешном открытии файла функцией fopen(), popen() или fsockopen(). После вывода файл автоматически закрывается (и дескриптор становится недействителен). </FONT> </P> <P DESIGNTIMESP=22578><FONT face=Tahoma size=2 DESIGNTIMESP=22579>Для простого чтения и вывода файла (если не требуется предварительная запись в него) используйте функцию readfile(). </FONT> </P> <P DESIGNTIMESP=22580><FONT face=Tahoma size=2 DESIGNTIMESP=22581>См. также: readfile(), fopen(), popen() и fsockopen()</FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22582><FONT face=Tahoma size=2 DESIGNTIMESP=22583>fscanf </FONT> </P> <P DESIGNTIMESP=22584><FONT face=Tahoma size=2 DESIGNTIMESP=22585>Форматированный ввод из файла </FONT> </P> <P DESIGNTIMESP=22586><FONT face=Tahoma size=2 DESIGNTIMESP=22587>mixed fscanf (int handle, string format [, string varl...]) </FONT> </P> <P DESIGNTIMESP=22588><FONT face=Tahoma size=2 DESIGNTIMESP=22589>Функция подобна sscanf(), но она читает данные из файла (указанного дескриптором handle) и интерпретирует их согласно формату, указанному аргументом format. Если в функции указываются только два аргумента, извлеченные данные возвращаются в массиве; в противном случае необходимо указывать ссылки на переменные, в которых следует сохранить значения (тогда функция возвращает число инициализированных переменных). </FONT> </P> <P class="list" DESIGNTIMESP=22590><FONT face=Tahoma size=2 DESIGNTIMESP=22591> $fp = fopen ("users.txt"."г"). <br designtimesp=22592> while<br designtimesp=22593> (Suserinfo = fscanf ($fp. "ls\Ws\Us\n")) { <br designtimesp=22594> list ($name. Sprofession, <br designtimesp=22595> Scountrycode) = lusennfo; <br designtimesp=22596> //... делаем что-то со значениями <br designtimesp=22597> } fclose($fp), </FONT> </P> <P DESIGNTIMESP=22598><FONT face=Tahoma size=2 DESIGNTIMESP=22599>Содержимое файла users.txt </FONT> </P> <P class="list" DESIGNTIMESP=22600><FONT face=Tahoma size=2 DESIGNTIMESP=22601> Javier argonaut pe<br designtimesp=22602> hiroshi sculptor jp <br designtimesp=22603> robert slacker us </FONT> </P> <P DESIGNTIMESP=22604><FONT face=Tahoma size=2 DESIGNTIMESP=22605>См. также: fread(), fgets(), fgetss(), sscanf(), printf() и sprintf(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22606><FONT face=Tahoma size=2 DESIGNTIMESP=22607>fwrite </FONT> </P> <P DESIGNTIMESP=22608><FONT face=Tahoma size=2 DESIGNTIMESP=22609>Запись в файл </FONT> </P> <P DESIGNTIMESP=22610><FONT face=Tahoma size=2 DESIGNTIMESP=22611>int fwrite (int fp. string string [, int length]) </FONT> </P> <P DESIGNTIMESP=22612><FONT face=Tahoma size=2 DESIGNTIMESP=22613>Записывает содержимое строки string в файловый ноток (на который указывает дескриптор fp). При указании аргумента length производится запись только указанного числа байтов (но не большего, чем содержится в строке), а также игнорируется параметр конфигурации magic_quotes_runtime (и слеши не исключаются из записываемой строки). </FONT> </P> <P DESIGNTIMESP=22614><FONT face=Tahoma size=2 DESIGNTIMESP=22615>См. также: fread(), fopen(), fsockopen(), popen() и fputs(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22616><FONT face=Tahoma size=2 DESIGNTIMESP=22617>fputs </FONT> </P> <P DESIGNTIMESP=22618><FONT face=Tahoma size=2 DESIGNTIMESP=22619>Синоним функции fwrite </FONT> </P> <P DESIGNTIMESP=22620><FONT face=Tahoma size=2 DESIGNTIMESP=22621>int fputs (int fp, string str [, int length]) </FONT> </P> <P DESIGNTIMESP=22622><FONT face=Tahoma size=2 DESIGNTIMESP=22623>Аргумент длины записываемой строки length может не указываться (тогда строка str записывается в файл целиком). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22624><FONT face=Tahoma size=2 DESIGNTIMESP=22625>fflush </FONT> </P> <P DESIGNTIMESP=22626><FONT face=Tahoma size=2 DESIGNTIMESP=22627>Запись стандартного вывода в файл int fflush (int fp) </FONT> </P> <P DESIGNTIMESP=22628><FONT face=Tahoma size=2 DESIGNTIMESP=22629>Весь буферизированный вывод записывается в открытый файл, на который указывает дескриптор fp. Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22630><FONT face=Tahoma size=2 DESIGNTIMESP=22631>feof </FONT> </P> <P DESIGNTIMESP=22632><FONT face=Tahoma size=2 DESIGNTIMESP=22633>Проверка достижения конца файла </FONT> </P> <P DESIGNTIMESP=22634><FONT face=Tahoma size=2 DESIGNTIMESP=22635>int feof (int fp) </FONT> </P> <P DESIGNTIMESP=22636><FONT face=Tahoma size=2 DESIGNTIMESP=22637>Возвращает TRUE, если курсор файла указывает на символ EOF или возникает ошибка; иначе — FALSE. </FONT> </P> <P DESIGNTIMESP=22638><FONT face=Tahoma size=2 DESIGNTIMESP=22639>Аргумент fp должен быть дескриптором успешно открытого файла (возвращенный функциями fopen(), popen() или fsockopen()). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22640><FONT face=Tahoma size=2 DESIGNTIMESP=22641>ftell </FONT> </P> <P DESIGNTIMESP=22642><FONT face=Tahoma size=2 DESIGNTIMESP=22643>Проверка позиции курсора файла </FONT> </P> <P DESIGNTIMESP=22644><FONT face=Tahoma size=2 DESIGNTIMESP=22645>int ftell (int fp) </FONT> </P> <P DESIGNTIMESP=22646><FONT face=Tahoma size=2 DESIGNTIMESP=22647>Возвращает позицию курсора файла, на который указывает дескриптор fp, то есть то смещение от начала файлового потока, в которое производится запись или осуществляется чтение. При ошибке возвращает FALSE. </FONT> </P> <P DESIGNTIMESP=22648><FONT face=Tahoma size=2 DESIGNTIMESP=22649>Аргумент fp должен быть дескриптором успешно открытого файла (возвращенный функциями fopen(), popen()). </FONT> </P> <P DESIGNTIMESP=22650><FONT face=Tahoma size=2 DESIGNTIMESP=22651>См. также: fopen(), popen(). fseek() и rewind(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22652><FONT face=Tahoma size=2 DESIGNTIMESP=22653>fseek </FONT> </P> <P DESIGNTIMESP=22654><FONT face=Tahoma size=2 DESIGNTIMESP=22655>Установка позиции курсора файла </FONT> </P> <P DESIGNTIMESP=22656><FONT face=Tahoma size=2 DESIGNTIMESP=22657>int fseek (int fp, int offset [. int whence]) </FONT> </P> <P DESIGNTIMESP=22658><FONT face=Tahoma size=2 DESIGNTIMESP=22659>Новая позиция курсора файла указывается аргументом offset и измеряется в байтах от места, указанного аргументом whence, который может принимать одно из значений: </FONT> </P> <ul designtimesp=22660> <li designtimesp=22661><FONT face=Tahoma size=2 DESIGNTIMESP=22662>SEEK_SET — от начала файла; </FONT> <li designtimesp=22663><FONT face=Tahoma size=2 DESIGNTIMESP=22664>SEEK_CUR — от текущей позиции курсора; </FONT> <li designtimesp=22665><FONT face=Tahoma size=2 DESIGNTIMESP=22666>SEEK_ENO — от конца файла. </FONT> </li> </ul> <P DESIGNTIMESP=22667><FONT face=Tahoma size=2 DESIGNTIMESP=22668>Если аргумент whence не указывается, смещение вычисляется от начала файла. При ошибке возвращается -1, иначе 0. Заметьте: указание смещения после символа EOF не считается ошибкой. </FONT> </P> <P DESIGNTIMESP=22669><FONT face=Tahoma size=2 DESIGNTIMESP=22670>Дескриптор файла fp должен быть возвращен успешным вызовом функции fopen(). С файлами, открытыми через протокол HTTP или FTP, функция не работает. </FONT> </P> <P DESIGNTIMESP=22671><FONT face=Tahoma size=2 DESIGNTIMESP=22672>См. также: ftell() и rewind(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22673><FONT face=Tahoma size=2 DESIGNTIMESP=22674>rewind </FONT> </P> <P DESIGNTIMESP=22675><FONT face=Tahoma size=2 DESIGNTIMESP=22676>Установка курсора на начало файлового потока </FONT> </P> <P DESIGNTIMESP=22677><FONT face=Tahoma size=2 DESIGNTIMESP=22678>int rewind (int fp) </FONT> </P> <P DESIGNTIMESP=22679><FONT face=Tahoma size=2 DESIGNTIMESP=22680>Функция эквивалентна вызову fseek(fp, 0). При ошибке возвращается 0. </FONT> </P> <P DESIGNTIMESP=22681><FONT face=Tahoma size=2 DESIGNTIMESP=22682>См. также: fseek() и ftel(). </FONT> </P> <P class="Title_2" DESIGNTIMESP=22683> <a name="2" designtimesp=22684></a><FONT face=Tahoma size=2 DESIGNTIMESP=22685>Работа с архивами Zlib </FONT> </P> <P DESIGNTIMESP=22686><FONT face=Tahoma size=2 DESIGNTIMESP=22687>Модуль zlib (http://www.info-zip.org/pub/infozip/zlib/), разработанный Jean-loup Gailly и Mark Adler, позволяет производить операции файлового ввода-вывода в файлах, архивированных (сжатых) методом gzip (.gz). В этом модуле РНР используется библиотека zlib версии 1.0.9. Модуль содержит большую часть родственных функций файловой системы (с префиксом gz), которые могут работать как с обычными, так и с архивными файлами (но не с секстами). </FONT> </P> <P DESIGNTIMESP=22688><FONT face=Tahoma size=2 DESIGNTIMESP=22689>Для текущей версии РНР поддержка этих функций должна быть косвенно включена в обычные функции файловой системы. Таким образом, при подключении модуля zlib файловые функции (с помощью метода, называемого fopen-vvrapper для .gz-файлов) могут также просто работать с архивными файлами, как и с FTP-файлами. Для этого в строке имени файла (пути к нему) нужно указывать специальный префикс 'zlib:', подобно указанию URL для доступа к FTP-файлам. </FONT> </P> <P class="list" DESIGNTIMESP=22690><FONT face=Tahoma size=2 DESIGNTIMESP=22691> &lt;?php <br designtimesp=22692> $filename='C:\ZZZ.gz1. <br designtimesp=22693> // открыть файл для записи с <br designtimesp=22694> максимальным сжатием <br designtimesp=22695> $zp - gzopen($filename. "w9"): <br designtimesp=22696> // записать строку в файл <br designtimesp=22697> $s =- "Only a test. test. test. test,<br designtimesp=22698> test test. test. test!\n" <br designtimesp=22699> g?wnte($zp. $s); <br designtimesp=22700> gzclose(SzD). // закрыть файл <br designtimesp=22701> $zp = gzopen($filename. "г"). <br designtimesp=22702> print gzread($zp. 3):// прочитать<br designtimesp=22703> З символа gzpassthru($zp): <br designtimesp=22704> // выводить содержимое до <br designtimesp=22705> конца файла и закрыть его <br designtimesp=22706> // еще раз вывести содержимое файла <br designtimesp=22707> if (rea&gt;1gzfile($filename) != strlen($s))<br designtimesp=22708> { echo "Error with zlib functions!".} ?&gt; </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22709><FONT face=Tahoma size=2 DESIGNTIMESP=22710>gzcompress </FONT> </P> <P DESIGNTIMESP=22711><FONT face=Tahoma size=2 DESIGNTIMESP=22712>Сжатие строки методом Gz </FONT> </P> <P DESIGNTIMESP=22713><FONT face=Tahoma size=2 DESIGNTIMESP=22714>string gzcompress (string data [, int level]) </FONT> </P> <P DESIGNTIMESP=22715><FONT face=Tahoma size=2 DESIGNTIMESP=22716>Аргументом level можно указать степень сжатия (от минимального О до 9). </FONT> </P> <P DESIGNTIMESP=22717><FONT face=Tahoma size=2 DESIGNTIMESP=22718>См. также gzuncompress(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22719><FONT face=Tahoma size=2 DESIGNTIMESP=22720>gzuncompress </FONT> </P> <P DESIGNTIMESP=22721><FONT face=Tahoma size=2 DESIGNTIMESP=22722>Распаковка gz-сжатой строки </FONT> </P> <P DESIGNTIMESP=22723><FONT face=Tahoma size=2 DESIGNTIMESP=22724>string gzuncompress (string data [, int length]) </FONT> </P> <P DESIGNTIMESP=22725><FONT face=Tahoma size=2 DESIGNTIMESP=22726>Возвращает оригинальную строку данных, сжатую ранее функцией gzcompress(), или FALSE в случае ошибки. Ошибка может возникнуть (помимо случая поврежденных данных), если при распаковке размер строки увеличивается более чем в 256 раз или становится больше, чем указано в необязательном аргументе length. </FONT> </P> <P DESIGNTIMESP=22727><FONT face=Tahoma size=2 DESIGNTIMESP=22728>См. также gzcompress(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22729><FONT face=Tahoma size=2 DESIGNTIMESP=22730>readgzfile </FONT> </P> <P DESIGNTIMESP=22731><FONT face=Tahoma size=2 DESIGNTIMESP=22732>Вывод gz-файла </FONT> </P> <P DESIGNTIMESP=22733><FONT face=Tahoma size=2 DESIGNTIMESP=22734>int readgzfile (string filename [, int use_include_path]) </FONT> </P> <P DESIGNTIMESP=22735><FONT face=Tahoma size=2 DESIGNTIMESP=22736>Читает файл filename, распаковывает его и выводит (в стандартный поток вывода). Функция может также работать с обычными файлами (тогда распаковка не производится). </FONT> </P> <P DESIGNTIMESP=22737><FONT face=Tahoma size=2 DESIGNTIMESP=22738>Возвращает число выведенных байтов или FALSE — в случае ошибки. В случае ошибки также выводится сообщение об ошибке (если только функция не была вызвана как Preadgzfile). </FONT> </P> <P DESIGNTIMESP=22739><FONT face=Tahoma size=2 DESIGNTIMESP=22740>Необязательный аргумент include_path можно использовать (если его значение равно 1), чтобы поиск файла также производился в установленных параметром include_path каталогах по умолчанию. </FONT> </P> <P DESIGNTIMESP=22741><FONT face=Tahoma size=2 DESIGNTIMESP=22742>См. также: gzpassthru(), gzfile() и gzopen(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22743><FONT face=Tahoma size=2 DESIGNTIMESP=22744>gzfile </FONT> </P> <P DESIGNTIMESP=22745><FONT face=Tahoma size=2 DESIGNTIMESP=22746>Чтение всего gz-файла в массив </FONT> </P> <P DESIGNTIMESP=22747><FONT face=Tahoma size=2 DESIGNTIMESP=22748>array gzfile (string filename [, Int use_include_path]) </FONT> </P> <P DESIGNTIMESP=22749><FONT face=Tahoma size=2 DESIGNTIMESP=22750>Функция подобна readgzfi'le(), но распакованные данные не выводятся, а возвращаются в виде массива. </FONT> </P> <P DESIGNTIMESP=22751><FONT face=Tahoma size=2 DESIGNTIMESP=22752>См. также: readgzfile() и gzopen(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22753><FONT face=Tahoma size=2 DESIGNTIMESP=22754>gzopen </FONT> </P> <P DESIGNTIMESP=22755><FONT face=Tahoma size=2 DESIGNTIMESP=22756>Открытие gz-файла </FONT> </P> <P DESIGNTIMESP=22757><FONT face=Tahoma size=2 DESIGNTIMESP=22758>int gzopen (string filename, string mode [, int use_include_path]) </FONT> </P> <P DESIGNTIMESP=22759><FONT face=Tahoma size=2 DESIGNTIMESP=22760>Функция сходна с fopen(), но она работает с файлами gzip (.gz). Аргумент,mode может быть таким же, как в функции fopen() ("rb" или "wb"), но может также включать цифру, указывающую на степень используемого сжатия (например: "wb9-") и метод: f для фильтруемых данных (например: "wb6f"), h -для компрессии Хаффмана ("wblh"). Описание параметра deflatelnit2 смотрите в файле zlib.h. </FONT> </P> <P DESIGNTIMESP=22761><FONT face=Tahoma size=2 DESIGNTIMESP=22762>Функция также может использоваться для открытия обычного файла; в таком случае gzread() будет читать данные файла без декомпрессии. </FONT> </P> <P DESIGNTIMESP=22763><FONT face=Tahoma size=2 DESIGNTIMESP=22764>Функция возвращает дескриптор открытого файла (или FALSE в случае ошибки), используя который, можно осуществлять операции ввода-вывода, и сжатие и распаковка данных будут осуществляться автоматически. </FONT> </P> <P DESIGNTIMESP=22765><FONT face=Tahoma size=2 DESIGNTIMESP=22766>Необязательный аргумент include_path можно использовать (если его значение равно 1), чтобы поиск файла также производился в установленных параметром include_path каталогах по умолчанию. </FONT> </P> <P class="list" DESIGNTIMESP=22767><FONT face=Tahoma size=2 DESIGNTIMESP=22768>$fp = gzopen ("/tmp/file gz". "r"). < /FONT > </P> <P DESIGNTIMESP=22769><FONT face=Tahoma size=2 DESIGNTIMESP=22770>См. также gzclose(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22771><FONT face=Tahoma size=2 DESIGNTIMESP=22772>gzclose </FONT> </P> <P DESIGNTIMESP=22773><FONT face=Tahoma size=2 DESIGNTIMESP=22774>Закрытие gz-файла int gzclose (int zp) </FONT> </P> <P DESIGNTIMESP=22775><FONT face=Tahoma size=2 DESIGNTIMESP=22776>Закрывает gz-файл, дескриптор которого zp должен был быть ранее успешно возвращен функцией gzopen(). Возвращает TRUE или FALSE - при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22777><FONT face=Tahoma size=2 DESIGNTIMESP=22778>gzread </FONT> </P> <P DESIGNTIMESP=22779><FONT face=Tahoma size=2 DESIGNTIMESP=22780>Чтение последовательности символов из gz-файла </FONT> </P> <P DESIGNTIMESP=22781><FONT face=Tahoma size=2 DESIGNTIMESP=22782>string gzread (int zp, int length) </FONT> </P> <P DESIGNTIMESP=22783><FONT face=Tahoma size=2 DESIGNTIMESP=22784>Число читаемых байтов указывается аргументом length. Дескриптор zp должен быть ранее успешно возвращен функцией gzopen(). Чтение прекращается, когда будет прочитано length распакованных байтов или если будет обнаружен символ конца файла EOF. </FONT> </P> <P class="list" DESIGNTIMESP=22785><FONT face=Tahoma size=2 DESIGNTIMESP=22786>Sfilename = <br designtimesp=22787> "/usr/local/something txt.gz": Szd = <br designtimesp=22788> gzopen (Sfilename. "r"). Scontents = <br designtimesp=22789> gzread (Szd. 10000). gzclose (Szd); </FONT> </P> <P DESIGNTIMESP=22790><FONT face=Tahoma size=2 DESIGNTIMESP=22791>См. также: gzwrite(), gzopen(), gzgets(), gzgetss(), gzfile() и gzpassthru(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22792><FONT face=Tahoma size=2 DESIGNTIMESP=22793>gzgetc </FONT> </P> <P DESIGNTIMESP=22794><FONT face=Tahoma size=2 DESIGNTIMESP=22795>Чтение символа из gz-файла </FONT> </P> <P DESIGNTIMESP=22796><FONT face=Tahoma size=2 DESIGNTIMESP=22797>string gzgetc (int zp) </FONT> </P> <P DESIGNTIMESP=22798><FONT face=Tahoma size=2 DESIGNTIMESP=22799>Возвращает строку, содержащую единственный (распакованный) символ файла, имеющего дескриптор zp. Если встречается символ EOF, то возвращается FALSE (так же как функцией gzeof()). </FONT> </P> <P DESIGNTIMESP=22800><FONT face=Tahoma size=2 DESIGNTIMESP=22801>Дескриптор zp должен быть ранее успешно возвращен функцией gzopen(). </FONT> </P> <P DESIGNTIMESP=22802><FONT face=Tahoma size=2 DESIGNTIMESP=22803>См. также: gzopen() и gzgets(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22804><FONT face=Tahoma size=2 DESIGNTIMESP=22805>gzgets </FONT> </P> <P DESIGNTIMESP=22806><FONT face=Tahoma size=2 DESIGNTIMESP=22807>Чтение строки </FONT> </P> <P DESIGNTIMESP=22808><FONT face=Tahoma size=2 DESIGNTIMESP=22809>string gzgets (int zp, int length) </FONT> </P> <P DESIGNTIMESP=22810><FONT face=Tahoma size=2 DESIGNTIMESP=22811>Возвращает распакованную строку gz-файла, имеющего дескриптор zp. </FONT> </P> <P DESIGNTIMESP=22812><FONT face=Tahoma size=2 DESIGNTIMESP=22813>Чтение прекращается, когда будет прочитано length-1 распакованных байтов, если будет обнаружен символ конца файла EOF или встретится символ конца строки. </FONT> </P> <P DESIGNTIMESP=22814><FONT face=Tahoma size=2 DESIGNTIMESP=22815>При ошибке возвращает FALSE. </FONT> </P> <P DESIGNTIMESP=22816><FONT face=Tahoma size=2 DESIGNTIMESP=22817>Дескриптор zp должен быть ранее успешно возвращен функцией gzopen(). </FONT> </P> <P DESIGNTIMESP=22818><FONT face=Tahoma size=2 DESIGNTIMESP=22819>См. также: gzopen(), gzgetc() и fgets(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22820><FONT face=Tahoma size=2 DESIGNTIMESP=22821>gzgetss </FONT> </P> <P DESIGNTIMESP=22822><FONT face=Tahoma size=2 DESIGNTIMESP=22823>Аналог gzgets, удаляющий теги HTML и PHP из текста </FONT> </P> <P DESIGNTIMESP=22824><FONT face=Tahoma size=2 DESIGNTIMESP=22825>string gzgetss (int zp, int length [, string allowablejtags]) </FONT> </P> <P DESIGNTIMESP=22826><FONT face=Tahoma size=2 DESIGNTIMESP=22827>Необязательным аргументом можно указать, какие теги не следует удалять. </FONT> </P> <P DESIGNTIMESP=22828><FONT face=Tahoma size=2 DESIGNTIMESP=22829>См. также: gzgets(), gzopen(), strip_tags(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22830><FONT face=Tahoma size=2 DESIGNTIMESP=22831>gzpassthru </FONT> </P> <P DESIGNTIMESP=22832><FONT face=Tahoma size=2 DESIGNTIMESP=22833>Вывод всего содержимого gz-файла до его конца </FONT> </P> <P DESIGNTIMESP=22834><FONT face=Tahoma size=2 DESIGNTIMESP=22835>int gzpassthru (int zp) </FONT> </P> <P DESIGNTIMESP=22836><FONT face=Tahoma size=2 DESIGNTIMESP=22837>Читает (распаковывая) gz-файл с дескриптором zp от текущей позиции курсора и до конца (позиции, в которой находится символ EOF) и затем выводит полученное содержимое в стандартный поток вывода. При ошибке возвращает FALSE. </FONT> </P> <P DESIGNTIMESP=22838><FONT face=Tahoma size=2 DESIGNTIMESP=22839>Дескриптор zp должен быть ранее успешно возвращен функцией gzopen(). </FONT> </P> <P DESIGNTIMESP=22840><FONT face=Tahoma size=2 DESIGNTIMESP=22841>После вывода файл закрывается (функция gzclose() вызывается неявно). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22842><FONT face=Tahoma size=2 DESIGNTIMESP=22843>gzwrite </FONT> </P> <P DESIGNTIMESP=22844><FONT face=Tahoma size=2 DESIGNTIMESP=22845>Запись строки в gz-файл </FONT> </P> <P DESIGNTIMESP=22846><FONT face=Tahoma size=2 DESIGNTIMESP=22847>int gzwrite (int zp, string string [, int length]) </FONT> </P> <P DESIGNTIMESP=22848><FONT face=Tahoma size=2 DESIGNTIMESP=22849>Записывает содержимое строки string (упаковывая) в gz-файл с дескриптором zp. Если указан аргумент length, то запись прекращается после того, как будет записано length (неупакованных) байтов (если размер строки более length байтов). </FONT> </P> <P DESIGNTIMESP=22850><FONT face=Tahoma size=2 DESIGNTIMESP=22851>Заметьте, что параметр magic_quotes_runtime (если он разрешен) игнорируется и слеши не удаляются из строки string, если указывается аргумент length. </FONT> </P> <P DESIGNTIMESP=22852><FONT face=Tahoma size=2 DESIGNTIMESP=22853>См. также: gzread(), gzopen() и gzputs(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22854><FONT face=Tahoma size=2 DESIGNTIMESP=22855>gzputs </FONT> </P> <P DESIGNTIMESP=22856><FONT face=Tahoma size=2 DESIGNTIMESP=22857>Синоним функции gzwrite </FONT> </P> <P DESIGNTIMESP=22858><FONT face=Tahoma size=2 DESIGNTIMESP=22859>int gzputs (int zp, string str [, int length]) </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22860><FONT face=Tahoma size=2 DESIGNTIMESP=22861>gzeof </FONT> </P> <P DESIGNTIMESP=22862><FONT face=Tahoma size=2 DESIGNTIMESP=22863>Проверка наличия символа конца файла </FONT> </P> <P DESIGNTIMESP=22864><FONT face=Tahoma size=2 DESIGNTIMESP=22865>int gzeof (int zp) </FONT> </P> <P DESIGNTIMESP=22866><FONT face=Tahoma size=2 DESIGNTIMESP=22867>Возвращает TRUE, если текущий символ gz-файла — это EOF или если при операции чтения произошла ошибка; иначе возвращает FALSE. </FONT> </P> <P DESIGNTIMESP=22868><FONT face=Tahoma size=2 DESIGNTIMESP=22869>Дескриптор zp должен был быть ранее успешно возвращен функцией gzopen(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22870><FONT face=Tahoma size=2 DESIGNTIMESP=22871>gztell </FONT> </P> <P DESIGNTIMESP=22872><FONT face=Tahoma size=2 DESIGNTIMESP=22873>Определение позиции курсора gz-файла int gztell (int zp) </FONT> </P> <P DESIGNTIMESP=22874><FONT face=Tahoma size=2 DESIGNTIMESP=22875>Возвращает ту позицию (в байтах) от начала файла (на который указывает дескриптор zp), в которую будет осуществляться запись или чтение (gz-функциями). </FONT> </P> <P DESIGNTIMESP=22876><FONT face=Tahoma size=2 DESIGNTIMESP=22877>При ошибке возвращает FALSE. </FONT> </P> <P DESIGNTIMESP=22878><FONT face=Tahoma size=2 DESIGNTIMESP=22879>Дескриптор zp должен был быть ранее успешно возвращен функцией gzopen(). </FONT> </P> <P DESIGNTIMESP=22880><FONT face=Tahoma size=2 DESIGNTIMESP=22881>См. также: gzopen(), gzseek() и gzrewind(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22882><FONT face=Tahoma size=2 DESIGNTIMESP=22883>gzseek </FONT> </P> <P DESIGNTIMESP=22884><FONT face=Tahoma size=2 DESIGNTIMESP=22885>Перемещение курсора gz-файла int gzseek (int zp, int offset) </FONT> </P> <P DESIGNTIMESP=22886><FONT face=Tahoma size=2 DESIGNTIMESP=22887>Передвигает позицию курсора файла (на который указывает дескриптор zp) на число байтов от его начала offset. </FONT> </P> <P DESIGNTIMESP=22888><FONT face=Tahoma size=2 DESIGNTIMESP=22889>Если файл открыт для чтения, то функция эмулируется, и она будет выполняться крайне медленно (так как в сжатых файлах смещение нужно вычислять). Если файл открыт для записи, то курсор можно сдвигать только вперед (тогда в файл просто записывается последовательность нулей вплоть до новой позиции). </FONT> </P> <P DESIGNTIMESP=22890><FONT face=Tahoma size=2 DESIGNTIMESP=22891>Функция возвращает 0 или -1 — при ошибке. Заметьте, перемещение курсора в позицию после символа EOF не считается ошибкой. </FONT> </P> <P DESIGNTIMESP=22892><FONT face=Tahoma size=2 DESIGNTIMESP=22893>См. также: gztell() и gzrewind(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22894><FONT face=Tahoma size=2 DESIGNTIMESP=22895>gzrewind </FONT> </P> <P DESIGNTIMESP=22896><FONT face=Tahoma size=2 DESIGNTIMESP=22897>Перемещение курсора в начало gz-файла </FONT> </P> <P DESIGNTIMESP=22898><FONT face=Tahoma size=2 DESIGNTIMESP=22899>int gzrewind (int zp) </FONT> </P> <P DESIGNTIMESP=22900><FONT face=Tahoma size=2 DESIGNTIMESP=22901>При ошибке возвращается 0. </FONT> </P> <P DESIGNTIMESP=22902><FONT face=Tahoma size=2 DESIGNTIMESP=22903>Дескриптор zp должен был быть ранее успешно возвращен функцией gzopen(). </FONT> </P> <P DESIGNTIMESP=22904><FONT face=Tahoma size=2 DESIGNTIMESP=22905>См. также: gzseek() и gztell(). </FONT> </P> <P class="Title_2" DESIGNTIMESP=22906><a name="3" designtimesp=22907></a><FONT face=Tahoma size=2 DESIGNTIMESP=22908>Сжатые файлы Bzip2</FONT> </P> <P DESIGNTIMESP=22909><FONT face=Tahoma size=2 DESIGNTIMESP=22910>Модуль bzip2 использует библиотеку (http://sources.redhat.com/bzip2/), написанную Джулианом Севардом (Julian Seward), которая позволяет проводить операции файлового ввода-вывода из архивов bzip2 (.bz2). </FONT> </P> <P DESIGNTIMESP=22911><FONT face=Tahoma size=2 DESIGNTIMESP=22912>Чтобы использовать функции bzip2 в РНР, надо при компиляции указать параметр —with-bz2[=DIR] (для этого требуется библиотека bzip2/ Iibbzip2 версии не ранее 1.0.x). Этот модуль можно также подключить динамически. Так как модуль добавлен недавно, он может работать нестабильно. < /FONT> </P> <P class="list" DESIGNTIMESP=22913><FONT face=Tahoma size=2 DESIGNTIMESP=22914> &lt;?php <br designtimesp=22915> Sfilename = "/tmp/testfile.bz2";<br designtimesp=22916> $str = "This is a test string.\n": <br designtimesp=22917> $bz = bzopen($filename. "w"); <br designtimesp=22918> bzwrite($bz. $str), <br designtimesp=22919> bzclose($bz). <br designtimesp=22920> Ibz = bzopen($filename. "r").<br designtimesp=22921> echo print bzread($bz. 10). bzread($bz). <br designtimesp=22922> bzclose($bz). ?&gt; </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22923><FONT face=Tahoma size=2 DESIGNTIMESP=22924>bzcompress </FONT> </P> <P DESIGNTIMESP=22925><FONT face=Tahoma size=2 DESIGNTIMESP=22926>Сжатие строки методом bzip2 </FONT> </P> <P DESIGNTIMESP=22927><FONT face=Tahoma size=2 DESIGNTIMESP=22928>string bzcompress (string source [, int blocksize [, int workfactor]]) Исходная строка указывается в аргументе source. </FONT> </P> <P DESIGNTIMESP=22929><FONT face=Tahoma size=2 DESIGNTIMESP=22930>В необязательном аргументе blocksize можно указать уровень сжатия (от 1 до 9, где 9 — максимальное сжатие, требующее максимума ресурсов), по умолчанию он равен 4. </FONT> </P> <P DESIGNTIMESP=22931><FONT face=Tahoma size=2 DESIGNTIMESP=22932>Аргумент workfactor управляет сжатием данных с высокой частотностью. Возможные значения от 0 до 250. О — специальное значение. По умолчанию: 30. </FONT> </P> <P class="list" DESIGNTIMESP=22933><FONT face=Tahoma size=2 DESIGNTIMESP=22934> $str = "sample data" : <br designtimesp=22935> $bzstr = bzcompress($str. 9); <br designtimesp=22936> pnnt( $bzstr ): </FONT> </P> <P DESIGNTIMESP=22937><FONT face=Tahoma size=2 DESIGNTIMESP=22938>См. также: bzdeconpress(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22939><FONT face=Tahoma size=2 DESIGNTIMESP=22940>bzdecompress </FONT> </P> <P DESIGNTIMESP=22941><FONT face=Tahoma size=2 DESIGNTIMESP=22942>Распаковка строки, сжатой методом bzip2 </FONT> </P> <P DESIGNTIMESP=22943><FONT face=Tahoma size=2 DESIGNTIMESP=22944>string bzdecompress (string source [. int small]) </FONT> </P> <P DESIGNTIMESP=22945><FONT face=Tahoma size=2 DESIGNTIMESP=22946>Распаковывает строку source, содержащую сжатые методом bzip2 данные, и возвращает полученную строку. Если в необязательном аргументе указывается значение TRUE, используется алгоритм, потребляющий минимальный объем памяти (максимум 2.3 Мб), но при этом функция работает медленнее (в 2 раза). </FONT> </P> <P class="list" DESIGNTIMESP=22947><FONT face=Tahoma size=2 DESIGNTIMESP=22948> &lt;?php <br designtimesp=22949> $start_str = "Это первоначальная <br designtimesp=22950> несжатая строка": <br designtimesp=22951> Jbzstr -= bzcompress($start_str'&gt;; <br designtimesp=22952> print( 'Compressed <br designtimesp=22953> String: Sbzstr \n&lt;br&gt;" ): <br designtimesp=22954> $str = Dzdecompress($bzstr); <br designtimesp=22955> print( "Decompressed <br designtimesp=22956> St1" rig. ' $str . "\n&lt;br&gt;" ): ?&gt; </FONT> </P> <P DESIGNTIMESP=22957><FONT face=Tahoma size=2 DESIGNTIMESP=22958>См. также: bzcompress(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22959><FONT face=Tahoma size=2 DESIGNTIMESP=22960>bzopen </FONT> </P> <P DESIGNTIMESP=22961><FONT face=Tahoma size=2 DESIGNTIMESP=22962>Открытие сжатого файла bzip2 </FONT> </P> <P DESIGNTIMESP=22963><FONT face=Tahoma size=2 DESIGNTIMESP=22964>int bzopen (string filename, string mode) </FONT> </P> <P DESIGNTIMESP=22965><FONT face=Tahoma size=2 DESIGNTIMESP=22966>Возвращает дескриптор открытого файла или FALSE в случае ошибки. Аргумент mode может быть таким же, как в функции fopen() ("r" для чтения, "w" для записи и т. д.). </FONT> </P> <P class="list" DESIGNTIMESP=22967><FONT face=Tahoma size=2 DESIGNTIMESP=22968> &lt;?php <br designtimesp=22969> $bz = bzopenf"/trap/too.bz2", "r"): <br designtimesp=22970> $decompressea_file = bzread($oz.<br designtimesp=22971> fiIesize("/tmp/foo.bz2")): <br designtimesp=22972> bzclose($bz): <br designtimesp=22973> print( "The contents of<br designtimesp=22974> /tmp/foo.Dz2 are: " ): <br designtimesp=22975> print( "\n&lt;br&gt;n" ): <br designtimesp=22976> print( $decompressed_file ). ?&gt; </FONT> </P> <P DESIGNTIMESP=22977><FONT face=Tahoma size=2 DESIGNTIMESP=22978>См. также bzclose(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22979><FONT face=Tahoma size=2 DESIGNTIMESP=22980>bzclose </FONT> </P> <P DESIGNTIMESP=22981><FONT face=Tahoma size=2 DESIGNTIMESP=22982>Закрытие файла bzip2 int bzclose (int bz) </FONT> </P> <P DESIGNTIMESP=22983><FONT face=Tahoma size=2 DESIGNTIMESP=22984>Закрывает файл bzip2, дескриптор которого bz должен был быть ранее успешно возвращен функцией bzopen(). Возвращает TRUE или FALSE - при ошибке. </FONT> </P> <P DESIGNTIMESP=22985><FONT face=Tahoma size=2 DESIGNTIMESP=22986>См. также bzopen(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=22987><FONT face=Tahoma size=2 DESIGNTIMESP=22988>bzread </FONT> </P> <P DESIGNTIMESP=22989><FONT face=Tahoma size=2 DESIGNTIMESP=22990>Чтение из файла bzip2 </FONT> </P> <P DESIGNTIMESP=22991><FONT face=Tahoma size=2 DESIGNTIMESP=22992>string bzread (int bz [, int length]) </FONT> </P> <P DESIGNTIMESP=22993><FONT face=Tahoma size=2 DESIGNTIMESP=22994>Число читаемых байтов можно указать аргументом length (если он не указывается, то его значением считается 1024). Дескриптор bz должен быть ранее успешно возвращен функцией bzopen(). Чтение прекращается, когда будет прочитано length распакованных байтов или если будет обнаружен символ конца файла EOF. </FONT> </P> <P class="list" DESIGNTIMESP=22995><FONT face=Tahoma size=2 DESIGNTIMESP=22996> &lt;?php <br designtimesp=22997> $bz = bzopen("/tmp/foo.bz2". "г"):<br designtimesp=22998> $str <br designtimesp=22999> bzread($bz. 2048), printt $str ):?&gt; </FONT> </P> <P DESIGNTIMESP=23000><FONT face=Tahoma size=2 DESIGNTIMESP=23001>См. также: bzwrite() и bzopen(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23002><FONT face=Tahoma size=2 DESIGNTIMESP=23003>bzwrite </FONT> </P> <P DESIGNTIMESP=23004><FONT face=Tahoma size=2 DESIGNTIMESP=23005>Запись в файл bzip2 данных </FONT> </P> <P DESIGNTIMESP=23006><FONT face=Tahoma size=2 DESIGNTIMESP=23007>int bzwrite (int bz, string data [, int length]) </FONT> </P> <P DESIGNTIMESP=23008><FONT face=Tahoma size=2 DESIGNTIMESP=23009>В аргументе data указывается строка, содержащая записываемые данные. В аргументе bz указывается дескриптор открытого файла bzip2. Если указан аргумент length, то запись прекращается после того, как будет записано length (неупакованных) байтов (если размер строки более length байтов). </FONT> </P> <P class="list" DESIGNTIMESP=23010><FONT face=Tahoma size=2 DESIGNTIMESP=23011> &lt;?php <br designtimesp=23012> $str = "uncompressed data". <br designtimesp=23013> $bz - bzopenCYtmp/foo.bzZ", V). <br designtimesp=23014> bzwnte($bz. $str. strlpn($str)). <br designtimesp=23015> bzclose($bz); ?&gt; </FONT> </P> <P DESIGNTIMESP=23016><FONT face=Tahoma size=2 DESIGNTIMESP=23017>См. также: bzread() и bzopen(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23018><FONT face=Tahoma size=2 DESIGNTIMESP=23019>bzflush </FONT> </P> <P DESIGNTIMESP=23020><FONT face=Tahoma size=2 DESIGNTIMESP=23021>Запись всего буферизованного вывода в файл bzip2 </FONT> </P> <P DESIGNTIMESP=23022><FONT face=Tahoma size=2 DESIGNTIMESP=23023>int bzflush (int bz) </FONT> </P> <P DESIGNTIMESP=23024><FONT face=Tahoma size=2 DESIGNTIMESP=23025>В аргументе bz указывается дескриптор открытого файла. </FONT> </P> <P DESIGNTIMESP=23026><FONT face=Tahoma size=2 DESIGNTIMESP=23027>Возвращается TRUE или FALSE — при ошибке. </FONT> </P> <P DESIGNTIMESP=23028><FONT face=Tahoma size=2 DESIGNTIMESP=23029>См. также: bzread() и bzwrite(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23030><FONT face=Tahoma size=2 DESIGNTIMESP=23031>bzerrno </FONT> </P> <P DESIGNTIMESP=23032><FONT face=Tahoma size=2 DESIGNTIMESP=23033>Получение номера ошибки bzip2 int bzerrno (int bz) </FONT> </P> <P DESIGNTIMESP=23034><FONT face=Tahoma size=2 DESIGNTIMESP=23035>В аргументе bz указывается дескриптор открытого файла, при операции с которым произошла ошибка. </FONT> </P> <P DESIGNTIMESP=23036><FONT face=Tahoma size=2 DESIGNTIMESP=23037>См. также: bzerror() и bzerrstr(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23038><FONT face=Tahoma size=2 DESIGNTIMESP=23039>bzerrstr </FONT> </P> <P DESIGNTIMESP=23040><FONT face=Tahoma size=2 DESIGNTIMESP=23041>Получение описания ошибки bzip2 </FONT> </P> <P DESIGNTIMESP=23042><FONT face=Tahoma size=2 DESIGNTIMESP=23043>string bzerrstr (int bz) </FONT> </P> <P DESIGNTIMESP=23044><FONT face=Tahoma size=2 DESIGNTIMESP=23045>В аргументе bz указывается дескриптор открытого файла, при операции с которым произошла ошибка. </FONT> </P> <P DESIGNTIMESP=23046><FONT face=Tahoma size=2 DESIGNTIMESP=23047>См. также: bzerrno() и bzerror(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23048><FONT face=Tahoma size=2 DESIGNTIMESP=23049>bzerror </FONT> </P> <P DESIGNTIMESP=23050><FONT face=Tahoma size=2 DESIGNTIMESP=23051>Получение номера и описания ошибки bzip2 в массиве </FONT> </P> <P DESIGNTIMESP=23052><FONT face=Tahoma size=2 DESIGNTIMESP=23053>array bzerror (int bz) </FONT> </P> <P DESIGNTIMESP=23054><FONT face=Tahoma size=2 DESIGNTIMESP=23055>Возвращается ассоциативный массив, содержащий соответственно два элемента. В аргументе bz указывается дескриптор открытого файла, при операции с которым произошла ошибка. </FONT> </P> <P class="list" DESIGNTIMESP=23056><FONT face=Tahoma size=2 DESIGNTIMESP=23057>Serror = bzerror($t&gt;z): <br designtimesp=23058> echo $error["errno"]: <br designtimesp=23059> echo Sen or["errbtr"]. </FONT> </P> <P DESIGNTIMESP=23060><FONT face=Tahoma size=2 DESIGNTIMESP=23061>См. также: bzerrno() и bzerrstr(). </FONT> </P> <P class="Title_2" DESIGNTIMESP=23062> <a name="4" designtimesp=23063></a><FONT face=Tahoma size=2 DESIGNTIMESP=23064>FTP </FONT> </P> <P DESIGNTIMESP=23065><FONT face=Tahoma size=2 DESIGNTIMESP=23066>При использовании модуля FTP им определяются две константы: FTP_ASCII и FTP_BINARY. </FONT> </P> <P DESIGNTIMESP=23067><FONT face=Tahoma size=2 DESIGNTIMESP=23068>Функции используют дескриптор сеанса подключения (это первый аргумент, обозначенный как ftp_stream). </FONT> </P> <P DESIGNTIMESP=23069><FONT face=Tahoma size=2 DESIGNTIMESP=23070>Простейший сеанс FTP может проходить следующим образом: </FONT> </P> <P class="list" DESIGNTIMESP=23071><FONT face=Tahoma size=2 DESIGNTIMESP=23072> &lt;?php <br designtimesp=23073> /.' открытие простого FTP сеанса <br designtimesp=23074> $connjd = ftp_connect("$ftp_server"). <br designtimesp=23075> // login with user-name and password <br designtimesp=23076> $login_result = ftp_login<br designtimesp=23077> ($conn_id. "$ftp_user_name", "$ftp_user_pass"). <br designtimesp=23078> // проверка связи <br designtimesp=23079> if ((!$conn_-d) || (!$login_result)) <br designtimesp=23080> { echo 'Невозможно установить<br designtimesp=23081> Ftp связь! ". <br designtimesp=23082> "Для сервера $ftp_server. пользователю <br designtimesp=23083> Suser", die; } else <br designtimesp=23084> echo "Подключение к<br designtimesp=23085> серверу $ftp_server успешно!"; } <br designtimesp=23086> // загрузить файл Supload =<br designtimesp=23087> ftp_put($conn_ia. "$dest,ination_file".<br designtimesp=23088> "Ssourcejile". rrp_BINARY): <br designtimesp=23089> // проверка загрузки if (!$upload) <br designtimesp=23090> { echo "Загрузка не удалась!";<br designtimesp=23091> } else { echo "Файл $source_file был <br designtimesp=23092> загружен как $destination_file": } <br designtimesp=23093> // закрыть поток FTP <br designtimesp=23094> ftp_quitl$copn_id). ?&gt; </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23095><FONT face=Tahoma size=2 DESIGNTIMESP=23096>ftp_connect </FONT> </P> <P DESIGNTIMESP=23097><FONT face=Tahoma size=2 DESIGNTIMESP=23098>Подключение к FTP-серверу </FONT> </P> <P DESIGNTIMESP=23099><FONT face=Tahoma size=2 DESIGNTIMESP=23100>Int ftp_connect (string host [, int port]) </FONT> </P> <P DESIGNTIMESP=23101><FONT face=Tahoma size=2 DESIGNTIMESP=23102>Аргумент host указывает имя сервера, к которому осуществляется доступ, a port — используемый для подключения порт (если он не указан или указывается 0, то используется порт по умолчанию — 21). </FONT> </P> <P DESIGNTIMESP=23103><FONT face=Tahoma size=2 DESIGNTIMESP=23104>Возвращает дескриптор потока FTP или FALSE при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23105><FONT face=Tahoma size=2 DESIGNTIMESP=23106>ftp_ pasv </FONT> </P> <P DESIGNTIMESP=23107><FONT face=Tahoma size=2 DESIGNTIMESP=23108>Переключение пассивного режима </FONT> </P> <P DESIGNTIMESP=23109><FONT face=Tahoma size=2 DESIGNTIMESP=23110>int ftp_pasv (int ftp_stream. int pasv) </FONT> </P> <P DESIGNTIMESP=23111><FONT face=Tahoma size=2 DESIGNTIMESP=23112>Переключает режим подключения в пассивный (если аргумент pasv равен TRUE) или активный (если аргумент pasv равен FALSE). В пассивном режиме передача данных инициируется клиентом, а не сервером (это бывает необходимо при блокировке портов у клиента). </FONT> </P> <P DESIGNTIMESP=23113><FONT face=Tahoma size=2 DESIGNTIMESP=23114>Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23115><FONT face=Tahoma size=2 DESIGNTIMESP=23116>ftp_ login </FONT> </P> <P DESIGNTIMESP=23117><FONT face=Tahoma size=2 DESIGNTIMESP=23118>Вход на сервер FTP </FONT> </P> <P DESIGNTIMESP=23119><FONT face=Tahoma size=2 DESIGNTIMESP=23120>int ftpjogin (int ftp_stream, string usemame, string password) </FONT> </P> <P DESIGNTIMESP=23121><FONT face=Tahoma size=2 DESIGNTIMESP=23122>Зарегистрироваться в системе под именем username с паролем password. </FONT> </P> <P DESIGNTIMESP=23123><FONT face=Tahoma size=2 DESIGNTIMESP=23124>Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23125><FONT face=Tahoma size=2 DESIGNTIMESP=23126>ftp_quit </FONT> </P> <P DESIGNTIMESP=23127><FONT face=Tahoma size=2 DESIGNTIMESP=23128>Завершение сеанса FTP </FONT> </P> <P DESIGNTIMESP=23129><FONT face=Tahoma size=2 DESIGNTIMESP=23130>int ftp_quit (int ftp_stream) </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23131><FONT face=Tahoma size=2 DESIGNTIMESP=23132>ftp_pwd </FONT> </P> <P DESIGNTIMESP=23133><FONT face=Tahoma size=2 DESIGNTIMESP=23134>Определение текущего каталога </FONT> </P> <P DESIGNTIMESP=23135><FONT face=Tahoma size=2 DESIGNTIMESP=23136>string ftp_pwd (int ftp_stream) </FONT> </P> <P DESIGNTIMESP=23137><FONT face=Tahoma size=2 DESIGNTIMESP=23138>Возвращает текущий каталог FTP-сервера или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23139><FONT face=Tahoma size=2 DESIGNTIMESP=23140>ftp_cdup </FONT> </P> <P DESIGNTIMESP=23141><FONT face=Tahoma size=2 DESIGNTIMESP=23142>Переход в корневой каталог </FONT> </P> <P DESIGNTIMESP=23143><FONT face=Tahoma size=2 DESIGNTIMESP=23144>int ftp_cdup (int ftp_stream) Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23145><FONT face=Tahoma size=2 DESIGNTIMESP=23146>ftp_chdir</FONT> </P> <P DESIGNTIMESP=23147><FONT face=Tahoma size=2 DESIGNTIMESP=23148>Переход в каталог</FONT> </P> <P DESIGNTIMESP=23149><FONT face=Tahoma size=2 DESIGNTIMESP=23150>int ftp_chdir (int ftp_stream, string directory) </FONT> </P> <P DESIGNTIMESP=23151><FONT face=Tahoma size=2 DESIGNTIMESP=23152>Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23153><FONT face=Tahoma size=2 DESIGNTIMESP=23154>ftp_mkdir </FONT> </P> <P DESIGNTIMESP=23155><FONT face=Tahoma size=2 DESIGNTIMESP=23156>Создание каталога </FONT> </P> <P DESIGNTIMESP=23157><FONT face=Tahoma size=2 DESIGNTIMESP=23158>string ftpjnkdir (int ftp_stream, string directory) </FONT> </P> <P DESIGNTIMESP=23159><FONT face=Tahoma size=2 DESIGNTIMESP=23160>Возвращает имя созданного каталога directory или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23161><FONT face=Tahoma size=2 DESIGNTIMESP=23162>ftp_rmdir </FONT> </P> <P DESIGNTIMESP=23163><FONT face=Tahoma size=2 DESIGNTIMESP=23164>Удаление каталога </FONT> </P> <P DESIGNTIMESP=23165><FONT face=Tahoma size=2 DESIGNTIMESP=23166>int ftp_rmdir (int ftp_streara, string directory) Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23167><FONT face=Tahoma size=2 DESIGNTIMESP=23168>ftp_nlist </FONT> </P> <P DESIGNTIMESP=23169><FONT face=Tahoma size=2 DESIGNTIMESP=23170>Получение листинга каталога </FONT> </P> <P DESIGNTIMESP=23171><FONT face=Tahoma size=2 DESIGNTIMESP=23172>array ftp_nlist (int ftp_stream, string directory) Возвращает массив файловых имен или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23173><FONT face=Tahoma size=2 DESIGNTIMESP=23174>ftp_rawlist </FONT> </P> <P DESIGNTIMESP=23175><FONT face=Tahoma size=2 DESIGNTIMESP=23176>Получение детализированного листинга каталога </FONT> </P> <P DESIGNTIMESP=23177><FONT face=Tahoma size=2 DESIGNTIMESP=23178>array ftp_raw1ist (int ftp_stream, string directory) </FONT> </P> <P DESIGNTIMESP=23179><FONT face=Tahoma size=2 DESIGNTIMESP=23180>Исполняет РТР-команду LIST, и возвращает ее результат в массиве, где каждый элемент соответствует строке текста «как есть». Идентификатор типа системы, возвращаемый ftp_systype(), может быть использован для определения того, как следует интерпретировать результаты. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23181><FONT face=Tahoma size=2 DESIGNTIMESP=23182>ftp_systype </FONT> </P> <P DESIGNTIMESP=23183><FONT face=Tahoma size=2 DESIGNTIMESP=23184>Получение системного идентификатора типа FTP-сервера </FONT> </P> <P DESIGNTIMESP=23185><FONT face=Tahoma size=2 DESIGNTIMESP=23186>string ftp_systype (int ftp_stream) </FONT> </P> <P DESIGNTIMESP=23187><FONT face=Tahoma size=2 DESIGNTIMESP=23188>Возвращает строковое значение или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23189><FONT face=Tahoma size=2 DESIGNTIMESP=23190>ftp_ get </FONT> </P> <P DESIGNTIMESP=23191><FONT face=Tahoma size=2 DESIGNTIMESP=23192>Загрузка файла с FTP </FONT> </P> <P DESIGNTIMESP=23193><FONT face=Tahoma size=2 DESIGNTIMESP=23194>int ftp_get (int ftp_stream, string 1ocal_file, string remote_file, int mode) </FONT> </P> <P DESIGNTIMESP=23195><FONT face=Tahoma size=2 DESIGNTIMESP=23196>Загружает удаленный файл remote_file с сервера FTP и сохраняет его локально под именем local_file. Режим передачи mode должен быть указан либо как FTP_ASCII, либо как FTP_BINARY. </FONT> </P> <P DESIGNTIMESP=23197><FONT face=Tahoma size=2 DESIGNTIMESP=23198>Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23199><FONT face=Tahoma size=2 DESIGNTIMESP=23200>ftp_get </FONT> </P> <P DESIGNTIMESP=23201><FONT face=Tahoma size=2 DESIGNTIMESP=23202>Загрузка и запись файла </FONT> </P> <P DESIGNTIMESP=23203><FONT face=Tahoma size=2 DESIGNTIMESP=23204>int ftp_fget (int ftp_stream, int fp, string remote_file, int mode) </FONT> </P> <P DESIGNTIMESP=23205><FONT face=Tahoma size=2 DESIGNTIMESP=23206>Загружает удаленный файл remote_file с сервера FTP и сохраняет его содержимое в открытом файле, имеющем дескриптор fp. Режим передачи mode должен быть указан либо как FTP_ASCII, либо как FTP_ BINARY. </FONT> </P> <P DESIGNTIMESP=23207><FONT face=Tahoma size=2 DESIGNTIMESP=23208>Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P DESIGNTIMESP=23209><FONT face=Tahoma size=2 DESIGNTIMESP=23210> </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23211><FONT face=Tahoma size=2 DESIGNTIMESP=23212>ftp_put </FONT> </P> <P DESIGNTIMESP=23213><FONT face=Tahoma size=2 DESIGNTIMESP=23214>Загрузка файла на сервер FTP </FONT> </P> <P DESIGNTIMESP=23215><FONT face=Tahoma size=2 DESIGNTIMESP=23216>int ftp_put (int ftp_stream, string remote_file, string localjfile, int mode) </FONT> </P> <P DESIGNTIMESP=23217><FONT face=Tahoma size=2 DESIGNTIMESP=23218>Сохраняет файл local_file на сервере FTP под именем remote_file. Режим передачи mode должен быть указан либо как FTP_ASCII, либо как FTP_BINARY. </FONT> </P> <P DESIGNTIMESP=23219><FONT face=Tahoma size=2 DESIGNTIMESP=23220>Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P class="list" DESIGNTIMESP=23221><FONT face=Tahoma size=2 DESIGNTIMESP=23222>Supload = ftp_put <br designtimesp=23223> ($conn_id. "C:\\myfile.txt". <br designtimesp=23224> "/myfile.txt". FTP_ASCII); </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23225><FONT face=Tahoma size=2 DESIGNTIMESP=23226>ftp_fput </FONT> </P> <P DESIGNTIMESP=23227><FONT face=Tahoma size=2 DESIGNTIMESP=23228>Чтение и загрузка файла на сервер </FONT> </P> <P DESIGNTIMESP=23229><FONT face=Tahoma size=2 DESIGNTIMESP=23230>int ftp_fput (int ftp_stream, string remote_file, int fp, int mode) </FONT> </P> <P DESIGNTIMESP=23231><FONT face=Tahoma size=2 DESIGNTIMESP=23232>Читает открытый файл (дескриптора fp) до сто конца и загружает его на сервер FTP под именем remote_fi!e. Режим передачи mode должен быть указан либо как FTP_ASCII, либо как FTP_BINARY. </FONT> </P> <P DESIGNTIMESP=23233><FONT face=Tahoma size=2 DESIGNTIMESP=23234>Возвращает TRUE пли FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23235><FONT face=Tahoma size=2 DESIGNTIMESP=23236>ftp_size </FONT> </P> <P DESIGNTIMESP=23237><FONT face=Tahoma size=2 DESIGNTIMESP=23238>Определение размера файла </FONT> </P> <P DESIGNTIMESP=23239><FONT face=Tahoma size=2 DESIGNTIMESP=23240>int ftp_size (int ftp_stream, string remotejfile) </FONT> </P> <P DESIGNTIMESP=23241><FONT face=Tahoma size=2 DESIGNTIMESP=23242>Возвращает размер файла в байтах или -1 — при ошибке. Не все серверы поддерживают эту возможность. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23243><FONT face=Tahoma size=2 DESIGNTIMESP=23244>ftp_mdtm </FONT> </P> <P DESIGNTIMESP=23245><FONT face=Tahoma size=2 DESIGNTIMESP=23246>Получение времени последней модификации файла </FONT> </P> <P DESIGNTIMESP=23247><FONT face=Tahoma size=2 DESIGNTIMESP=23248>int ftpjndtm (int ftp_stream, string remote_file) </FONT> </P> <P DESIGNTIMESP=23249><FONT face=Tahoma size=2 DESIGNTIMESP=23250>Возвращает время в формате «UNIX timcstamp» или -1 — при ошибке. </FONT> </P> <P DESIGNTIMESP=23251><FONT face=Tahoma size=2 DESIGNTIMESP=23252>Функция не работает с каталогами. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23253><FONT face=Tahoma size=2 DESIGNTIMESP=23254>ftp_rename </FONT> </P> <P DESIGNTIMESP=23255><FONT face=Tahoma size=2 DESIGNTIMESP=23256>Переименование файла на сервере </FONT> </P> <P DESIGNTIMESP=23257><FONT face=Tahoma size=2 DESIGNTIMESP=23258>int ftp_rename (int ftp_stream, string from, string to) </FONT> </P> <P DESIGNTIMESP=23259><FONT face=Tahoma size=2 DESIGNTIMESP=23260>Переименовывает файл from в to. Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23261><FONT face=Tahoma size=2 DESIGNTIMESP=23262>ftp_delete </FONT> </P> <P DESIGNTIMESP=23263><FONT face=Tahoma size=2 DESIGNTIMESP=23264>Удаление файла на сервере </FONT> </P> <P DESIGNTIMESP=23265><FONT face=Tahoma size=2 DESIGNTIMESP=23266>int ftpjJelete (int ftp_stream. string path) Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23267><FONT face=Tahoma size=2 DESIGNTIMESP=23268>flp_site </FONT> </P> <P DESIGNTIMESP=23269><FONT face=Tahoma size=2 DESIGNTIMESP=23270>Выполнение команды SITE на сервере </FONT> </P> <P DESIGNTIMESP=23271><FONT face=Tahoma size=2 DESIGNTIMESP=23272>int ftp_site (int ftp_stream, string cmd) </FONT> </P> <P DESIGNTIMESP=23273><FONT face=Tahoma size=2 DESIGNTIMESP=23274>Посылает серверу команду cmd. Возвращает TRUE или FALSE — при ошибке. </FONT> </P> <P DESIGNTIMESP=23275><FONT face=Tahoma size=2 DESIGNTIMESP=23276>Так как команды SITE не стандартизированы, они могут различаться. Обычно они полезны для изменения прав доступа к файлам и групповой принадлежности. </FONT> </P> <P class="Title_2" DESIGNTIMESP=23277> <a name="5" designtimesp=23278></a><FONT face=Tahoma size=2 DESIGNTIMESP=23279>Сетевые функции </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23280><FONT face=Tahoma size=2 DESIGNTIMESP=23281>ip2long </FONT> </P> <P DESIGNTIMESP=23282><FONT face=Tahoma size=2 DESIGNTIMESP=23283>Конвертация строки адреса IPv4 в число </FONT> </P> <P DESIGNTIMESP=23284><FONT face=Tahoma size=2 DESIGNTIMESP=23285>int ip21ong (string ip_address) </FONT> </P> <P DESIGNTIMESP=23286><FONT face=Tahoma size=2 DESIGNTIMESP=23287>Возвращает четырехбайтовое численное представление адреса IP v4 из строки (числа, разделенные точками, например: «127.0.0.1»). </FONT> </P> <P class="list" DESIGNTIMESP=23288><FONT face=Tahoma size=2 DESIGNTIMESP=23289>$ip = gethostbyname("wvjw.php.net");<br designtimesp=23290> // получить IP адрес хоста echo <br designtimesp=23291> "Следующие URL эквивалентны:&lt;bг&gt;\n". <br designtimesp=23292> "http://www.php.net/. http://" Sip. <br designtimesp=23293> "/. и http://" .ip21ong($ip)."/&lt;br&gt;\n": </FONT> </P> <P DESIGNTIMESP=23294><FONT face=Tahoma size=2 DESIGNTIMESP=23295>См. также Iong2ip(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23296><FONT face=Tahoma size=2 DESIGNTIMESP=23297>Iong2ip </FONT> </P> <P DESIGNTIMESP=23298><FONT face=Tahoma size=2 DESIGNTIMESP=23299>Конвертация числа в строку адреса IP v4 </FONT> </P> <P DESIGNTIMESP=23300><FONT face=Tahoma size=2 DESIGNTIMESP=23301>string Iong2ip (int proper_address) </FONT> </P> <P DESIGNTIMESP=23302><FONT face=Tahoma size=2 DESIGNTIMESP=23303>Возвращает строковое представление IP-адреса (в формате: «ааа. bbb.ccc.ddd») из числового значения. </FONT> </P> <P DESIGNTIMESP=23304><FONT face=Tahoma size=2 DESIGNTIMESP=23305>См. также ip2long(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23306><FONT face=Tahoma size=2 DESIGNTIMESP=23307>gethostbyaddr </FONT> </P> <P DESIGNTIMESP=23308><FONT face=Tahoma size=2 DESIGNTIMESP=23309>Получение имени хоста, соответствующего адресу IP string gethostbyaddr (string ip_address) </FONT> </P> <P DESIGNTIMESP=23310><FONT face=Tahoma size=2 DESIGNTIMESP=23311>В аргументе указывается адрес IP в строковом формате. При ошибке возвращается ip_address. Заметьте: большинству IP-адресов в Интернете соответствует несколько имен (одно из них: localhost). </FONT> </P> <P class="list" DESIGNTIMESP=23312><FONT face=Tahoma size=2 DESIGNTIMESP=23313>echo gethostbyaddr("127.001"); </FONT> </P> <P DESIGNTIMESP=23314><FONT face=Tahoma size=2 DESIGNTIMESP=23315>См. также gethostbyname(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23316><FONT face=Tahoma size=2 DESIGNTIMESP=23317>gethostbyname </FONT> </P> <P DESIGNTIMESP=23318><FONT face=Tahoma size=2 DESIGNTIMESP=23319>Получение IP-адреса хоста </FONT> </P> <P DESIGNTIMESP=23320><FONT face=Tahoma size=2 DESIGNTIMESP=23321>string gethostbyname (string hostname) </FONT> </P> <P class="list" DESIGNTIMESP=23322><FONT face=Tahoma size=2 DESIGNTIMESP=23323> print gethostbyname ("localhost");<br designtimesp=23324> // выведет: 127.0.0.1 </FONT> </P> <P DESIGNTIMESP=23325><FONT face=Tahoma size=2 DESIGNTIMESP=23326>См. также gethostbyaddr(). </FONT> </P> <P class="Text_Bold" DESIGNTIMESP=23327><FONT face=Tahoma size=2 DESIGNTIMESP=23328>gethostbynamel </FONT> </P> <P DESIGNTIMESP=23329><FONT face=Tahoma size=2 DESIGNTIMESP=23330>Получение списка IP-адресов, принадлежащих хосту </FONT> </P> <P DESIGNTIMESP=23331><FONT face=Tahoma size=2 DESIGNTIMESP=23332>array gethostbynamel (string hostname) </FONT> </P> <P DESIGNTIMESP=23333><FONT face=Tahoma size=2 DESIGNTIMESP=23334>Функция используется вместо gethostbynamez(), когда хост hostname имеет несколько сетевых интерфейсов с разными адресами. </FONT></P> <P DESIGNTIMESP=23335><FONT face=Tahoma size=2 DESIGNTIMESP=23336>См. также: gethostbyname(), gethostbyaddr(), checkdnsrr(), getmxrr() и раздел named справочной системы man. </FONT></P> <P class=Text_Bold DESIGNTIMESP=23337><FONT face=Tahoma size=2 DESIGNTIMESP=23338>getprotobyname </FONT></P> <P DESIGNTIMESP=23339><FONT face=Tahoma size=2 DESIGNTIMESP=23340>Определение номера порта, используемого протоколом1 </FONT></P> <P DESIGNTIMESP=23341><FONT face=Tahoma size=2 DESIGNTIMESP=23342>int getprotobyname (string name) </FONT></P> <P DESIGNTIMESP=23343><FONT face=Tahoma size=2 DESIGNTIMESP=23344>В системах Unix соответствие портов и протоколов указывается в файле /etc/protocols. </FONT></P> <P DESIGNTIMESP=23345><FONT face=Tahoma size=2 DESIGNTIMESP=23346>См. также getprotobynumber(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23347><FONT face=Tahoma size=2 DESIGNTIMESP=23348>getprotobynumber </FONT></P> <P DESIGNTIMESP=23349><FONT face=Tahoma size=2 DESIGNTIMESP=23350>Определение протокола порта </FONT></P> <P DESIGNTIMESP=23351><FONT face=Tahoma size=2 DESIGNTIMESP=23352>string getprotobynumber (int number) </FONT></P> <P DESIGNTIMESP=23353><FONT face=Tahoma size=2 DESIGNTIMESP=23354>См. также getprotobyname(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23355><FONT face=Tahoma size=2 DESIGNTIMESP=23356>getservbyname </FONT></P> <P DESIGNTIMESP=23357><FONT face=Tahoma size=2 DESIGNTIMESP=23358>Определение порта Интернет-службы </FONT></P> <P DESIGNTIMESP=23359><FONT face=Tahoma size=2 DESIGNTIMESP=23360>Int getservbyname (string service, string protocol) </FONT></P> <P DESIGNTIMESP=23361><FONT face=Tahoma size=2 DESIGNTIMESP=23362>Возвращает номер порта, использующийся службой service. (В системах Uni\ это соответствие портов и служб указывается в файле /etc/services) В аргументе protocol указывается тип протокола — TCP или UDP. </FONT></P> <P class=list DESIGNTIMESP=23363><FONT face=Tahoma size=2 DESIGNTIMESP=23364>echo getservbyname ("HTTP"."TCP");<br designtimesp=23365>// может вывести- 80 </FONT></P> <P DESIGNTIMESP=23366><FONT face=Tahoma size=2 DESIGNTIMESP=23367>См. также getservbyportt(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23368><FONT face=Tahoma size=2 DESIGNTIMESP=23369>getservbyport </FONT></P> <P DESIGNTIMESP=23370><FONT face=Tahoma size=2 DESIGNTIMESP=23371>Определение Интернет-службы, использующей порт </FONT></P> <P DESIGNTIMESP=23372><FONT face=Tahoma size=2 DESIGNTIMESP=23373>string getservbyport (int port, string protocol) </FONT></P> <P DESIGNTIMESP=23374><FONT face=Tahoma size=2 DESIGNTIMESP=23375>В аргументе protocol указывается тип протокола — TCP или UDP. </FONT></P> <P class=list DESIGNTIMESP=23376><FONT face=Tahoma size=2 DESIGNTIMESP=23377>echo getservbyport(21."TCP"):<br designtimesp=23378>// обычно выводит ftp <br designtimesp=23379>echo getservbyport(23."TCP"). <br designtimesp=23380>// обычно выводит: telnet </FONT></P> <P DESIGNTIMESP=23381><FONT face=Tahoma size=2 DESIGNTIMESP=23382>См. также getservbyname(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23383><FONT face=Tahoma size=2 DESIGNTIMESP=23384>checkdnsrr </FONT></P> <P DESIGNTIMESP=23385><FONT face=Tahoma size=2 DESIGNTIMESP=23386>Проверка записи DNS </FONT></P> <P DESIGNTIMESP=23387><FONT face=Tahoma size=2 DESIGNTIMESP=23388>int checkdnsrr (string host [, string type]) </FONT></P> <P DESIGNTIMESP=23389><FONT face=Tahoma size=2 DESIGNTIMESP=23390>Отправляет запрос DNS-сервсру для поиска записей, имеющихся для хоста host. Возвращает TRUE, если были найдены записи типа type, или FALSE в противном случае, а также при ошибке. </FONT></P> <P DESIGNTIMESP=23391><FONT face=Tahoma size=2 DESIGNTIMESP=23392>Аргумент type может иметь одно из следующих значений: A, MX, NS, SO A, PTR, CNAME, ANY. По умолчанию (если аргумент не указан) его значение MX. </FONT></P> <P DESIGNTIMESP=23393><FONT face=Tahoma size=2 DESIGNTIMESP=23394>Аргумент host может указываться строкой IP-формата с разделением точками, либо быть именем хоста. </FONT></P> <P DESIGNTIMESP=23395><FONT face=Tahoma size=2 DESIGNTIMESP=23396>См. также: getmxrr(), gethostbyaddr(), gethostbyname(), gethostbynaroe() и раздел named справочной системы Unix man. </FONT></P> <P class=Text_Bold DESIGNTIMESP=23397><FONT face=Tahoma size=2 DESIGNTIMESP=23398>getmxrr </FONT></P> <P DESIGNTIMESP=23399><FONT face=Tahoma size=2 DESIGNTIMESP=23400>Получение MX записи для Интернет-хоста </FONT></P> <P DESIGNTIMESP=23401><FONT face=Tahoma size=2 DESIGNTIMESP=23402>int getmxrr (string hostname, array mxhosts [, array weight]) Инициирует поиск в БД DNS записи MX (почтовый сервер домена) для хоста hostname. Возвращает TRUE, если запись найдена; FALSE, если поиск прошел безуспешно. </FONT></P> <P DESIGNTIMESP=23403><FONT face=Tahoma size=2 DESIGNTIMESP=23404>Список записей MX заносится в массив mxhosts. Если указан массив weight, он заполняется дополнительной информацией о записях. </FONT></P> <P DESIGNTIMESP=23405><FONT face=Tahoma size=2 DESIGNTIMESP=23406>См. также: checkdnsrr(), gethostbyname(), gethostbynamel(), gethostbyaddr() и раздел named справочной системы Unix man. </FONT></P> <P class=Title_3 DESIGNTIMESP=23407><FONT face=Tahoma size=2 DESIGNTIMESP=23408>Сетевая отладка PHP </FONT></P> <P class=Text_Bold DESIGNTIMESP=23409><FONT face=Tahoma size=2 DESIGNTIMESP=23410>debugger_off </FONT></P> <P DESIGNTIMESP=23411><FONT face=Tahoma size=2 DESIGNTIMESP=23412>Блокировка внутреннего отладчика РНР </FONT></P> <P DESIGNTIMESP=23413><FONT face=Tahoma size=2 DESIGNTIMESP=23414>int debugger_off(void): </FONT></P> <P DESIGNTIMESP=23415><FONT face=Tahoma size=2 DESIGNTIMESP=23416>Отладчик пока находится в стадии разработки (для РНР 4). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23417><FONT face=Tahoma size=2 DESIGNTIMESP=23418>debugger_ on </FONT></P> <P DESIGNTIMESP=23419><FONT face=Tahoma size=2 DESIGNTIMESP=23420>Разрешение использования внутреннего отладчика РНР </FONT></P> <P DESIGNTIMESP=23421><FONT face=Tahoma size=2 DESIGNTIMESP=23422>int debugger_on (string address) </FONT></P> <P DESIGNTIMESP=23423><FONT face=Tahoma size=2 DESIGNTIMESP=23424>Подключает отладчик но адресу address (на удаленном сервере). Отладчик пока находится в стадии разработки, но он доступен для РНР версии 3. </FONT></P> <P class=Text_Bold DESIGNTIMESP=23425><FONT face=Tahoma size=2 DESIGNTIMESP=23426>define_ syslog_variab!es </FONT></P> <P DESIGNTIMESP=23427><FONT face=Tahoma size=2 DESIGNTIMESP=23428>Инициализация константы диспетчера системных событий </FONT></P> <P DESIGNTIMESP=23429><FONT face=Tahoma size=2 DESIGNTIMESP=23430>void define_syslogj/araibles (void) </FONT></P> <P DESIGNTIMESP=23431><FONT face=Tahoma size=2 DESIGNTIMESP=23432>Эти константы в дальнейшем используются функциями системных событий (syslog). </FONT></P> <P DESIGNTIMESP=23433><FONT face=Tahoma size=2 DESIGNTIMESP=23434>См. также: openlog(), syslog() и closelog(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23435><FONT face=Tahoma size=2 DESIGNTIMESP=23436>openlog </FONT></P> <P DESIGNTIMESP=23437><FONT face=Tahoma size=2 DESIGNTIMESP=23438>Подключение к диспетчеру системных событий (system logger) </FONT></P> <P DESIGNTIMESP=23439><FONT face=Tahoma size=2 DESIGNTIMESP=23440>int openlog (string ident. int option, int facility) </FONT></P> <P DESIGNTIMESP=23441><FONT face=Tahoma size=2 DESIGNTIMESP=23442>Функция не обязательна для использования. Она автоматически (при необходимости) вызывается функцией syslog(), и в этом случае аргумент ident (по умолчанию) используется со значением FALSE. Строка ident будет добавляться к каждому отсылаемому сообщению. Обычно используется при необходимости явной передачи аргументов option и facility. </FONT></P> <P DESIGNTIMESP=23443><FONT face=Tahoma size=2 DESIGNTIMESP=23444>Аргумент option используется для указания параметров при генерации системного события (log message). Могут использоваться следующие значения: </FONT></P> <ul designtimesp=23445> <li designtimesp=23446><FONT face=Tahoma size=2 DESIGNTIMESP=23447>LOG_CONS — в случае ошибки при посылке сообщения оно выводится непосредственно в системную консоль; </FONT> <li designtimesp=23448><FONT face=Tahoma size=2 DESIGNTIMESP=23449>LOG_NDEIAY — незамедлительно подключиться-к диспетчеру системных событий: </FONT> <li designtimesp=23450><FONT face=Tahoma size=2 DESIGNTIMESP=23451>LOGJDDELAY — (по умолчанию) отложить подключение до посылки первого сообщения; </FONT> <li designtimesp=23452><FONT face=Tahoma size=2 DESIGNTIMESP=23453>LOG_PERROR — также выводить сообщения в стандартный поток ошибок; </FONT> <li designtimesp=23454><FONT face=Tahoma size=2 DESIGNTIMESP=23455>LOG_PID — включать в сообщения идентификатор процесса (РШ). </FONT></LI></UL> <P DESIGNTIMESP=23456><FONT face=Tahoma size=2 DESIGNTIMESP=23457>Возможно одновременное указание нескольких значений при помощи битового оператора ИЛИ, например: LOG_CONS | LOG_NDELAY LOG_PID. </FONT></P> <P DESIGNTIMESP=23458><FONT face=Tahoma size=2 DESIGNTIMESP=23459>Аргумент facility указывает вид приложения, посылающего сообщение. Это влияет на их обработку системой; </FONT></P> <ul designtimesp=23460> <li designtimesp=23461><FONT face=Tahoma size=2 DESIGNTIMESP=23462>LOG_AUTH — сообщения безопасности/авторизации (целесообразнее использовать LOG_AUTHPRIV на тех системах, где эта константа определена); </FONT> <li designtimesp=23463><FONT face=Tahoma size=2 DESIGNTIMESP=23464>LOG_AUTHPRIV — персональные сообщения бсчогасности/авторнза-ции; </FONT> <li designtimesp=23465><FONT face=Tahoma size=2 DESIGNTIMESP=23466>LOG_CRON — служба таймера (демоны сгоп и at); </FONT> <li designtimesp=23467><FONT face=Tahoma size=2 DESIGNTIMESP=23468>LOGJDAEMON — другие системные службы (daemons); </FONT> <li designtimesp=23469><FONT face=Tahoma size=2 DESIGNTIMESP=23470>LOGJCERN — сообщения ядра системы (kernel); </FONT> <li designtimesp=23471><FONT face=Tahoma size=2 DESIGNTIMESP=23472>LOG_LOCALO ... LOG_LOCAL7 — зарезервировано для локального использования; </FONT> <li designtimesp=23473><FONT face=Tahoma size=2 DESIGNTIMESP=23474>LOGJ.PR — подсистема линейного принтера; </FONT> <li designtimesp=23475><FONT face=Tahoma size=2 DESIGNTIMESP=23476>LOG_MAIL — почтовая подсистема (mail); </FONT> <li designtimesp=23477><FONT face=Tahoma size=2 DESIGNTIMESP=23478>LOG_NEWS — подсистема новостей USENET; </FONT> <li designtimesp=23479><FONT face=Tahoma size=2 DESIGNTIMESP=23480>LOG_SYSLOG — внутренне генерируемые сообщения (демоном syslogd); </FONT> <li designtimesp=23481><FONT face=Tahoma size=2 DESIGNTIMESP=23482>LOGJJSER — сообщения, порождаемые приложениями (user-level); </FONT> <li designtimesp=23483><FONT face=Tahoma size=2 DESIGNTIMESP=23484>IOGJJUCP — подсистема UUCP. </FONT></LI></UL> <P DESIGNTIMESP=23485><FONT face=Tahoma size=2 DESIGNTIMESP=23486>См. также: define_syslog_variables(), syslog() и closelog(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23487><FONT face=Tahoma size=2 DESIGNTIMESP=23488>closelog </FONT></P> <P DESIGNTIMESP=23489><FONT face=Tahoma size=2 DESIGNTIMESP=23490>Отключение от диспетчера системных событий </FONT></P> <P DESIGNTIMESP=23491><FONT face=Tahoma size=2 DESIGNTIMESP=23492>int closelog(void) </FONT></P> <P DESIGNTIMESP=23493><FONT face=Tahoma size=2 DESIGNTIMESP=23494>Использование функции необязательно. </FONT></P> <P DESIGNTIMESP=23495><FONT face=Tahoma size=2 DESIGNTIMESP=23496>См. также: define_syslog_variables(), syslog() и openlog(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23497><FONT face=Tahoma size=2 DESIGNTIMESP=23498>syslog </FONT></P> <P DESIGNTIMESP=23499><FONT face=Tahoma size=2 DESIGNTIMESP=23500>Посылка системного сообщения </FONT></P> <P DESIGNTIMESP=23501><FONT face=Tahoma size=2 DESIGNTIMESP=23502>Int syslog (int priority, string message) </FONT></P> <P DESIGNTIMESP=23503><FONT face=Tahoma size=2 DESIGNTIMESP=23504>i В аргументе message укалывается содержание сообщения. Пары символов %т в этом сообщении заменяются на строку текущего сообщения об ошибке (strerror), представляющую значение еггпо. Аргу-/ мент priority является комбинацией уровня приложения и приоритета события. Его возможные значения (в порядке понижения приоритета): </FONT></P> <ul designtimesp=23505> <li designtimesp=23506><FONT face=Tahoma size=2 DESIGNTIMESP=23507>LOG_EMERG — неработоспособность системы; </FONT> <li designtimesp=23508><FONT face=Tahoma size=2 DESIGNTIMESP=23509>LOG_ALERT — необходимы срочные действия; </FONT> <li designtimesp=23510><FONT face=Tahoma size=2 DESIGNTIMESP=23511>LOG_CRIT — критическое состояние; </FONT> <li designtimesp=23512><FONT face=Tahoma size=2 DESIGNTIMESP=23513>LOG_ERR — ошибка; </FONT> <li designtimesp=23514><FONT face=Tahoma size=2 DESIGNTIMESP=23515>LOG_WARNING — предупреждение; </FONT> <li designtimesp=23516><FONT face=Tahoma size=2 DESIGNTIMESP=23517>LOG_NOTICE — значимое сообщение; </FONT> <li designtimesp=23518><FONT face=Tahoma size=2 DESIGNTIMESP=23519>LOG_INFO — информационное сообщение; </FONT> <li designtimesp=23520><FONT face=Tahoma size=2 DESIGNTIMESP=23521>LOG_DEBUG — сообщение отладки. </FONT></LI></UL> <P class=list DESIGNTIMESP=23522><FONT face=Tahoma size=2 DESIGNTIMESP=23523>define_syslog_vcr ablest); <br designtimesp=23524>GpenlogC'mySrnpiog".<br designtimesp=23525>LOG_PID | LOG_PERROR. LOGJ.OCALO): <br designtimesp=23526>// ... if (!authorized_client()) <br designtimesp=23527>{ // процедура авторизации <br designtimesp=23528>// неавторизирован! (сохранить сообщение об этом) <br designtimesp=23529>Sacress = date("Y/m/d H:i:s"). <br designtimesp=23530>syslog(LOG_WARNING."Unauthorized client:<br designtimesp=23531>Saccess <br designtimesp=23532>$REMOTE_AODR ($HTTP_USER_AGENT)"): ) <br designtimesp=23533>closelog(): </FONT></P> <P DESIGNTIMESP=23534><FONT face=Tahoma size=2 DESIGNTIMESP=23535>В системной документации должно быть указано, как установить собственный обработчик системных событий. </FONT></P> <P DESIGNTIMESP=23536><FONT face=Tahoma size=2 DESIGNTIMESP=23537>На системах Winch ws NT служба syslog эмулируется как Event Log. </FONT></P> <P DESIGNTIMESP=23538><FONT face=Tahoma size=2 DESIGNTIMESP=23539>См. также: define_syslog_variables(), openlog(), closelog(). </FONT></P> <P class=Title_3 DESIGNTIMESP=23540><FONT face=Tahoma size=2 DESIGNTIMESP=23541>Общий низкоуровневый сетевой интерфейс </FONT></P> <P class=Text_Bold DESIGNTIMESP=23542><FONT face=Tahoma size=2 DESIGNTIMESP=23543>fsockopen </FONT></P> <P DESIGNTIMESP=23544><FONT face=Tahoma size=2 DESIGNTIMESP=23545>Открытие сокета Интернета или домена Unix </FONT></P> <P DESIGNTIMESP=23546><FONT face=Tahoma size=2 DESIGNTIMESP=23547>int fsockopen (string [udp://]hostname, int port [, int errno [, string errstr [, double timeout]]]) </FONT></P> <P DESIGNTIMESP=23548><FONT face=Tahoma size=2 DESIGNTIMESP=23549>Инициирует поток подключения к Интернет (AF_INET, используя TCP или UDP) или в домене Unix (AF_UNIX). Для доменов Интернет открывает сеанс подключения (TCP socket connection) с компьютером hostname через порт port. Значение hostname может быть либо полным доменным именем (FQDN), либо адресом IP. Для подключений UDP необходимо явно указывать протокол, например: «udp:// hostname». Для доменов Unix hostname может содержать путь к соке-ту, тогда значение port должно быть равно 0. Необязательным аргументом timeout можно указать допустимый промежуток времени подключения в секундах. </FONT></P> <P DESIGNTIMESP=23550><FONT face=Tahoma size=2 DESIGNTIMESP=23551>Функция возвращает дескриптор файла, как при открытии локального файла, который затем может использоваться в функциях файлового ввода/вывода: fgets(), fgetss(), fputs(), fclose() и feof(). </FONT></P> <P DESIGNTIMESP=23552><FONT face=Tahoma size=2 DESIGNTIMESP=23553>При возникновении ошибки возвращает FALSE и устанавливает системные значения номера и сообщения причины ошибки в аргументы (они должны передаваться по ссылке) errno и errstr. Если возвращается FALSE, а аргумент errno равняется 0, то это означает, что ошибка произошла до вызова функции (возможная причина в инициализации сокета). </FONT></P> <P DESIGNTIMESP=23554><FONT face=Tahoma size=2 DESIGNTIMESP=23555>По умолчанию сеанс открывается в эксклюзивном (блокированном) режиме. </FONT></P> <P DESIGNTIMESP=23556><FONT face=Tahoma size=2 DESIGNTIMESP=23557>См. функцию socket_set_blocking(). </FONT></P> <P DESIGNTIMESP=23558><span class=list designtimesp=23559><FONT face=Tahoma size=2 DESIGNTIMESP=23560>$fp = fsockopen <br designtimesp=23561>("www.php.net". 80. &amp;$errno. &amp;$errstr. 30).<br designtimesp=23562>if (!$fp) { <br designtimesp=23563>echo "Serrstr ($errno)&lt;br&gt;\n". } else { </FONT></SPAN></P> <P class=list DESIGNTIMESP=23564><FONT face=Tahoma size=2 DESIGNTIMESP=23565>fputs ($fp. "GET / HTTP/1 0\r\n\r\n"); <br designtimesp=23566>while (!feof($fp)) { echo fgets ($fp.l28). <br designtimesp=23567>fclose ($fp): </FONT></P> <P DESIGNTIMESP=23568><FONT face=Tahoma size=2 DESIGNTIMESP=23569>Следующий пример демонстрирует получение даты и времени от UDP службы «daytime» (порт 13) на локальной машине. </FONT></P> <P class=list DESIGNTIMESP=23570><FONT face=Tahoma size=2 DESIGNTIMESP=23571>$fp = fsockopen<br designtimesp=23572>("udp://127.0.0.1". 13. &amp;$errno. Merrstr):<br designtimesp=23573>If (!$fp) { <br designtimesp=23574>echo "ERROR: Serrno - $errstr&lt;br&gt;\n", } <br designtimesp=23575>else { fwnte($fp,"\n"); <br designtimesp=23576>echo fread($fp. 26): <br designtimesp=23577>fclose($fp): } </FONT></P> <P DESIGNTIMESP=23578><FONT face=Tahoma size=2 DESIGNTIMESP=23579>См. также: pfsockopen(), socket_set_blocking(), socket_set_timeout(), fgets(), fgetss(), fputs(), fclose() и feof(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23580><FONT face=Tahoma size=2 DESIGNTIMESP=23581>pfsockopen</FONT></P> <P DESIGNTIMESP=23582><FONT face=Tahoma size=2 DESIGNTIMESP=23583>Открытие устойчивого подключения </FONT></P> <P DESIGNTIMESP=23584><FONT face=Tahoma size=2 DESIGNTIMESP=23585>j int pfsockopen (string hostname, int port [, int errno _jy [, string errstr [, int timeout]]]) </FONT></P> <P DESIGNTIMESP=23586><FONT face=Tahoma size=2 DESIGNTIMESP=23587>Функция полностью подобна fsockopen() с той разницей, что подключение не закрывается по окончании сценария. </FONT></P> <P class=Text_Bold DESIGNTIMESP=23588><FONT face=Tahoma size=2 DESIGNTIMESP=23589>socket_get_status </FONT></P> <P DESIGNTIMESP=23590><FONT face=Tahoma size=2 DESIGNTIMESP=23591>Получение статуса подключения </FONT></P> <P DESIGNTIMESP=23592><FONT face=Tahoma size=2 DESIGNTIMESP=23593>array socket_get_status (resource socket_get_status) </FONT></P> <P DESIGNTIMESP=23594><FONT face=Tahoma size=2 DESIGNTIMESP=23595>Возвращает в массиве информацию об открытом подключении. В настоящее время возвращаются четыре элемента: </FONT></P> <ul designtimesp=23596> <li designtimesp=23597><FONT face=Tahoma size=2 DESIGNTIMESP=23598>timed_out (bool) — длительность периода ожидания ответа (тайм-аут); </FONT> <li designtimesp=23599><FONT face=Tahoma size=2 DESIGNTIMESP=23600>blocked (bool) — заблокированность; </FONT> <li designtimesp=23601><FONT face=Tahoma size=2 DESIGNTIMESP=23602>eof (bool) — получен ли символ EOF; </FONT> <li designtimesp=23603><FONT face=Tahoma size=2 DESIGNTIMESP=23604>unread_bytes (int) — число байтов, оставшихся в буфере. </FONT></LI></UL> <P DESIGNTIMESP=23605><FONT face=Tahoma size=2 DESIGNTIMESP=23606>См. также: accept_connect(), bind(), connect(), listen(), strerror(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23607><FONT face=Tahoma size=2 DESIGNTIMESP=23608>socket_set _timeout </FONT></P> <P DESIGNTIMESP=23609><FONT face=Tahoma size=2 DESIGNTIMESP=23610>Установка периода timeout для сокета </FONT></P> <P DESIGNTIMESP=23611><FONT face=Tahoma size=2 DESIGNTIMESP=23612>bool socket_set_timeout (int socket_descriptor, int seconds, int microseconds) </FONT></P> <P DESIGNTIMESP=23613><FONT face=Tahoma size=2 DESIGNTIMESP=23614>Устанавливает для подключения socket_descriptor длительность периода ожидания ответа, это сумма аргументов seconds (секунды) и microseconds (микросекунды). </FONT></P> <P class=list DESIGNTIMESP=23615><FONT face=Tahoma size=2 DESIGNTIMESP=23616>$fp = fsockopen("www.php net". 80).<br designtimesp=23617>if(!$fp) { <br designtimesp=23618>echo "Ошибка подключения \n": <br designtimesp=23619>} else { fputs($fp."GET /<br designtimesp=23620>HTTP/1 0\n\n"): <br designtimesp=23621>$start = time(): <br designtimesp=23622>socket_set_t i meout($ fp. 2): <br designtimesp=23623>$res = fread($fp. 2000):<br designtimesp=23624>var_dump(socket_get_status($fp)) <br designtimesp=23625>fclose($fp);<br designtimesp=23626>print $res: } </FONT></P> <P DESIGNTIMESP=23627><FONT face=Tahoma size=2 DESIGNTIMESP=23628>См. также: fsockopen() и fopen(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23629><FONT face=Tahoma size=2 DESIGNTIMESP=23630>socket_set_blocking </FONT></P> <P DESIGNTIMESP=23631><FONT face=Tahoma size=2 DESIGNTIMESP=23632>Установка режима блокирования </FONT></P> <P DESIGNTIMESP=23633><FONT face=Tahoma size=2 DESIGNTIMESP=23634>int socket_set_blocking (int socket_descriptor, int mode) </FONT></P> <P DESIGNTIMESP=23635><FONT face=Tahoma size=2 DESIGNTIMESP=23636>Если в аргументе mode указывается значение FALSE, то обозначенный дескриптором socket_descriptor сокет переводится в неблокируемый режим. Противное происходит при TRUE. Это воздействует на вызовы функций чтения, подобные fgets(), которые исполняются незамедлительно в неблокированном режиме или, иначе, ожидают разблокировки (получения читаемых данных). </FONT></P> <P class=Title_2 DESIGNTIMESP=23637><a name=6 designtimesp=23638></A><FONT face=Tahoma size=2 DESIGNTIMESP=23639>Низкоуровневый сетевой (сокет) интерфейс </FONT></P> <P DESIGNTIMESP=23640><FONT face=Tahoma size=2 DESIGNTIMESP=23641>Эта группа функций позволяет использовать низкоуровневый сетевой интерфейс и выступать как в качестве сервера, так и в качестве клиента. Для возможности их использования они должны быть разрешены при компиляции директивой --enable-sockets. Подразумевается, что вы имеете представление о том, как функционирует этот интерфейс на уровне системы. </FONT></P> <P DESIGNTIMESP=23642><FONT face=Tahoma size=2 DESIGNTIMESP=23643>Наиболее общий сетевой интерфейс предоставляют сокет-функции fsockopen() и pfsockopen() (их проще использовать в том случае, если вам не требуется создание сервера). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23644><FONT face=Tahoma size=2 DESIGNTIMESP=23645>Пример 1. Простой TCP/IP сервер </FONT></P> <P DESIGNTIMESP=23646><FONT face=Tahoma size=2 DESIGNTIMESP=23647>Этот пример иллюстрирует реализацию простого сервера, отвечающего на запросы. Измените адрес и порт по вашему усмотрению. Подключиться к этому серверу можно с помощью сетевого клиента, например командой: telnet 192.168.1.53 10000 (параметры: ваш адрес и используемый порт). Все, что будет посылаться на сервер, будет на нем выводиться и возвращаться эхом клиенту. Для прекращения сеанса связи введите 'quit'. </FONT></P> <P class=list DESIGNTIMESP=23648><FONT face=Tahoma size=2 DESIGNTIMESP=23649>&lt;?php <br designtimesp=23650>error reporting (E_ALL); <br designtimesp=23651>/* Позволяет сценарию бесконечно<br designtimesp=23652>удерживать связь. */ setjnmejimit (0): <br designtimesp=23653>Saddress = '192.168.1 53';<br designtimesp=23654>/* установите свои значения <br designtimesp=23655>*/ Sport = 10000: <br designtimesp=23656>if (($sock = socket <br designtimesp=23657>(AFJNET. SOCK_STREAM. 0)) &lt; 0)<br designtimesp=23658>{ echo " Ошибка в socketO: "<br designtimesp=23659>. strerror (Ssock) . "\n": } <br designtimesp=23660>if (($ret = bind (Ssock. Saddress. Sport))<br designtimesp=23661>&lt; 0) { echo "Ошибка в bind()<br designtimesp=23662>. " strerror ($ret) "\n"; ) <br designtimesp=23663>if ((Sret = listen (Ssock. 5)) &lt; 0) <br designtimesp=23664>{ echo "Ошибка в listen(): " <br designtimesp=23665>. strerror (Sret) . "\n"; } <br designtimesp=23666>do ( if ((Smsgsock = accept_connect<br designtimesp=23667>($sock)) &lt; 0) { echo<br designtimesp=23668>"Ошибка в accept_connect().<br designtimesp=23669>". strerror (Smsgsock)."\n" break; <br designtimesp=23670>} do { $buf = " ; <br designtimesp=23671>Sret = read (Smsgsock. Sbuf. 2048): <br designtimesp=23672>if (Sret &lt; 0) { <br designtimesp=23673>echo "Ошибка в read(): " strerror (Sret) .<br designtimesp=23674>"\n": break 2; } <br designtimesp=23675>if (Sret == 0) { break 2. } <br designtimesp=23676>Sbuf = trim (Sbuf):<br designtimesp=23677>if ($buf == 'quit') { <br designtimesp=23678>close (Smsgsock); <br designtimesp=23679>break 2: } Stalkback = "Вы ввели<br designtimesp=23680>'Sbuf'.W: write (Smsgsock. Stalkback, <br designtimesp=23681>strlen (Stalkback)); echo "Sbuf\n": }<br designtimesp=23682>while (TRUE): close (Smsgsock). } <br designtimesp=23683>while (TRUE). close (Ssock); ?&gt; </FONT></P> <P class=Text_Bold DESIGNTIMESP=23684><FONT face=Tahoma size=2 DESIGNTIMESP=23685>Пример 2. Простой TCP/IP клиент </FONT></P> <P DESIGNTIMESP=23686><FONT face=Tahoma size=2 DESIGNTIMESP=23687>Данный сценарий получает страницу через HTTP, отправляет запрос HEAD, выводит ответ и завершается. </FONT></P> <P DESIGNTIMESP=23688><span class=list designtimesp=23689><FONT face=Tahoma size=2 DESIGNTIMESP=23690>&lt;?php <br designtimesp=23691>error_reporting (E_ALL); <br designtimesp=23692>echo "&lt;h2&gt;TCP/IP Connection&lt;/h2&gt;\n"; <br designtimesp=23693>/* Получить порт службы WWW <br designtimesp=23694>(обычно: 80). */ $service__port = <br designtimesp=23695>getservbyrame ('www'. 'tcp'): <br designtimesp=23696>'* Попучить IP адрес хоста */ <br designtimesp=23697>Saddress = gethostbyname<br designtimesp=23698>Cwww.php.net'): <br designtimesp=23699>/* Создать TCP/IP socket. */ <br designtimesp=23700>Ssocket - socket (AFJNET. SOCK_SlRtAM. 0): <br designtimesp=23701>if (Ssocket &lt; 0) { <br designtimesp=23702>echo "Ошибка в socketO:<br designtimesp=23703>" strerror (Ssocket) . "\n": } <br designtimesp=23704>else { "socket создан " strerror (Ssocket) .<br designtimesp=23705>"\n", } <br designtimesp=23706>echo "Попытка подключиться<br designtimesp=23707>к '$address' (порт 'Sservice_port')<br designtimesp=23708>..."; Sresult = connect <br designtimesp=23709>(Ssocket. Saddress. $servKe_port);<br designtimesp=23710>if (Sresjit 0) { echo "Ошибка в<br designtimesp=23711>connect;): ($result) " strerror(Sresult)<br designtimesp=23712>."\n"; } else { echo "OK \r". } <br designtimesp=23713>$111 = "HFAD / HTTP/1.0\r\rur\n";<br designtimesp=23714>// посылаемые данные $out = '': <br designtimesp=23715>// буфер для приема данных <br designtimesp=23716>echo "Sending HTTP HEAD request...":<br designtimesp=23717>// послать запрос заголовка HTTP<br designtimesp=23718>write (Ssocket. $in, strlen ($in)). echo "GKAn": <br designtimesp=23719>echo "Reading response:\n\n": </FONT></SPAN></P> <P class=list DESIGNTIMESP=23720><FONT face=Tahoma size=2 DESIGNTIMESP=23721>// принять ОТВEТ (заголовок) while<br designtimesp=23722>(read (Ssocket. Sout. 2048)) <br designtimesp=23723>{ echo Sout: } echo "closing <br designtimesp=23724>socket..."; close (Ssocket): <br designtimesp=23725>echo "OK.\n\n": ?&gt; </FONT></P> <P class=Text_Bold DESIGNTIMESP=23726><FONT face=Tahoma size=2 DESIGNTIMESP=23727>socket </FONT></P> <P DESIGNTIMESP=23728><FONT face=Tahoma size=2 DESIGNTIMESP=23729>Создание сокета </FONT></P> <P DESIGNTIMESP=23730><FONT face=Tahoma size=2 DESIGNTIMESP=23731>int socket (int domain, int type, int protocol) </FONT></P> <P DESIGNTIMESP=23732><FONT face=Tahoma size=2 DESIGNTIMESP=23733>Создаст конечную точку сетевой коммуникации (сокет) и возвращает его дескриптор. При ошибке возвращает отрицательное значение кода ошибки, которое затем может быть передано в функцию strerror() для получения текстового объяснения причины ошибки. </FONT></P> <P DESIGNTIMESP=23734><FONT face=Tahoma size=2 DESIGNTIMESP=23735>Аргументом domain указывается тин сети, в которой создастся сокет; %. допустимые значения: AF JNET и AF_UNIX. </FONT></P> <P DESIGNTIMESP=23736><FONT face=Tahoma size=2 DESIGNTIMESP=23737>Аргумент type указывает тип создаваемого сокета; он может быть одним из следующих: SOCK_STREAM, SOCKJDGRAM, SOCKJEQPACKET, SOCK_RAW, SOCK RDM или SOCK PACKET. </FONT></P> <P DESIGNTIMESP=23738><FONT face=Tahoma size=2 DESIGNTIMESP=23739>Аргумент protocol определяет используемый протокол передачи данных. </FONT></P> <P DESIGNTIMESP=23740><FONT face=Tahoma size=2 DESIGNTIMESP=23741>Более подробная информация содержится в системной документации. </FONT></P> <P DESIGNTIMESP=23742><FONT face=Tahoma size=2 DESIGNTIMESP=23743>См. также: accept_connect(), bind(), connect(), listen(), strerror() и socket_get_status(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23744><FONT face=Tahoma size=2 DESIGNTIMESP=23745>close </FONT></P> <P DESIGNTIMESP=23746><FONT face=Tahoma size=2 DESIGNTIMESP=23747>Закрытие сокета </FONT></P> <P DESIGNTIMESP=23748><FONT face=Tahoma size=2 DESIGNTIMESP=23749>bool close (int socket) </FONT></P> <P DESIGNTIMESP=23750><FONT face=Tahoma size=2 DESIGNTIMESP=23751>Закрывает сокет, указанный дескриптором, и возвращает TRUE или FALSE (при ошибке или при недопустимом дескрипторе). </FONT></P> <P DESIGNTIMESP=23752><FONT face=Tahoma size=2 DESIGNTIMESP=23753>Заметьте: функция не может использоваться с файловыми дескрипторами РНР, созданными fopen(), popen(), fsockopen(), psockopen(); она работает только с теми, которые созданы функциями socket() или accept_connect(). </FONT></P> <P DESIGNTIMESP=23754><FONT face=Tahoma size=2 DESIGNTIMESP=23755>См. также: bind(), listen(), socket(), socket_get_status() и strerror(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23756><FONT face=Tahoma size=2 DESIGNTIMESP=23757>connect </FONT></P> <P DESIGNTIMESP=23758><FONT face=Tahoma size=2 DESIGNTIMESP=23759>Подключение к сокету </FONT></P> <P DESIGNTIMESP=23760><FONT face=Tahoma size=2 DESIGNTIMESP=23761>int connect (int socket, string address [, int port]) </FONT></P> <P DESIGNTIMESP=23762><FONT face=Tahoma size=2 DESIGNTIMESP=23763>Инициирует подключение, используя дескриптор socket (который должен быть ранее успешно создан функцией socket()). Возвращает О или, при ошибке, отрицательное значение кода ошибки, которое затем может быть передано в функцию strerror() для получения текстового объяснения причины ошибки. </FONT></P> <P DESIGNTIMESP=23764><FONT face=Tahoma size=2 DESIGNTIMESP=23765>Аргумент address должен содержать либо адрес IP, в формате с разделением точками (например: 127.0.0.1), если socket принадлежит семейству AF_INET; либо строку пути к соксту в домене Unix, если он из семейства AFJJNIX. </FONT></P> <P DESIGNTIMESP=23766><FONT face=Tahoma size=2 DESIGNTIMESP=23767>Аргумент port используется только для AF_INET сокет и определяет порт удаленной машины, к которому производится подключение. </FONT></P> <P DESIGNTIMESP=23768><FONT face=Tahoma size=2 DESIGNTIMESP=23769>См. также: bind(), listen(), socket(), socket_get_status() и strerror(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23770><FONT face=Tahoma size=2 DESIGNTIMESP=23771>bind </FONT></P> <P DESIGNTIMESP=23772><FONT face=Tahoma size=2 DESIGNTIMESP=23773>Привязка сокета к адресу </FONT></P> <P DESIGNTIMESP=23774><FONT face=Tahoma size=2 DESIGNTIMESP=23775>int bind (int socket, string address [. int port]) </FONT></P> <P DESIGNTIMESP=23776><FONT face=Tahoma size=2 DESIGNTIMESP=23777>Назначает socket (который должен быть ранее успешно создан функ-дней socket()) IP-адресу address. Возвращает 0 или, при ошибке, от-рнцатсльное значение кода ошибки, которое затем может быть передано в функцию strerror() для получения текстового объяснения причины ошибки. </FONT></P> <P DESIGNTIMESP=23778><FONT face=Tahoma size=2 DESIGNTIMESP=23779>Аргумент должен содержать либо адрес IP, в формате с разделением точками (например: 127.0.0.1), если сокет принадлежит семейству AF_INET; либо строку пути к,сокету и домене Unix, если он из семейства AFJJNIX. </FONT></P> <P DESIGNTIMESP=23780><FONT face=Tahoma size=2 DESIGNTIMESP=23781>Аргумент port используется только для AF_INET сокет и определяет порт удаленной машины, к которому производится подключение. </FONT></P> <P DESIGNTIMESP=23782><FONT face=Tahoma size=2 DESIGNTIMESP=23783>Заметьте: для подключения (в качестве клиента) используется функция connect(), эта же функция позволяет выступать в роли сервера (для этого дополнительно используются функции accept_connect() и listen()). </FONT></P> <P DESIGNTIMESP=23784><FONT face=Tahoma size=2 DESIGNTIMESP=23785>См. также: accept_connect(), connect(), listen(), socket(), socket_get_ status() и strerror(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23786><FONT face=Tahoma size=2 DESIGNTIMESP=23787>listen </FONT></P> <P DESIGNTIMESP=23788><FONT face=Tahoma size=2 DESIGNTIMESP=23789>Разрешение приема данных из сокета </FONT></P> <P DESIGNTIMESP=23790><FONT face=Tahoma size=2 DESIGNTIMESP=23791>int listen (int socket, int backlog) </FONT></P> <P DESIGNTIMESP=23792><FONT face=Tahoma size=2 DESIGNTIMESP=23793>После того как функцией socket() создан сокет и он назначен адресу (его порту) функцией bind(), эта функция позволяет системе ожидать получения внешних данных и перенаправлять их в socket. Аргумент backlog указывает максимальное число входящих и воспринимаемых подключений. </FONT></P> <P DESIGNTIMESP=23794><FONT face=Tahoma size=2 DESIGNTIMESP=23795>Функция применима только к типам сокетов: SOCK_STREAM или SOCK SEQPACKET. </FONT></P> <P DESIGNTIMESP=23796><FONT face=Tahoma size=2 DESIGNTIMESP=23797>Возвращает 0 или, при ошибке, отрицательное значение кода ошибки, которое затем может быть передано в функцию strerror() для получения текстового объяснения причины ошибки. </FONT></P> <P DESIGNTIMESP=23798><FONT face=Tahoma size=2 DESIGNTIMESP=23799>См. также: accept_connect(), bind(), connect(), socket(), socket_get_status() и strerror(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23800><FONT face=Tahoma size=2 DESIGNTIMESP=23801>accept_ connect </FONT></P> <P DESIGNTIMESP=23802><FONT face=Tahoma size=2 DESIGNTIMESP=23803>Прием данных от сокета </FONT></P> <P DESIGNTIMESP=23804><FONT face=Tahoma size=2 DESIGNTIMESP=23805>int accept connect (int socket) </FONT></P> <P DESIGNTIMESP=23806><FONT face=Tahoma size=2 DESIGNTIMESP=23807>После того как функцией socket() создан сокет, и он был назначен адресу (его порту) функцией bind(), и функцией listen() было разрешено принимать входящие подключения; эта функция указывает системе принимать внешние данные из socket. </FONT></P> <P DESIGNTIMESP=23808><FONT face=Tahoma size=2 DESIGNTIMESP=23809>Возвращает новый сокет-дескриптдр или, при ошибке, отрицательное значение кода ошибки, которое затем может быть передано в функцию strerror() для получения текстового объяснения причины ошибки. Возвращаемый дескриптор используется исключительно для обмена данными с клиентами подключений. Исходный дескриптор тем не менее остается действительным и может использоваться. </FONT></P> <P DESIGNTIMESP=23810><FONT face=Tahoma size=2 DESIGNTIMESP=23811>При появлении нескольких входящих подключений используется первое; при их отсутствии функция будет ожидать их появления. Если socket был разблокирован функцией socket_set_blocking() (или set_ nonblockO), при отсутствии входящих данных функция завершается с соответствующим кодом ошибки. </FONT></P> <P DESIGNTIMESP=23812><FONT face=Tahoma size=2 DESIGNTIMESP=23813>См. также: bind(), connect(), listen(), socket(), socket_get_status() и strerror(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23814><FONT face=Tahoma size=2 DESIGNTIMESP=23815>read </FONT></P> <P DESIGNTIMESP=23816><FONT face=Tahoma size=2 DESIGNTIMESP=23817>Получение данных от сокета </FONT></P> <P DESIGNTIMESP=23818><FONT face=Tahoma size=2 DESIGNTIMESP=23819>int read (int socket_des, string Sbuffer, int length) </FONT></P> <P DESIGNTIMESP=23820><FONT face=Tahoma size=2 DESIGNTIMESP=23821>Функция читает данные из socketjies (сокет-дсскриптор, «воссозданный» функцией accept_connect()) в буфер Sbuffer, в объеме байтов, указанном length. Чтение завершается ранее, если встречается символ &lt;&lt;\n», &lt;&lt;\t» или «\0». Возвращает число прочитанных байтов. </FONT></P> <P DESIGNTIMESP=23822><FONT face=Tahoma size=2 DESIGNTIMESP=23823>См. также: accept_connect(), bind(), connect(), listen(), strerror(), socket_get status() и write(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23824><FONT face=Tahoma size=2 DESIGNTIMESP=23825>write </FONT></P> <P DESIGNTIMESP=23826><FONT face=Tahoma size=2 DESIGNTIMESP=23827>Запись данных в сокет </FONT></P> <P DESIGNTIMESP=23828><FONT face=Tahoma size=2 DESIGNTIMESP=23829>int write (int socket_des, string Sbuffer, int length) </FONT></P> <P DESIGNTIMESP=23830><FONT face=Tahoma size=2 DESIGNTIMESP=23831>Записывает в сокет socketjjes содержимое буфера Sbuffer в объеме length байтов. </FONT></P> <P DESIGNTIMESP=23832><FONT face=Tahoma size=2 DESIGNTIMESP=23833>См. также: accept_connect(), bind(), connect(), listen(), read(), strerror() и socket_get_status(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23834><FONT face=Tahoma size=2 DESIGNTIMESP=23835>strerror </FONT></P> <P DESIGNTIMESP=23836><FONT face=Tahoma size=2 DESIGNTIMESP=23837>Получение описания ошибки сокета </FONT></P> <P DESIGNTIMESP=23838><FONT face=Tahoma size=2 DESIGNTIMESP=23839>string strerror (int errno) </FONT></P> <P DESIGNTIMESP=23840><FONT face=Tahoma size=2 DESIGNTIMESP=23841>Принимаемый аргумент errno является значением, возвращаемым одной из сокет-функций. Возвращается строка текста, объясняющая код ошибки. Это делает более удобным разбор причин неработоспособности. </FONT></P> <P DESIGNTIMESP=23842><FONT face=Tahoma size=2 DESIGNTIMESP=23843>&lt;?php <br designtimesp=23844>if (($socket = socket (AFJNET, <br designtimesp=23845>SOCK_STREAM. 0)) &lt; 0) { <br designtimesp=23846>echo "Причина ошибки в socket():<br designtimesp=23847>" . strerror (Ssocket) . "\n": } <br designtimesp=23848>if (($ret = bind ($socket. '127.0.0.1'. 80)) &lt; 0) <br designtimesp=23849>{ echo "Причина ошибки в bind(): <br designtimesp=23850>" . strerror ($ret) . "\n": } ?&gt; </FONT></P> <P DESIGNTIMESP=23851><FONT face=Tahoma size=2 DESIGNTIMESP=23852>Если указанный сценарий будет исполняться не с административными привилегиями (root), то скорее всего он выведет: «Причина ошибки в bind(): Permission denied». </FONT></P> <P DESIGNTIMESP=23853><FONT face=Tahoma size=2 DESIGNTIMESP=23854>См. также: accept_connect(), bind(), connect(), listen(), socket() и socket_ get_status(). </FONT></P> <P class=Title_2 DESIGNTIMESP=23855><a name=7 designtimesp=23856></A><FONT face=Tahoma size=2 DESIGNTIMESP=23857>Библиотека CURL (Client URL Library) </FONT></P> <P DESIGNTIMESP=23858><FONT face=Tahoma size=2 DESIGNTIMESP=23859>PHP поддерживает библиотеку libcurl, созданную Даниелем Стенбер-гом (Daniel Stenberg), которая позволяет осуществлять подключение и взаимодействие с разными типами серверов, используя различные протоколы. В настоящее время libcurl поддерживает протоколы: http, https, ftp, gopher, telnet, diet, file, Idap. Также библиотека поддерживает сертификаты HTTPS, методы HTTP POST и PUT, загрузку с FTP и HTTP, прокси, cookies и аутентификацию пользователя с паролем. </FONT></P> <P DESIGNTIMESP=23860><FONT face=Tahoma size=2 DESIGNTIMESP=23861>Для того чтобы использовать функции CURL, необходимо установить пакет (package) CURL (его можно загрузить с http://curl.haxx.se/). РНР необходима версия CURL 7.0.2-beta или выше. Затем нужно перекомпилировать РНР с параметром — with-curl[=DIR], где DIR указывает на месторасположение каталога, содержащего каталоги lib и include. В каталоге include должна находиться папка curl, содержащая файлы easy.h n curl.h, а в каталоге lib должен находиться файл libcurl.a. </FONT></P> <P DESIGNTIMESP=23862><FONT face=Tahoma size=2 DESIGNTIMESP=23863>Схема использования функций проста: сначала инициализируется сессия CURL, используя функцию cur'MnitO, при этом устанавливаются параметры передачи, с которыми она будет выполнена функцией curl_exec(); после чего сессия может быть завершена с помощью curl_ close(). Далее приводится пример, возвращающий домашнюю страницу РНР и сохраняющий ее в файле. </FONT></P> <P class=list DESIGNTIMESP=23864><FONT face=Tahoma size=2 DESIGNTIMESP=23865>&lt;?php <br designtimesp=23866>$ch = curl_imt ("http://www.php.net/"): <br designtimesp=23867>$fp = fopen ("php_homepage.txt". "w"): <br designtimesp=23868>curl_setopt ($ch. CURLOPTJILE. $fp): <br designtimesp=23869>curl_setopt ($ch. CURLOPT_HEADER. 0).<br designtimesp=23870>curl_exec ($ch): curl_close ($ch): <br designtimesp=23871>fclose ($fp;. ?&gt; </FONT></P> <P class=Text_Bold DESIGNTIMESP=23872><FONT face=Tahoma size=2 DESIGNTIMESP=23873>curl_ init </FONT></P> <P DESIGNTIMESP=23874><FONT face=Tahoma size=2 DESIGNTIMESP=23875>Открытие сеанса CURL </FONT></P> <P DESIGNTIMESP=23876><FONT face=Tahoma size=2 DESIGNTIMESP=23877>int cur!_init ([string url]) </FONT></P> <P DESIGNTIMESP=23878><FONT face=Tahoma size=2 DESIGNTIMESP=23879>Инициализирует новую сессию и возвращает дескриптор CURL, далее используемый функциями curl_setopt(), curl_exec() и curl_close(). В функции можно указать необязательный аргумент url, в дальнейшем используемый как параметр CURLOPT_URL, который также можно установить функцией curl_setopt(). </FONT></P> <P class=list DESIGNTIMESP=23880><FONT face=Tahoma size=2 DESIGNTIMESP=23881>&lt;?php <br designtimesp=23882>$ch = curljmt()<br designtimesp=23883>cjrl_setopt <br designtimesp=23884>($ch. CURLOPT_URL. "http://www.zend.com/"): <br designtimesp=23885>curl_setopt ($ch. CURLOPTJHEADER. 0): <br designtimesp=23886>curl_exec ($ch). curl_close ($ch);?&gt; </FONT></P> <P DESIGNTIMESP=23887><FONT face=Tahoma size=2 DESIGNTIMESP=23888>См. также: curl_close(), curl_setopt(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=23889><FONT face=Tahoma size=2 DESIGNTIMESP=23890>curl_setopt </FONT></P> <P DESIGNTIMESP=23891><FONT face=Tahoma size=2 DESIGNTIMESP=23892>Установка параметров передачи CURL </FONT></P> <P DESIGNTIMESP=23893><FONT face=Tahoma size=2 DESIGNTIMESP=23894>boo! curl_setopt (int ch, string option, mixed value) </FONT></P> <P DESIGNTIMESP=23895><FONT face=Tahoma size=2 DESIGNTIMESP=23896>Функция устанавливает параметр, имеющий имя option сессии CURL с именем ch, в значение value. </FONT></P> <P DESIGNTIMESP=23897><FONT face=Tahoma size=2 DESIGNTIMESP=23898>Для следующих возможных значений аргумента option соответствующее значение value должно указываться в виде целого числа (тип long): </FONT></P> <ul designtimesp=23899> <li designtimesp=23900><FONT face=Tahoma size=2 DESIGNTIMESP=23901>CURLOPT_INFILESIZE: установить ожидаемый размер получаемого файла при его загрузке на удаленный сервер; </FONT> <li designtimesp=23902><FONT face=Tahoma size=2 DESIGNTIMESP=23903>CURLOPTJ/ERBOSE: при ненулевом значении будет сообщаться все, что происходит в ходе сессии; </FONT> <li designtimesp=23904><FONT face=Tahoma size=2 DESIGNTIMESP=23905>CURLOPT_HEADER: при ненулевом значении заголовок будет включаться в содержимое вывода; </FONT> <li designtimesp=23906><FONT face=Tahoma size=2 DESIGNTIMESP=23907>CURLOPT_NOPROGRESS: при ненулевом значении блокирует отображение индикатора хода выполнения (progress meter) операций передачи (CURL transfers). (По умолчанию этот параметр установлен, и его следует изменять только в целях отладки); </FONT> <li designtimesp=23908><FONT face=Tahoma size=2 DESIGNTIMESP=23909>CURLOPT_NOBODY: при ненулевом значении содержимое «BODY» не будет включаться в вывод; </FONT> <li designtimesp=23910><FONT face=Tahoma size=2 DESIGNTIMESP=23911>CURLOPT_FAILONERROR: при ненулевом значении будет происходить безмолвное завершение сценария РНР, в случае получения кода возврата HTTP со значением, большим чем 300. По умолчанию же происходит нормальный возврат в сценарий, с игнорированием кода, вызвавшего ошибку; </FONT> <li designtimesp=23912><FONT face=Tahoma size=2 DESIGNTIMESP=23913>CURLOPTJJPLOAD: при ненулевом значении подготавливает РНР для загрузки; </FONT> <li designtimesp=23914><FONT face=Tahoma size=2 DESIGNTIMESP=23915>CURLOPT_POST: при ненулевом значении указывает РНР выполнить обычный метод HTTP POST. Тип POST будет иметь нормальный для HTML-форм вид application/x-www-from-urlencoded; </FONT> <li designtimesp=23916><FONT face=Tahoma size=2 DESIGNTIMESP=23917>CURLOPT_FTPLISTONLY: при ненулевом значении РНР будет выводить только имена файлов в FTP; </FONT> <li designtimesp=23918><FONT face=Tahoma size=2 DESIGNTIMESP=23919>CURLOPT_FTPAPPEND: при ненулевом значении РНР будет осуществлять добавление в конец существующего удаленного FTP-файла вместо его перезаписи; </FONT> <li designtimesp=23920><FONT face=Tahoma size=2 DESIGNTIMESP=23921>CURLOPT_NETRC: при ненулевом значении РНР будет просматривать ваш файл -./netrc в поисках вашего имени пользователя (username) и пароля (password) для осуществления доступа к удаленному сайту; </FONT> <li designtimesp=23922><FONT face=Tahoma size=2 DESIGNTIMESP=23923>CURLOPT_FOLLOWLOCATION: при ненулевом значении перемещается согласно получаемым переадресациям, указанным в HTTP заголовках "Location: " (так как это будет происходить рекурсивно, рсдирект будет выполняться столько раз, сколько будет получено заголовков "Location: "); </FONT> <li designtimesp=23924><FONT face=Tahoma size=2 DESIGNTIMESP=23925>CURLOPT_PUT: при ненулевом значении отсылает файл методом HTTP PUT. Параметры файла CURLOPTJNFILE и CURLOPTJNFILESIZE также должны быть указаны; </FONT> <li designtimesp=23926><FONT face=Tahoma size=2 DESIGNTIMESP=23927>CURLOPT_MUTE: при ненулевом значении РНР будет исполнять функции CURL не выдавая сообщений; </FONT> <li designtimesp=23928><FONT face=Tahoma size=2 DESIGNTIMESP=23929>CURLOPT_TIMEOUT: передает целочисленный (long) параметр, определяющий максимально допустимое время исполнения функций CURL в секундах; </FONT> <li designtimesp=23930><FONT face=Tahoma size=2 DESIGNTIMESP=23931>CURLOPT_LOW_SPEED_LIMIT: передает целочисленный (long) параметр, определяющий скорость передачи данных в байтах в секунду, которая будет использоваться для проверки того, стоит ли прервать выполнение сеанса передачи при превышении им максимально допустимого времени CURLOPT_LOW_SPEED_TIME; </FONT> <li designtimesp=23932><FONT face=Tahoma size=2 DESIGNTIMESP=23933>CURLOPT_LOW_SPEED_TIME: передает целочисленный (long) параметр, определяющий максимальное время передачи данных в секундах при скорости CURLOPT_LOW_SPEED_LIMIT, при превышении которого РНР будет прерывать выполнение операции, рассматривая ее как недопустимо медленную; </FONT> <li designtimesp=23934><FONT face=Tahoma size=2 DESIGNTIMESP=23935>CURLOPT_RESUME_FROM: передает целочисленный (long) параметр, определяющий смещение в байтах, от которого должна начинаться передача; </FONT> <li designtimesp=23936><FONT face=Tahoma size=2 DESIGNTIMESP=23937>CURLOPT_SSLVERSION: передает целочисленный параметр, определяющий используемую версию SSL (2 или 3). По умолчанию РНР будет пытаться самостоятельно определить ее, хотя в некоторых случаях ее следует устанавливать вручную; </FONT> <li designtimesp=23938><FONT face=Tahoma size=2 DESIGNTIMESP=23939>CURLOPT_TIMECONDITION: передает константный параметр, определяющий смысл параметра CURLOPT_TIMEVALUE. Возможные значения: TIMECONDJFMODSINCE (но умолчанию) или TIMECONDJSUNMODSINCE. Это применимо только к HTTP; , </FONT> <li designtimesp=23940><FONT face=Tahoma size=2 DESIGNTIMESP=23941>CURLOPT_TIMEVALUE: передает целочисленный (long) параметр, содержащий значение времени в формате «Unix-timestamp» (число секунд с 1 января, 1970). Использование этого значения зависит от установки CURLOPTJTIMEVALUE. </FONT></LI></UL> <P DESIGNTIMESP=23942><FONT face=Tahoma size=2 DESIGNTIMESP=23943>Для следующих возможных значений аргумента option соответствующее значение value должно указываться в строковых значениях (тип string): </FONT></P> <ul designtimesp=23944> <li designtimesp=23945><FONT face=Tahoma size=2 DESIGNTIMESP=23946>CURLOPTJJRL: адрес URL, к которому отправляется запрос. Этот параметр также можно установить при вызове функции cur1_init(); </FONT> <li designtimesp=23947><FONT face=Tahoma size=2 DESIGNTIMESP=23948>CURLOPTJJSERPWD: передает строку в формате «[username]: [password]* при подключении; </FONT> <li designtimesp=23949><FONT face=Tahoma size=2 DESIGNTIMESP=23950>CURLOPT_PROXYUSERPWD: при подключении к HTTP прокси передает строку в формате «[username] : [password]»; </FONT> <li designtimesp=23951><FONT face=Tahoma size=2 DESIGNTIMESP=23952>CURLOPT RANGE: передаст диапазон в формате «X-Y», где значение X или Y может быть не указано. При HTTP-передаче возможна одновременная передача нескольких интервалов, разделенных за-пятыми: «X-Y.N-M»; </FONT> <li designtimesp=23953><FONT face=Tahoma size=2 DESIGNTIMESP=23954>CURLOPT_POSTFIELDS: передает полную строку данных, посылаемых методом HTTP POST; </FONT> <li designtimesp=23955><FONT face=Tahoma size=2 DESIGNTIMESP=23956>CURLOPT_REFERER: передает строку, содержащую заголовок "referer", используемый в запросах HTTP; </FONT> <li designtimesp=23957><FONT face=Tahoma size=2 DESIGNTIMESP=23958>CURLOPTJJSERAGENT: передает строку, содержащую заголовок "user-agent", используемый в запросах HTTP: </FONT> <li designtimesp=23959><FONT face=Tahoma size=2 DESIGNTIMESP=23960>CURLOPT_FTPPORT: передает строку, содержащую значение IP-адреса, используемого инструкцией ftp "POST" для подключения к удаленному серверу FTP Эта строка может содержать простой IP-адрес, имя хоста или имя сетевого интерфейса (под UNIX), и даже символ '-', указывающий системный адрес IP, используемый по умолчанию; </FONT> <li designtimesp=23961><FONT face=Tahoma size=2 DESIGNTIMESP=23962>CURLOPT_COOKIE: передает строку с содержимым cookie, который будет отправлен в заголовке HTTP; </FONT> <li designtimesp=23963><FONT face=Tahoma size=2 DESIGNTIMESP=23964>CURLOPT_SSLCERT: передает строку с именем файла, содержащего SSL сертификат формата РЕМ; </FONT> <li designtimesp=23965><FONT face=Tahoma size=2 DESIGNTIMESP=23966>CURLOPT SSLCERTPASSWD: передает строку с содержимым пароля, необходимым для использования сертификата, указанного параметром CURLOPT_SSLCERT; </FONT> <li designtimesp=23967><FONT face=Tahoma size=2 DESIGNTIMESP=23968>CURLOPT_COOKIEFILE: передает строку с именем файла, содержащего данные cookie. Этот файл должен быть в формате Netscape или виде простого текста заголовков HTTP, сохраненного в файле; </FONT> <li designtimesp=23969><FONT face=Tahoma size=2 DESIGNTIMESP=23970>CURLOPT _CUSTOMREQUEST: передает строку, которая будет использоваться вместо HTTP-запроса GET или HEAD. Это имеет смысл при выполнении устаревшего запроса HTTP, например DELETE. </FONT></LI></UL> <P DESIGNTIMESP=23971><FONT face=Tahoma size=2 DESIGNTIMESP=23972>Не пытайтесь осуществить это, не выяснив предварительно, поддерживает ли сервер указанную команду. </FONT></P> <P DESIGNTIMESP=23973><FONT face=Tahoma size=2 DESIGNTIMESP=23974>Для следующих возможных значений аргумента option соответствующее значение value должно указываться дескриптором, полученным от функции fopen(): </FONT></P> <ul designtimesp=23975> <li designtimesp=23976><FONT face=Tahoma size=2 DESIGNTIMESP=23977>CURLOPT_FILE: файл, в котором следует сохранять полученные данные. По умолчанию стандартный поток вывода: stdout; </FONT> <li designtimesp=23978><FONT face=Tahoma size=2 DESIGNTIMESP=23979>CURLOPT_INFILE: файл, из которого следует получать данные для передачи; </FONT> <li designtimesp=23980><FONT face=Tahoma size=2 DESIGNTIMESP=23981>CURLOPT_WRITEHEADER: файл для записи содержимого заголовков; </FONT> <li designtimesp=23982><FONT face=Tahoma size=2 DESIGNTIMESP=23983>CURLOPT_STDERR: файл для сохранения результатов ошибок, вместо stderr. </FONT></LI></UL> <P class=Text_Bold DESIGNTIMESP=23984><FONT face=Tahoma size=2 DESIGNTIMESP=23985>curl_exec</FONT></P> <P DESIGNTIMESP=23986><FONT face=Tahoma size=2 DESIGNTIMESP=23987>Выполнение CURL сессии </FONT></P> <P DESIGNTIMESP=23988><FONT face=Tahoma size=2 DESIGNTIMESP=23989>bool curt_exec (int ch) </FONT></P> <P DESIGNTIMESP=23990><FONT face=Tahoma size=2 DESIGNTIMESP=23991>Исполняет подготовленную сессию. Эта функция должна вызываться после инициализации сессии CURL session и после того, как все параметры сессии будут установлены. </FONT></P> <P class=Text_Bold DESIGNTIMESP=23992><FONT face=Tahoma size=2 DESIGNTIMESP=23993>curl_ close </FONT></P> <P DESIGNTIMESP=23994><FONT face=Tahoma size=2 DESIGNTIMESP=23995>Закрытие сеанса </FONT></P> <P DESIGNTIMESP=23996><FONT face=Tahoma size=2 DESIGNTIMESP=23997>void curl_close (int ch) </FONT></P> <P DESIGNTIMESP=23998><FONT face=Tahoma size=2 DESIGNTIMESP=23999>Закрытие сессии с освобождением всех ресурсов (также удаляется и дескриптор сессии CURL ch). </FONT></P> <P class=Text_Bold DESIGNTIMESP=24000><FONT face=Tahoma size=2 DESIGNTIMESP=24001>curl_ version </FONT></P> <P DESIGNTIMESP=24002><FONT face=Tahoma size=2 DESIGNTIMESP=24003>Получение версии </FONT></P> <P DESIGNTIMESP=24004><FONT face=Tahoma size=2 DESIGNTIMESP=24005>string curl_version (void): </FONT></P> <P DESIGNTIMESP=24006><FONT face=Tahoma size=2 DESIGNTIMESP=24007>Возвращает текущую версию CURL. </FONT></P> <P class=Title_2 DESIGNTIMESP=24008><a name=8 designtimesp=24009></A><FONT face=Tahoma size=2 DESIGNTIMESP=24010>Отправка почты </FONT></P> <P class=Text_Bold DESIGNTIMESP=24011><FONT face=Tahoma size=2 DESIGNTIMESP=24012>mail </FONT></P> <P DESIGNTIMESP=24013><FONT face=Tahoma size=2 DESIGNTIMESP=24014>Отправление почтового сообщения </FONT></P> <P DESIGNTIMESP=24015><FONT face=Tahoma size=2 DESIGNTIMESP=24016>bool mail (string to, string subject, string message [. string additional_headers]) </FONT></P> <P DESIGNTIMESP=24017><FONT face=Tahoma size=2 DESIGNTIMESP=24018>Автоматически отсылает сообщение электронной почты (используя системную функцию) с «темой» subject и содержимым message адресату to. Для указания нескольких адресатов в строке to разделяйте их запятой. </FONT></P> <P DESIGNTIMESP=24019><FONT size=2 DESIGNTIMESP=24020><FONT face=Tahoma DESIGNTIMESP=24021>. <span class=list designtimesp=24022>"Моя тема". "Привет \пмне \nот пеня"), </SPAN></FONT></FONT></P> <P DESIGNTIMESP=24023><FONT face=Tahoma size=2 DESIGNTIMESP=24024>При указании четвертого строкового аргумента эта строка будет добавляться в конец заголовка, указывая дополнительные заголовки (если их несколько, их следует разделять символом перехода на новую строку «\n»).</FONT></P> <P class=list DESIGNTIMESP=24025><FONT face=Tahoma size=2 DESIGNTIMESP=24026>mail("nobodyPaol com", <br designtimesp=24027>"the subject". Smessage, <br designtimesp=24028>"From: webmaster0SSERVER_NAME\n" .<br designtimesp=24029>"Reply-To webmaste<br designtimesp=24030>r@SSERVER_NAME\nX-Mailer PHP/"<br designtimesp=24031>.phpversion()): </FONT></P> <P DESIGNTIMESP=24032><FONT face=Tahoma size=2 DESIGNTIMESP=24033>Достаточно просто конструировать комплексные сообщения. </FONT></P> <P class=list DESIGNTIMESP=24034><FONT face=Tahoma size=2 DESIGNTIMESP=24035>/* получатели */ <br designtimesp=24036>Srecipient = "Магу<br designtimesp=24037>&lt;mary@urnvpr edu&gt;" . ". " :<br designtimesp=24038>// заметьте запятую <br designtimesp=24039>Srecipient .= "adminPphp.net" <br designtimesp=24040>/* тема сообщения */ <br designtimesp=24041>Ssubject = "Привет Всем! С <br designtimesp=24042>праздничком.". /* само <br designtimesp=24043>сообщение */ Imessage .=<br designtimesp=24044>"The following email includes a<br designtimesp=24045>formatted ASCII table\n". <br designtimesp=24046>Smessage = "Day \t\tMonth \t\tYear\n"; <br designtimesp=24047>Smessage .= "3rd \t\tAug \t\tl970\n"; <br designtimesp=24048>Smessage = "17rd\t\tAug \t\U973\n".<br designtimesp=24049>/* можно добавить подпись <br designtimesp=24050>(signature41 */ <br designtimesp=24051>Smessage .= "--\r\n": <br designtimesp=24052>Smessage . = <br designtimesp=24053>"* Aienr почтовой рассылки *", <br designtimesp=24054>/* Дополнительные заголовки */ <br designtimesp=24055>Sheaders .-- "From: Birthday Reminde<br designtimesp=24056>r &lt;birthday@php.net&gt;\n"; Sheaders =<br designtimesp=24057>"X-Sender- &lt;birthday(?php.net&gt;\n".<br designtimesp=24058>Sheaders .= "X-Mailer: PHP\n";<br designtimesp=24059>// Почтовый агент Sheaders .<br designtimesp=24060>= "X-Pnonty. l\n". <br designtimesp=24061>// Срочное сообщение! Sheaders .<br designtimesp=24062>= "Return-Path: &lt;birthday@php.net&gt;\n": <br designtimesp=24063>// Путь для возвращения сообщений <br designtimesp=24064>об ошибках <br designtimesp=24065>/* Если необходимо послать ней<br designtimesp=24066>в виде текста html mail. <br designtimesp=24067>раскомментируйте следующую строку<br designtimesp=24068>(указывающую тип Mime ) */<br designtimesp=24069>// Sheaders .= "Content-Type,<br designtimesp=24070>text/html; charset=iso-8859-l\n": <br designtimesp=24071>Sheaders .- "cc:birthdayarchive<br designtimesp=24072>@php.net\n"; // CC to Sheaders <br designtimesp=24073>= "bcc:birthd.aycheck@php.<br designtimesp=24074>net, birthdaygifts(3php.net\n"; <br designtimesp=24075>// BCCs to /* and nou maiI it */ <br designtimesp=24076>maiKJrec'Dient. Ssubject,<br designtimesp=24077>Jmessage. Jheaders); </FONT></P> <P class=Text_Bold DESIGNTIMESP=24078><FONT face=Tahoma size=2 DESIGNTIMESP=24079>ezmlm_ hash </FONT></P> <P DESIGNTIMESP=24080><FONT face=Tahoma size=2 DESIGNTIMESP=24081>Вычисление хеша EZMLM </FONT></P> <P DESIGNTIMESP=24082><FONT face=Tahoma size=2 DESIGNTIMESP=24083>int ezralra_hash (string addr) </FONT></P> <P DESIGNTIMESP=24084><FONT face=Tahoma size=2 DESIGNTIMESP=24085>Вычисляет хеш, необходимый для сохранения списков рассылки в базе данных MySQL. </FONT></P> <P class=list DESIGNTIMESP=24086><FONT face=Tahoma size=2 DESIGNTIMESP=24087>$usег = "knsPkoehntopp de"; <br designtimesp=24088>$ hash = ezm)m_hash '($user): <br designtimesp=24089>$query - sprmtf ("INSERT INTO <br designtimesp=24090>sample VALUFS (*s. '2s')", Shash. 5user); <br designtimesp=24091>$db-&gt;query($query), '/ используем <br designtimesp=24092>интерфейс PHPLIB db </FONT></P> <P class=Title_2 DESIGNTIMESP=24093><a name=9 designtimesp=24094></A><FONT face=Tahoma size=2 DESIGNTIMESP=24095>IMAP, РОРЗ и NNTP </FONT></P> <P DESIGNTIMESP=24096><FONT face=Tahoma size=2 DESIGNTIMESP=24097>Для того чтобы использовать следующие функции, необходимо перекомпилировать РНР с параметром --with-imap (для этого клиентские библиотеки С должны быть установлены). Последнюю версию для компиляции можно загрузить с ftp://ttp.cac.washington.edu/imap/. Можно также подключить модуль динамически. </FONT></P> <P DESIGNTIMESP=24098><FONT face=Tahoma size=2 DESIGNTIMESP=24099>Несмотря на имя модуля, имеющиеся в нем функции позволяют выполнять также много других полезных операций, выходящих за рамки простого использования протокола IMAP. Лежащая в основе библиотека С-клиента также поддерживает NNTP, РОРЗ и методы доступа к локальным почтовым ящикам. </FONT></P> <P DESIGNTIMESP=24100><FONT face=Tahoma size=2 DESIGNTIMESP=24101>Чтобы разобраться в том, что позволяют делать функции, полезно ознакомиться (. перечисленными ниже документами RFC. </FONT></P> <ul designtimesp=24102> <li designtimesp=24103><FONT face=Tahoma size=2 DESIGNTIMESP=24104>RFC821: Simple Mail Transfer Protocol (SMTP). </FONT> <li designtimesp=24105><FONT face=Tahoma size=2 DESIGNTIMESP=24106>RFC822: Стандарт текстовых сообщений Интернет ARPA. </FONT> <li designtimesp=24107><FONT face=Tahoma size=2 DESIGNTIMESP=24108>RFC2060: Internet Message Access Protocol (IMAP) Version 4 revl. </FONT> <li designtimesp=24109><FONT face=Tahoma size=2 DESIGNTIMESP=24110>RFC1939: Post Office Protocol Vei.sion 3 (РОРЗ). </FONT> <li designtimesp=24111><FONT face=Tahoma size=2 DESIGNTIMESP=24112>RFC977: Network News Transfer Protocol (NNTP). </FONT> <li designtimesp=24113><FONT face=Tahoma size=2 DESIGNTIMESP=24114>RFC2076: Common Internet Message Headers. </FONT> <li designtimesp=24115><FONT face=Tahoma size=2 DESIGNTIMESP=24116>RFC2045, RFC2046, RFC2047, RFC2048 и RFC2049: Multipurpose Internet Mail Extensions (MIME). </FONT></LI></UL> <P DESIGNTIMESP=24117><FONT face=Tahoma size=2 DESIGNTIMESP=24118>Детальное рассмотрение функционирования систем работы с электронной почтой можно найти в книгах: «Programming Internet Email» (David Wood) и «Managing IMAP» (Dianna Mullet и Kevin Mullet). </FONT></P> <P DESIGNTIMESP=24119><FONT face=Tahoma size=2 DESIGNTIMESP=24120>Далее под ящиками подразумеваются как папки верхнего уровня, так и вложенные. </FONT></P> <P class=Text_Bold DESIGNTIMESP=24121><FONT face=Tahoma size=2 DESIGNTIMESP=24122>imap_open </FONT></P> <P DESIGNTIMESP=24123><FONT face=Tahoma size=2 DESIGNTIMESP=24124>Подключение к серверу (открытие почтового ящика) </FONT></P> <P DESIGNTIMESP=24125><FONT face=Tahoma size=2 DESIGNTIMESP=24126>int imap_open (string mailbox, string username, string password [, int flags]) </FONT></P> <P DESIGNTIMESP=24127><FONT face=Tahoma size=2 DESIGNTIMESP=24128>Возвращает дескриптор открытого почтового ящика IMAP (дескриптор подключения к серверу IMAP) или значение FALSE при ошибке. Эту функцию можно также использовать для подключения к серверам РОРЗ и NNTP, но некоторые функции будут недоступны. </FONT></P> <P DESIGNTIMESP=24129><FONT face=Tahoma size=2 DESIGNTIMESP=24130>В аргументе mailbox указывается имя сервера и путь к почтовому ящику. Имя сервера заключается в фигурные скобки «{» и «}», и состоит из: имени сервера (или его IP-адреса), возможного указания протокола (начинающегося со слеша '/') и необязательного значения номера порта подключения (начинающегося с двоеточия «:»). Имя сервера необходимо указывать всегда; бывает полезно указывать имя сервера в переменной, но следует учитывать, что фигурные скобки имеют специальное значение для переменных в строках в двойных кавычках, поэтому открывающую скобку следует предварять слешем, например: "\{$SERVER/pop3:110}INBOX". </FONT></P> <P DESIGNTIMESP=24131><FONT face=Tahoma size=2 DESIGNTIMESP=24132>Специальное значение — имя INBOX, обозначающее основной ящик пользователя (папка Входящие). Если имя ящика включает какие-либо символы помимо английских печатных ASCII, то их нужно закодировать функцией imap_utf7_encode(). Разделителем иерархии почтовых ящиков обычно является слеш, но для некоторых серверов им также может быть точка, например: «INBOX. Current. Important. Work». </FONT></P> <P DESIGNTIMESP=24133><FONT face=Tahoma size=2 DESIGNTIMESP=24134>Аргументами username и password указываются имя и пароль пользователя. </FONT></P> <P DESIGNTIMESP=24135><FONT face=Tahoma size=2 DESIGNTIMESP=24136>В аргументе flags указываются параметры открытия в виде битовой маски): </FONT></P> <ul designtimesp=24137> <li designtimesp=24138><FONT face=Tahoma size=2 DESIGNTIMESP=24139>OP_READONLY — открыть только для чтения; </FONT> <li designtimesp=24140><FONT face=Tahoma size=2 DESIGNTIMESP=24141>OP_ANONYMOUS — не использовать (обновлять) разделы новостей .newsrc (только для NNTP); </FONT> <li designtimesp=24142><FONT face=Tahoma size=2 DESIGNTIMESP=24143>OP_HALFOPEN — для IMAP- и NNTP-имен: только подключение без открытия ящика; </FONT> <li designtimesp=24144><FONT face=Tahoma size=2 DESIGNTIMESP=24145>CL_EXPUNGE — автоматически удалить ящик при его закрытии. </FONT></LI></UL> <P DESIGNTIMESP=24146><FONT face=Tahoma size=2 DESIGNTIMESP=24147>(См. также: imap_delete() и imap_expunge()). </FONT></P> <P DESIGNTIMESP=24148><FONT face=Tahoma size=2 DESIGNTIMESP=24149>Для подключения к серверу ШАР, использующему порт 143 на локальной машине, используйте: </FONT></P> <P class=list DESIGNTIMESP=24150><FONT face=Tahoma size=2 DESIGNTIMESP=24151>$mbox = imap_open ("{localhost:143}INBOX". <br designtimesp=24152>"user_id". "password"); </FONT></P> <P DESIGNTIMESP=24153><FONT face=Tahoma size=2 DESIGNTIMESP=24154>Для подключения к серверу РОРЗ, использующему порт 110 на локальной машине, используйте: </FONT></P> <P class=list DESIGNTIMESP=24155><FONT face=Tahoma size=2 DESIGNTIMESP=24156>$mbox = imap_open <br designtimesp=24157>("{localhost/pop3:110}INBOX". "user_id".<br designtimesp=24158>"password"). </FONT></P> <P DESIGNTIMESP=24159><FONT face=Tahoma size=2 DESIGNTIMESP=24160>Для подключения к серверу NNTP, использующему порт 119 на локальной машине, используйте: </FONT></P> <P class=list DESIGNTIMESP=24161><FONT face=Tahoma size=2 DESIGNTIMESP=24162>$nntp = imap_open ("{localhost/nntp:119}<br designtimesp=24163>comp test". "". ""); </FONT></P> <P DESIGNTIMESP=24164><FONT face=Tahoma size=2 DESIGNTIMESP=24165>Следующий пример демонстрирует подключение к серверу ШАР «your.imap.host» и вывод имеющихся ящиков и сообщений для пользователя «username». </FONT></P> <P class=list DESIGNTIMESP=24166><FONT face=Tahoma size=2 DESIGNTIMESP=24167>$mbox = imap_open ("{your imap.host:143}",<br designtimesp=24168>"username". "password"). <br designtimesp=24169>echo "&lt;р&gt;&lt;h1&gt;Ящики Mailboxes&lt;/hl&gt;\n". <br designtimesp=24170>Sfolders = imap_ilstmailbox (Smbox.<br designtimesp=24171>"{your.imap.host:143}". "*"): <br designtimesp=24172>if (Sfolders == FALSE) echo<br designtimesp=24173>"Ошибка- ящиков не обнаружено<br designtimesp=24174>&lt;br&gt;\n": else while (list ($key. Sval) <br designtimesp=24175>= each (Sfolders)) echo "\t Sval &lt;br&gt;\n". <br designtimesp=24176>echo "&lt;р&gt;&lt;h1&gt;Сообщения в INBOX&lt;/hl&gt;\n"<br designtimesp=24177>. Sheaders = imapjieaders (Smbox); <br designtimesp=24178>if (Sheaders == FALSE) { echo<br designtimesp=24179>"Ошибка - сообщений нет &lt;br&gt;\n"; <br designtimesp=24180>} else while (list (Skey.Sval) =<br designtimesp=24181>each (Sheaders)) echo "\t Sval &lt;br&gt;\n"; <br designtimesp=24182>imap_close(Smbox): </FONT></P> <P DESIGNTIMESP=24183><FONT face=Tahoma size=2 DESIGNTIMESP=24184>В общем случае должно быть выведено нечто вроде следующего: </FONT></P> <P class=list DESIGNTIMESP=24185><FONT face=Tahoma size=2 DESIGNTIMESP=24186>Ящики Mailboxes <br designtimesp=24187>{localhost:143} l innn/i gf&lt;br&gt; <br designtimesp=24188>{loca lhost;143} linnn&lt;br&gt; <br designtimesp=24189>{local host:143}INBOX&lt;br&gt;<br designtimesp=24190>Сообщения в INBOX <br designtimesp=24191>ШЗ-Мау-2001 Имя Отправителя <br designtimesp=24192>Заголовок (1621 chars)&lt;br&gt; </FONT></P> <P class=Text_Bold DESIGNTIMESP=24193><FONT face=Tahoma size=2 DESIGNTIMESP=24194>imap_reopen </FONT></P> <P DESIGNTIMESP=24195><FONT face=Tahoma size=2 DESIGNTIMESP=24196>Переподключение (выбор другого ящика) </FONT></P> <P DESIGNTIMESP=24197><FONT face=Tahoma size=2 DESIGNTIMESP=24198>int imap_reopen (int imap_stream, string mailbox [, string flags]) </FONT></P> <P DESIGNTIMESP=24199><FONT face=Tahoma size=2 DESIGNTIMESP=24200>Функция подобна imap_open() с тем отличием, что она не создает новый дескриптор подключения, а использует уже существующий imap_ stream (имя пользователя и его пароль не изменяются). Аргументы mailbox и flags аналогичны. </FONT></P> <P DESIGNTIMESP=24201><FONT face=Tahoma size=2 DESIGNTIMESP=24202>Возвращает TRUE или FALSE — при ошибке. </FONT></P> <P class=Text_Bold DESIGNTIMESP=24203><FONT face=Tahoma size=2 DESIGNTIMESP=24204>imap_close </FONT></P> <P DESIGNTIMESP=24205><FONT face=Tahoma size=2 DESIGNTIMESP=24206>Отключение от сервера </FONT></P> <P DESIGNTIMESP=24207><FONT face=Tahoma size=2 DESIGNTIMESP=24208>int imap_close (int imap_stream [, int flags]) </FONT></P> <P DESIGNTIMESP=24209><FONT face=Tahoma size=2 DESIGNTIMESP=24210>Функция закрывает поток подключения, связанный с дескриптором imap_stream. Если в аргументе flags указывается значение CL_EXPUNGE, то при закрытии ящика из него автоматически удаляются все сообщения, помеченные к удалению. </FONT></P> <P class=Text_Bold DESIGNTIMESP=24211><FONT face=Tahoma size=2 DESIGNTIMESP=24212>imap_ping </FONT></P> <P DESIGNTIMESP=24213><FONT face=Tahoma size=2 DESIGNTIMESP=24214>Проверка активности подключения </FONT></P> <P DESIGNTIMESP=24215><FONT face=Tahoma size=2 DESIGNTIMESP=24216>int imap_ping (int imap_stream) </FONT></P> <P DESIGNTIMESP=24217><FONT face=Tahoma size=2 DESIGNTIMESP=24218>Возвращает TRUE, если подключение действительно, или FALSE, если оно разорвано. </FONT></P> <P DESIGNTIMESP=24219><FONT face=Tahoma size=2 DESIGNTIMESP=24220>Вызов функции может использоваться для обнаружения свежих сообщений и для поддержания активности связи с серверами, разрывающими связь через определенный промежуток времени бездействия соединения. Но так как время исполнения сценария ограниченно (обычно полминуты), а время разрыва связи наступает через сравнительно длительный период (часто 30 минут), то едва ли эта функция будет полезна в web-сценариях. </FONT></P> <P class=Text_Bold DESIGNTIMESP=24221><FONT face=Tahoma size=2 DESIGNTIMESP=24222>imap_listmailbox </FONT></P> <P DESIGNTIMESP=24223><FONT face=Tahoma size=2 DESIGNTIMESP=24224>Получение списка почтовых ящиков </FONT></P> <P DESIGNTIMESP=24225><FONT face=Tahoma size=2 DESIGNTIMESP=24226>array imapjistmailbox (int imap_stream, string ref, string pattern) </FONT></P> <P DESIGNTIMESP=24227><FONT face=Tahoma size=2 DESIGNTIMESP=24228>Возвращает массив имен почтовых ящиков. Описание аргументов см. в imap_getmailboxes(). </FONT></P> <P class=list DESIGNTIMESP=24229><FONT face=Tahoma size=2 DESIGNTIMESP=24230>$mbox = imap_open("{your imap host}".<br designtimesp=24231>"username"."password",OP_HALFOPEN)<br designtimesp=24232>dieC'can't connect- ".tmap_last_error()): <br designtimesp=24233>Slist " imap_listmailbox($mbox,<br designtimesp=24234>"{your.imap host}"."*"):<br designtimesp=24235>ifOs_array($list)) { reset ($"hst): <br designtimesp=24236>while (list($key. $val) = each(Slist)) <br designtimesp=24237>print imap_utf7_decode($val).<br designtimesp=24238>"&lt;br&gt;\n". } else <br designtimesp=24239>print "imap_listmailbox failed " <br designtimesp=24240>imap_last_error(). "\n". <br designtimesp=24241>imap_close($mbox): </FONT></P> <P class=Text_Bold DESIGNTIMESP=24242><FONT face=Tahoma size=2 DESIGNTIMESP=24243>imap_getmailboxes </FONT></P> <P DESIGNTIMESP=24244><FONT face=Tahoma size=2 DESIGNTIMESP=24245>Получение описания почтовых ящиков </FONT></P> <P DESIGNTIMESP=24246><FONT face=Tahoma size=2 DESIGNTIMESP=24247>array imap_getmail boxes (int imap_stream, string ref, string pattern) </FONT></P> <P DESIGNTIMESP=24248><FONT face=Tahoma size=2 DESIGNTIMESP=24249>Возвращает массив объектов, содержащих описания каждого ящика. Каждый объект имеет 3 атрибута: полное имя ящика папе, символ-разделитель иерархии ящиков delimiter и битовое поле attributes, которое может состоять из следующих компонентов: </FONT></P> <ul designtimesp=24250> <li designtimesp=24251><FONT face=Tahoma size=2 DESIGNTIMESP=24252>LATT_NOINFERIORS (1) — ящик не имеет вложенных; </FONT> <li designtimesp=24253><FONT face=Tahoma size=2 DESIGNTIMESP=24254>LATT_NOSELECT (2) — ото контейнер (а не ящик) и его нельзя открыть; </FONT> <li designtimesp=24255><FONT face=Tahoma size=2 DESIGNTIMESP=24256>LATT_MARKED (4) — ящик маркирован. Используется только с UW-IMAPD; </FONT> <li designtimesp=24257><FONT face=Tahoma size=2 DESIGNTIMESP=24258>LATTJJNMARKED (8) — ящик маркирован. Используется только с UW-IMAPD. </FONT></LI></UL> <P DESIGNTIMESP=24259><FONT face=Tahoma size=2 DESIGNTIMESP=24260>Имена ящиков могут содержать символы национальных алфавитов (из набора ASCII), которые могут быть закодированы и затем декодированы функцией imap_utf7jJecode(). </FONT></P> <P DESIGNTIMESP=24261><FONT face=Tahoma size=2 DESIGNTIMESP=24262>Аргумент ref должен содержать обычную спецификацию сервера (его адреса), как в функции imap_open(), а аргумент pattern — указывать, с какого ящика начинать и шаблон для возвращаемых ящиков. </FONT></P> <P DESIGNTIMESP=24263><FONT face=Tahoma size=2 DESIGNTIMESP=24264>В аргументе pattern могут быть указаны два специальных значения: «*» означает, что следует возвращать всю иерархию ящиков, а &lt;&lt;%&gt;&gt; -только текущий иерархический уровень (без вложенных ящиков). </FONT></P> <P class=list DESIGNTIMESP=24265><FONT face=Tahoma size=2 DESIGNTIMESP=24266>$mbox = imap_open("{your шар.host}",<br designtimesp=24267>"user-name", "password".OP_HALFOPEN) <br designtimesp=24268>|| dieC'can't connect: ".imap_last_error()). <br designtimesp=24269>$list = imap_getmailboxes($mbox.<br designtimesp=24270>"{your.imap.host}"."*"): <br designtimesp=24271>ifds_array($list)) <br designtimesp=24272>{ pnnt_r (Slist): } else <br designtimesp=24273>print "imap_getmailboxes failed <br designtimesp=24274>".imap_last_error()."\n": <br designtimesp=24275>imap_close($mbox). </FONT></P> <P DESIGNTIMESP=24276><FONT face=Tahoma size=2 DESIGNTIMESP=24277>См. также imap_getsubscribed(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=24278><FONT face=Tahoma size=2 DESIGNTIMESP=24279>imap_createmailbox </FONT></P> <P DESIGNTIMESP=24280><FONT face=Tahoma size=2 DESIGNTIMESP=24281>Создание почтового ящика </FONT></P> <P DESIGNTIMESP=24282><FONT face=Tahoma size=2 DESIGNTIMESP=24283>int imap_createmailbox (int imap_stream, string mbox) </FONT></P> <P DESIGNTIMESP=24284><FONT face=Tahoma size=2 DESIGNTIMESP=24285>Имя создаваемого ящика указывается в аргументе mbox. Имена, содержащие национальные символы, должны кодироваться функцией imap_utf() encode(). </FONT></P> <P DESIGNTIMESP=24286><FONT face=Tahoma size=2 DESIGNTIMESP=24287>Возвращает TRUE или FALSE — при ошибке. </FONT></P> <P DESIGNTIMESP=24288><FONT face=Tahoma size=2 DESIGNTIMESP=24289>См гакжс: imapj-enamemailbox(), imap_deletemanbox() и imapj&gt;pen(). </FONT></P> <P class=list DESIGNTIMESP=24290><FONT face=Tahoma size=2 DESIGNTIMESP=24291>$mbox = imap_openf"(your imap.host}"<br designtimesp=24292>."username"."password",OP_HALFOPEN)<br designtimesp=24293>|| chet"can't connect. "<br designtimesp=24294>.imap_last_error()). <br designtimesp=24295>$namei = "newhox: <br designtimesp=24296>$name2 = imap_utf7_encode<br designtimesp=24297>("MOй личный ящик"); <br designtimesp=24298>if(&amp;imap_createmai1box(Smbox. <br designtimesp=24299>1map_utt7_encode("{your.imap.host}<br designtimesp=24300>INBOX/$namer))) { Sstatus = <br designtimesp=24301>@imap_status($mbox."{your.imap <br designtimesp=24302>host}:NBOX/$naoiel".SA_ALL);<br designtimesp=24303>if($btat'js) { echo "Статус нового <br designtimesp=24304>ящика 'Snamel': &lt;br\n". <br designtimesp=24305>"Messages: ". $status-&gt;messages <br designtimesp=24306>."&lt;br&gt;\n". "Recent: ". $status-&gt;<br designtimesp=24307>recent "&lt;br-\n". "Unseen:<br designtimesp=24308>". $status-&gt;unseen "&lt;br&gt;\n".<br designtimesp=24309>"UIDnext ". $status-&gt;uidne/.t .<br designtimesp=24310>"&lt;Dr&gt;»n". "UIDvalnaity ".<br designtimesp=24311>Sstatus-&gt;uldval1d1ty.".&lt;br&gt;\n"; if<br designtimesp=24312>(imap_renamemailbox($mbox "{your, <br designtimesp=24313>irnao host)INBOX/Snamel". <br designtimesp=24314>"{your.-imap host}lNBOX/$name2'l) <br designtimesp=24315>{ echo "Ящик Sramel' переименован <br designtimesp=24316>в '$raine2'&lt;br&gt;\n": } else { <br designtimesp=24317>print "imap_renamemailbox failed:<br designtimesp=24318>" imap_last_error() "&lt;br&gt;\n": i<br designtimesp=24319>} else { pnnt "i:nap_s"'atus tailed. <br designtimesp=24320>" inap_labt_error() "&lt;br&gt;'n"-} <br designtimesp=24321>if(?imap_deletemailbox(Smbox.<br designtimesp=24322>"{your imap.host}INBOX/$naire2")i <br designtimesp=24323>{ print "new mailbox removed &lt;br&gt;\n":<br designtimesp=24324>} else { print "lmap_deletemailbox <br designtimesp=24325>failed: ". implode("&lt;br&gt;\n".<br designtimesp=24326>lroap_errors()3 "&lt;br&gt;\n", i } <br designtimesp=24327>ebe { print "could not <br designtimesp=24328>create new mailbox- ". <br designtimesp=24329>implodeC"&lt;br&gt;\n".imap_errors()).<br designtimesp=24330>"&lt;br&gt;\n": <br designtimesp=24331>imap_clcse($iTibox); </FONT></P> <P class=Text_Bold DESIGNTIMESP=24332><FONT face=Tahoma size=2 DESIGNTIMESP=24333>imap_ renamemailbox </FONT></P> <P DESIGNTIMESP=24334><FONT face=Tahoma size=2 DESIGNTIMESP=24335>Переименование ящика </FONT></P> <P DESIGNTIMESP=24336><FONT face=Tahoma size=2 DESIGNTIMESP=24337>int imap_renamemailbox (int imap_stream, string oldjnbox, string new_rabox) </FONT></P> <P DESIGNTIMESP=24338><FONT face=Tahoma size=2 DESIGNTIMESP=24339>Имя ящика задается аргументом oldjnbox, а его новое имя — new_ mbox Формат этих аргументов см. в описании функции imap_open(). Пример использования см. в функции imap_createmailbox(). </FONT></P> <P DESIGNTIMESP=24340><FONT face=Tahoma size=2 DESIGNTIMESP=24341>Возвращает TRUE или FALSE — при ошибке. </FONT></P> <P DESIGNTIMESP=24342><FONT face=Tahoma size=2 DESIGNTIMESP=24343>См. также: imap_createmailbox(), imap_deletemailbox(), imap_open(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=24344><FONT face=Tahoma size=2 DESIGNTIMESP=24345>imap_ deletemaiibox </FONT></P> <P DESIGNTIMESP=24346><FONT face=Tahoma size=2 DESIGNTIMESP=24347>Удаление почтового ящика </FONT></P> <P DESIGNTIMESP=24348><FONT face=Tahoma size=2 DESIGNTIMESP=24349>int imap_deletemailbox (int imap_stream, string mbox) </FONT></P> <P DESIGNTIMESP=24350><FONT face=Tahoma size=2 DESIGNTIMESP=24351>Имя ящика задается аргументом mbox, его формат см. в описании функции imap_open(). Пример использования см. в функции imap_ createmailbox(). </FONT></P> <P DESIGNTIMESP=24352><FONT face=Tahoma size=2 DESIGNTIMESP=24353>Возвращает TRUE или FALSE — при ошибке. </FONT></P> <P DESIGNTIMESP=24354><FONT face=Tahoma size=2 DESIGNTIMESP=24355>См. также: imap_createmai1box(), imap_renamemailbox() и imap_open(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=24356><FONT face=Tahoma size=2 DESIGNTIMESP=24357>imap_ check </FONT></P> <P DESIGNTIMESP=24358><FONT face=Tahoma size=2 DESIGNTIMESP=24359>Проверка текущего ящика </FONT></P> <P DESIGNTIMESP=24360><FONT face=Tahoma size=2 DESIGNTIMESP=24361>object imap_check (int imap_stream) </FONT></P> <P DESIGNTIMESP=24362><FONT face=Tahoma size=2 DESIGNTIMESP=24363>Возвращает объект, содержащий информацию о текущем почтовом ящике, или FALSE при ошибке. В объекте имеются следующие свойства: </FONT></P> <ul designtimesp=24364> <li designtimesp=24365><FONT face=Tahoma size=2 DESIGNTIMESP=24366>Date — время последней модификации содержимого ящика (доступа); </FONT> <li designtimesp=24367><FONT face=Tahoma size=2 DESIGNTIMESP=24368>Driver — протокол доступа к ящику: POPS, IMAP, NNTP; </FONT> <li designtimesp=24369><FONT face=Tahoma size=2 DESIGNTIMESP=24370>Mailbox — полное имя почтового ящика; </FONT> <li designtimesp=24371><FONT face=Tahoma size=2 DESIGNTIMESP=24372>Nmsgs — число сообщений в ящике; </FONT> <li designtimesp=24373><FONT face=Tahoma size=2 DESIGNTIMESP=24374>Recent — число новых сообщений в ящике. </FONT></LI></UL> <P class=list DESIGNTIMESP=24375><FONT face=Tahoma size=2 DESIGNTIMESP=24376>$mbox - imap_open('{localhost}°."igor"."lgx324879".<br designtimesp=24377>OP_HALFOPEN) || dle("can't connect: <br designtimesp=24378>".imap_last_error()): <br designtimesp=24379>pnnt_r(imap_check ($mbox));<br designtimesp=24380>imap_close($mbo/). </FONT></P> <P DESIGNTIMESP=24381><FONT face=Tahoma size=2 DESIGNTIMESP=24382>Выводит нечто подобное следующему: </FONT></P> <P class=list DESIGNTIMESP=24383><FONT face=Tahoma size=2 DESIGNTIMESP=24384>$tdClass Object <br designtimesp=24385>[Date] =&gt; Sun. 13 May 2008 <br designtimesp=24386>14-31:38 +0400 (Московское время<br designtimesp=24387>(лето)) <br designtimesp=24388>[Driver] -&gt; imap <br designtimesp=24389>[Mailbox] =&gt; {igor 143/imap/user="igor"}<br designtimesp=24390>&lt;no_mailbox&gt; <br designtimesp=24391>[Nmsgs] =&gt; 0 <br designtimesp=24392>[Recent] 0 </FONT></P> <P class=Text_Bold DESIGNTIMESP=24393><FONT face=Tahoma size=2 DESIGNTIMESP=24394>imap_status </FONT></P> <P DESIGNTIMESP=24395><FONT face=Tahoma size=2 DESIGNTIMESP=24396>Получение статуса указанного ящика </FONT></P> <P DESIGNTIMESP=24397><FONT face=Tahoma size=2 DESIGNTIMESP=24398>object imap_status (int imap_stream, string mailbox, int options) </FONT></P> <P DESIGNTIMESP=24399><FONT face=Tahoma size=2 DESIGNTIMESP=24400>Возвращает объект, содержащий информацию о почтовом ящике с именем mailbox, пли FALSE при ошибке. В объекте возвращаются свойства, в зависимости от указанного значения аргумента options: </FONT></P> <ul designtimesp=24401> <li designtimesp=24402><FONT face=Tahoma size=2 DESIGNTIMESP=24403>SA_MESSAGES — возвратить в status -&gt;messages общее число сообщений в ящике; </FONT> <li designtimesp=24404><FONT face=Tahoma size=2 DESIGNTIMESP=24405>SA_RECENT — возвратить в status-&gt;recent число новых сообщений; </FONT> <li designtimesp=24406><FONT face=Tahoma size=2 DESIGNTIMESP=24407>SAJJNSEEN — возвратить в status-&gt;unseen число непрочитанных сообщений; </FONT> <li designtimesp=24408><FONT face=Tahoma size=2 DESIGNTIMESP=24409>SAJJIDNEXT — возвратить в status-&gt;uidnext номер uid для следующего нового сообщения; </FONT> <li designtimesp=24410><FONT face=Tahoma size=2 DESIGNTIMESP=24411>SAJJIDVALIDITY - возвратить в status-&gt;uidvalidity константу действительности uid ящика; </FONT> <li designtimesp=24412><FONT face=Tahoma size=2 DESIGNTIMESP=24413>SA_ALL — возвратить все вышеперечисленное. </FONT></LI></UL> <P DESIGNTIMESP=24414><FONT face=Tahoma size=2 DESIGNTIMESP=24415>Объект также содержит свойство status-^flags, отражающее (в объединенном битовом поле), с какими параметрами он создан. </FONT></P> <P class=list DESIGNTIMESP=24416><FONT face=Tahoma size=2 DESIGNTIMESP=24417>$mbox = шар_ореп("{your.imap host}".<br designtimesp=24418>"ucename"."password".OP HALFOPEN)<br designtimesp=24419>|| dieC'can't connect: " nmap_last_error!)); <br designtimesp=24420>$status = imap_status(Smbox."{your <br designtimesp=24421>imap host}INBOX".SA_ALL). <br designtimesp=24422>if($status) { print_r($status); }<br designtimesp=24423>else print "imap_status failed "<br designtimesp=24424>imap_lasterror()."\n": <br designtimesp=24425>imap_clcse($mbox) </FONT></P> <P class=Text_Bold DESIGNTIMESP=24426><FONT face=Tahoma size=2 DESIGNTIMESP=24427>imap_ mailboxmsginfo </FONT></P> <P DESIGNTIMESP=24428><FONT face=Tahoma size=2 DESIGNTIMESP=24429>Получение информации о текущем ящике </FONT></P> <P DESIGNTIMESP=24430><FONT face=Tahoma size=2 DESIGNTIMESP=24431>object imapjnailboxmsginfo (int imap_stream) </FONT></P> <P DESIGNTIMESP=24432><FONT face=Tahoma size=2 DESIGNTIMESP=24433>функция сходна с imap_status(), но дополнительно она вычисляет 0С,-рем всех сообщений, находящихся в ящике. Свойства возвращаемого объекта: </FONT></P> <ul designtimesp=24434> <li designtimesp=24435><FONT face=Tahoma size=2 DESIGNTIMESP=24436>Date — время последней модификации; </FONT> <li designtimesp=24437><FONT face=Tahoma size=2 DESIGNTIMESP=24438>Driver — драйвер (протокол доступа); </FONT> <li designtimesp=24439><FONT face=Tahoma size=2 DESIGNTIMESP=24440>Mailbox — имя почтового ящика; </FONT> <li designtimesp=24441><FONT face=Tahoma size=2 DESIGNTIMESP=24442>Nmsgs — число сообщений; </FONT> <li designtimesp=24443><FONT face=Tahoma size=2 DESIGNTIMESP=24444>Recent — число новых полученных сообщений; </FONT> <li designtimesp=24445><FONT face=Tahoma size=2 DESIGNTIMESP=24446>Unread — число непрочитанных сообщений; </FONT> <li designtimesp=24447><FONT face=Tahoma size=2 DESIGNTIMESP=24448>Deleted — число удаленных сообщений; </FONT> <li designtimesp=24449><FONT face=Tahoma size=2 DESIGNTIMESP=24450>Size — размер почтового ящика. </FONT></LI></UL> <P class=list DESIGNTIMESP=24451><FONT face=Tahoma size=2 DESIGNTIMESP=24452>&lt;?рhp<br designtimesp=24453>$mbox = imap_open<br designtimesp=24454>("{your imap.host}INBOX".<br designtimesp=24455>"user-name", <br designtimesp=24456>"password") || diet"can't connect:<br designtimesp=24457>".imap_last_error()): <br designtimesp=24458>rebeck = imapinallboxmsginfo<br designtimesp=24459>($fnbox); <br designtimesp=24460>lf($6heck) { <br designtimesp=24461>print "Date; " . $check-&gt;Date .<br designtimesp=24462>"&lt;br^\n" print "Driver:<br designtimesp=24463>" . $check-&gt;Driver ."&lt;br&gt;\n" <br designtimesp=24464>print "Mailbox: " <br designtimesp=24465>. $check-&gt;Mailbox ."&lt;br&gt;\n" :<br designtimesp=24466>print "Messages- "<br designtimesp=24467>. $check-&gt;Nmsgs ."&lt;br&gt;\n" <br designtimesp=24468>print "Recent: " . <br designtimesp=24469>$check-&gt;Recent ."&lt;br&gt;\n" <br designtimesp=24470>print "Unread: " . $check-&gt;Unread <br designtimesp=24471>"&lt;br&gt;\n" print "Deleted: " <br designtimesp=24472>. $check-&gt;Deleted ,"&lt;br&gt;\n" : <br designtimesp=24473>print "Size: " $check-&gt;Size ."&lt;br&gt;\n" <br designtimesp=24474>} ele ( print "imap_check()<br designtimesp=24475>failed- ".imap_last_error(). <br designtimesp=24476>"&lt;br&gt;\n": } linap^close<br designtimesp=24477>($mbox). &gt;</FONT></P> <P class=Text_Bold DESIGNTIMESP=24478><FONT face=Tahoma size=2 DESIGNTIMESP=24479>imap_num_msg </FONT></P> <P DESIGNTIMESP=24480><FONT face=Tahoma size=2 DESIGNTIMESP=24481>Получение числа сообщений в текущем ящике • nt imap_num_msg (int imap_stream) </FONT></P> <P class=Text_Bold DESIGNTIMESP=24482><FONT face=Tahoma size=2 DESIGNTIMESP=24483>imap_num_recent </FONT></P> <P DESIGNTIMESP=24484><FONT face=Tahoma size=2 DESIGNTIMESP=24485>Получение числа новых сообщений в текущем ящике </FONT></P> <P DESIGNTIMESP=24486><FONT face=Tahoma size=2 DESIGNTIMESP=24487>int imap_num_recent (nnt imap_stream) </FONT></P> <P class=Text_Bold DESIGNTIMESP=24488><FONT face=Tahoma size=2 DESIGNTIMESP=24489>imap_listsubscribed </FONT></P> <P DESIGNTIMESP=24490><FONT face=Tahoma size=2 DESIGNTIMESP=24491>Получение списка активных ящиков </FONT></P> <P DESIGNTIMESP=24492><FONT face=Tahoma size=2 DESIGNTIMESP=24493>array imap_listsubscribed (Int imap_stream, string ref, string pattern) </FONT></P> <P DESIGNTIMESP=24494><FONT face=Tahoma size=2 DESIGNTIMESP=24495>У пользователя может быть сложная структура папок почтовой учетной записи, но, как правило, для синхронизации и отображения в программе почтового клиента выбираются только несколько (а к остальным обращения не происходит). </FONT></P> <P DESIGNTIMESP=24496><FONT face=Tahoma size=2 DESIGNTIMESP=24497>Функция возвращает в массиве перечисление имен папок, выбранных для синхронизации. Она аналогична функции iraap_listmailbox(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=24498><FONT face=Tahoma size=2 DESIGNTIMESP=24499>imap_getsubscribed </FONT></P> <P DESIGNTIMESP=24500><FONT face=Tahoma size=2 DESIGNTIMESP=24501>Получение описания активных ящиков </FONT></P> <P DESIGNTIMESP=24502><FONT face=Tahoma size=2 DESIGNTIMESP=24503>array imap_getsubscribed (int imap_stream, string ref, string pattern) </FONT></P> <P DESIGNTIMESP=24504><FONT face=Tahoma size=2 DESIGNTIMESP=24505>Функция подобна imap_getmai"lboxes(), но она возвращает только имена тех ящиков, которые были выбраны для синхронизации. </FONT></P> <P class=Text_Bold DESIGNTIMESP=24506><FONT face=Tahoma size=2 DESIGNTIMESP=24507>imap_ subscribe </FONT></P> <P DESIGNTIMESP=24508><FONT face=Tahoma size=2 DESIGNTIMESP=24509>Активизация ящика </FONT></P> <P DESIGNTIMESP=24510><FONT face=Tahoma size=2 DESIGNTIMESP=24511>int imap_subscribe (int imap_stream, string mbox) </FONT></P> <P DESIGNTIMESP=24512><FONT face=Tahoma size=2 DESIGNTIMESP=24513>В дальнейшем ящик будет использоваться для синхронизации. Возвращает TRUE иди FALSE — при ошибке. </FONT></P> <P class=Text_Bold DESIGNTIMESP=24514><FONT face=Tahoma size=2 DESIGNTIMESP=24515>imap_ unsubscribe </FONT></P> <P DESIGNTIMESP=24516><FONT face=Tahoma size=2 DESIGNTIMESP=24517>Дезактивизация ящика </FONT></P> <P DESIGNTIMESP=24518><FONT face=Tahoma size=2 DESIGNTIMESP=24519>int imap_unsubscribe (int imap_stream, string mbox) </FONT></P> <P class=Text_Bold DESIGNTIMESP=24520><FONT face=Tahoma size=2 DESIGNTIMESP=24521>imap_ search </FONT></P> <P DESIGNTIMESP=24522><FONT face=Tahoma size=2 DESIGNTIMESP=24523>Поиск в текущем ящике </FONT></P> <P DESIGNTIMESP=24524><FONT face=Tahoma size=2 DESIGNTIMESP=24525>array imap_search (int imap_stream, string criteria, int flags) </FONT></P> <P DESIGNTIMESP=24526><FONT face=Tahoma size=2 DESIGNTIMESP=24527>Функция возвращает список почтовых ящиков (поиск проходит рекурсивно в текущем ящике), в которых было обнаружено соответствие критерию, указанному в аргументе criteria. В строке критерия указываются искомые слова, разделенные пробелами; если необходимо искать фразу, се следует заключать в двойные кавычки; перед набором слов указывается имя поля (можно также указать флаги просматриваемых сообщений), в котором следует производить поиск. Возможно указывать следующие ключевые слова: </FONT></P> <ul designtimesp=24528> <li designtimesp=24529><FONT face=Tahoma size=2 DESIGNTIMESP=24530>ALL— все соoбщения, содержащие перечисленные слова; </FONT> <li designtimesp=24531><FONT face=Tahoma size=2 DESIGNTIMESP=24532>ANSWERED — только сообщения, на которые был выслан ответ; </FONT> <li designtimesp=24533><FONT face=Tahoma size=2 DESIGNTIMESP=24534>ВСС "string" — «екать "string" в поле Вcс; </FONT> <li designtimesp=24535><FONT face=Tahoma size=2 DESIGNTIMESP=24536>Before "date — сообщения, датированные ранее "date"; </FONT> <li designtimesp=24537><FONT face=Tahoma size=2 DESIGNTIMESP=24538>Body "string" — сообщения, содержащие в своем теле "string"; </FONT> <li designtimesp=24539><FONT face=Tahoma size=2 DESIGNTIMESP=24540>СС "string" — искать "string" в поле Сс; </FONT> <li designtimesp=24541><FONT face=Tahoma size=2 DESIGNTIMESP=24542>Deleted — удаленные сообщения; </FONT> <li designtimesp=24543><FONT face=Tahoma size=2 DESIGNTIMESP=24544>Flagged — сообщения со статусом «Важное»; </FONT> <li designtimesp=24545><FONT face=Tahoma size=2 DESIGNTIMESP=24546>FROM "string " — искать "string" в поле From; </FONT> <li designtimesp=24547><FONT face=Tahoma size=2 DESIGNTIMESP=24548>KEYWORD "strinп" — искать сообщения, содержащие слово "string"; </FONT> <li designtimesp=24549><FONT face=Tahoma size=2 DESIGNTIMESP=24550>NEW — просматРивать только новые сообщения; </FONT> <li designtimesp=24551><FONT face=Tahoma size=2 DESIGNTIMESP=24552>Old — проСматривать только старые сообщения; </FONT> <li designtimesp=24553><FONT face=Tahoma size=2 DESIGNTIMESP=24554>On date — просматривать сообщения, датированные "date"; </FONT> <li designtimesp=24555><FONT face=Tahoma size=2 DESIGNTIMESP=24556>RFCFNT — просматривать свежие сообщения (с флагом \\RECENT); ссси „посматривать прочитанные сообщения ; </FONT> <li designtimesp=24557><FONT face=Tahoma size=2 DESIGNTIMESP=24558>Since "date" — просматривать сообщения, датированные позже "date"; </FONT> <li designtimesp=24559><FONT face=Tahoma size=2 DESIGNTIMESP=24560>Subject "string" — искать "string" в поле темы Subject:; </FONT> <li designtimesp=24561><FONT face=Tahoma size=2 DESIGNTIMESP=24562>TFXT "string" — искать сообщения, содержащие текст "string"; </FONT> <li designtimesp=24563><FONT face=Tahoma size=2 DESIGNTIMESP=24564>To string — искать сообщения, содержащие "string" в поле адреса; </FONT> <li designtimesp=24565><FONT face=Tahoma size=2 DESIGNTIMESP=24566>UNANSWERED — пРoсматРивать сообщения, на которые не был написан ответ; </FONT> <li designtimesp=24567><FONT face=Tahoma size=2 DESIGNTIMESP=24568>UNDFI FTED — просматривать неудаленные сообщения; </FONT> <li designtimesp=24569><FONT face=Tahoma size=2 DESIGNTIMESP=24570>UNFI АГ6ЕО — пРосматРивать сообщения без флагов; </FONT> <li designtimesp=24571><FONT face=Tahoma size=2 DESIGNTIMESP=24572>UNKEYWORD "sttring" — искать сообщения, не содержащие слово "string"; </FONT> <li designtimesp=24573><FONT face=Tahoma size=2 DESIGNTIMESP=24574>UNSEEN — просматривать непросмотренные сообщения. </FONT></LI></UL> <P DESIGNTIMESP=24575><FONT face=Tahoma size=2 DESIGNTIMESP=24576>Например, чтобы найти все сообщения от отправителя Peter, на которые не был выслан ответ, указывается: UNANSWERED FROM Peter. </FONT></P> <P class=Text_Bold DESIGNTIMESP=24577><FONT face=Tahoma size=2 DESIGNTIMESP=24578>imap_scanmailbox </FONT></P> <P DESIGNTIMESP=24579><FONT face=Tahoma size=2 DESIGNTIMESP=24580>Поиск текста в сообщениях </FONT></P> <P DESIGNTIMESP=24581><FONT face=Tahoma size=2 DESIGNTIMESP=24582>array imap_scanmailbox (int imap_stream, string ref, </FONT></P> <P DESIGNTIMESP=24583><FONT face=Tahoma size=2 DESIGNTIMESP=24584>string pattern, string content) </FONT></P> <P DESIGNTIMESP=24585><FONT face=Tahoma size=2 DESIGNTIMESP=24586>функция подобна imapJistmailbox(), но она возвращает имена только тех ящиков, которые содержат в себе строку content. </FONT></P> <P class=Text_Bold DESIGNTIMESP=24587><FONT face=Tahoma size=2 DESIGNTIMESP=24588>imap_fetch_overview </FONT></P> <P DESIGNTIMESP=24589><FONT face=Tahoma size=2 DESIGNTIMESP=24590>Получение описания сообщений </FONT></P> <P DESIGNTIMESP=24591><FONT face=Tahoma size=2 DESIGNTIMESP=24592>array imap_fetch_overview (int imap_stream, string sequence [, int flags])</FONT></P> <P DESIGNTIMESP=24593><FONT face=Tahoma size=2 DESIGNTIMESP=24594>Возвращает в массиве объекты, содержащие информацию о сообщениях, номера которых перечислены в строке sequence. Эта строка должна содержать номер или номера через запятую без пробелов; можно указать диапазон разделителем «двоеточие» (:). Если в значении аргумента указана константа FTJJID, это указывает на то, что номера являются уникальными идентификаторами UID. </FONT></P> <P DESIGNTIMESP=24595><FONT face=Tahoma size=2 DESIGNTIMESP=24596>Каждый объект массива может иметь следующие свойства: </FONT></P> <ul designtimesp=24597> <li designtimesp=24598><FONT face=Tahoma size=2 DESIGNTIMESP=24599>subject — тема сообщения; </FONT> <li designtimesp=24600><FONT face=Tahoma size=2 DESIGNTIMESP=24601>from — отправитель; </FONT> <li designtimesp=24602><FONT face=Tahoma size=2 DESIGNTIMESP=24603>date — дата отправки; </FONT> <li designtimesp=24604><FONT face=Tahoma size=2 DESIGNTIMESP=24605>message_id — Message-ID; </FONT> <li designtimesp=24606><FONT face=Tahoma size=2 DESIGNTIMESP=24607>references — ссылки на message_id; </FONT> <li designtimesp=24608><FONT face=Tahoma size=2 DESIGNTIMESP=24609>size — размер в байтах; </FONT> <li designtimesp=24610><FONT face=Tahoma size=2 DESIGNTIMESP=24611>uid — уникальный идентификатор сообщения UID в ящике; </FONT> <li designtimesp=24612><FONT face=Tahoma size=2 DESIGNTIMESP=24613>msgno — порядковый номер сообщения в ящике; </FONT> <li designtimesp=24614><FONT face=Tahoma size=2 DESIGNTIMESP=24615>recent — присутствие флага «новое»; </FONT> <li designtimesp=24616><FONT face=Tahoma size=2 DESIGNTIMESP=24617>flagged — присутствие флага «важное»; </FONT> <li designtimesp=24618><FONT face=Tahoma size=2 DESIGNTIMESP=24619>answered — присутствие флага «ответ написан»; </FONT> <li designtimesp=24620><FONT face=Tahoma size=2 DESIGNTIMESP=24621>deleted — пометка сообщения к удалению; </FONT> <li designtimesp=24622><FONT face=Tahoma size=2 DESIGNTIMESP=24623>seen — прочитанное сообщение; </FONT> <li designtimesp=24624><FONT face=Tahoma size=2 DESIGNTIMESP=24625>draft — присутствие флага «черновик». </FONT></LI></UL> <P class=list DESIGNTIMESP=24626><FONT face=Tahoma size=2 DESIGNTIMESP=24627>Smbox = imap_open("{your л map host:143}".<br designtimesp=24628>"username","password") cheC'can't connect: <br designtimesp=24629>" .imap_last_error()): <br designtimesp=24630>$overview = imap_fetch_overview($mbox."2,4 6",0).<br designtimesp=24631>if(is_array($overview)) { pnnt_r($overview): } <br designtimesp=24632>imap close($mbox): </FONT></P> <P DESIGNTIMESP=24633><FONT face=Tahoma size=2 DESIGNTIMESP=24634>Выводится информация следующего вида: </FONT></P> <P class=list DESIGNTIMESP=24635><FONT face=Tahoma size=2 DESIGNTIMESP=24636>Array <br designtimesp=24637>[0] =&gt; stdClass Objecl <br designtimesp=24638>[subject] -&gt; ПроРавление <br designtimesp=24639>[from] =&gt; IG &lt;ig&lt;^or&gt; <br designtimesp=24640>[date] &gt; Sun 10 May 2001<br designtimesp=24641>01-41^°0 +»400 [message_id] -&gt;<br designtimesp=24642>^(100801c0db2c$3c46a2cO<br designtimesp=24643>$0100007f(aigor&gt; <br designtimesp=24644>[S1ze] =&gt; 1621 <br designtimesp=24645>[uid] -&gt; 2897036J <br designtimesp=24646>[msgno] =&gt; 1 <br designtimesp=24647>[recent] =&gt; 0 <br designtimesp=24648>[flagged] =&gt; 0 <br designtimesp=24649>[answered] ==&gt; 0 <br designtimesp=24650>[deleted] =&gt; 0 <br designtimesp=24651>[seen] =&gt; 1 <br designtimesp=24652>[draft] -&gt; 0 <br designtimesp=24653>) </FONT></P> <P class=Text_Bold DESIGNTIMESP=24654><FONT face=Tahoma size=2 DESIGNTIMESP=24655>imap_ headers </FONT></P> <P DESIGNTIMESP=24656><FONT face=Tahoma size=2 DESIGNTIMESP=24657>Получение списка сообщений текУЩего ящика </FONT></P> <P DESIGNTIMESP=24658><FONT face=Tahoma size=2 DESIGNTIMESP=24659>array iroapjieaders (int imap_Streara) </FONT></P> <P DESIGNTIMESP=24660><FONT face=Tahoma size=2 DESIGNTIMESP=24661>Возвращает массив, соДержащий заголовки имеющихся сообщений. Сообщения вложенных папок не просматриваются. </FONT></P> <P DESIGNTIMESP=24662><FONT face=Tahoma size=2 DESIGNTIMESP=24663>См. пример в функции imap_open(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=24664><FONT face=Tahoma size=2 DESIGNTIMESP=24665>imap_header </FONT></P> <P DESIGNTIMESP=24666><FONT face=Tahoma size=2 DESIGNTIMESP=24667>Синоним функции imap_headerinfo</FONT></P> <P DESIGNTIMESP=24668><FONT face=Tahoma size=2 DESIGNTIMESP=24669>object imapjieader (int stream, int msgjiumber , int fromlength subjectlength , string defaulthost]]]) </FONT></P> <P class=Text_Bold DESIGNTIMESP=24670><FONT face=Tahoma size=2 DESIGNTIMESP=24671>imap_headerinfo </FONT></P> <P DESIGNTIMESP=24672><FONT face=Tahoma size=2 DESIGNTIMESP=24673>Просмотр заголовка сообщенИя </FONT></P> <P DESIGNTIMESP=24674><FONT face=Tahoma size=2 DESIGNTIMESP=24675>object imap headerinfo (imap_stream, int msg_number)</FONT></P> <P DESIGNTIMESP=24676><FONT face=Tahoma size=2 DESIGNTIMESP=24677>int fromlength [, int Subjectlength [. string defaulthost]]])</FONT></P> <P DESIGNTIMESP=24678><FONT face=Tahoma size=2 DESIGNTIMESP=24679>Возвращает объект, содержащии различные элементы информации о сообщении. </FONT></P> <P class=list DESIGNTIMESP=24680><FONT face=Tahoma size=2 DESIGNTIMESP=24681>$mbox = imap_open <br designtimesp=24682>'\{$SERVEf/p°P3- HOJINBOX". "lgor7". <br designtimesp=24683>Г1дх32Г);<br designtimesp=24684>pnnt_r(imap_header($mbox.l)' </FONT></P> <P DESIGNTIMESP=24685><FONT face=Tahoma size=2 DESIGNTIMESP=24686>Будет выведено примери" следующее: </FONT></P> <P class=list DESIGNTIMESP=24687><FONT face=Tahoma size=2 DESIGNTIMESP=24688>stdClass Object ( <br designtimesp=24689>[date] =&gt; Sun. 13 May <br designtimesp=24690>2005 01:41:00 +0400 [Date] &gt;<br designtimesp=24691>Sun. 13 May 2005 01-41:00 +0400 [subject] <br designtimesp=24692>=&gt; Послание [Subject] =&gt; Послание<br designtimesp=24693>[messagejd] =&gt;<br designtimesp=24694>&lt;000801cOdb2c$3c46a2c<br designtimesp=24695>O$0100007f@igor&gt; [toaddress] -&gt;<br designtimesp=24696>igor@loca]host [to] =&gt; Array ( <br designtimesp=24697>[0] =&gt; swClass Object ( <br designtimesp=24698>[mailbox] -&gt; igor [host] =&gt; <br designtimesp=24699>local host ) ) [fromaddress] =&gt; <br designtimesp=24700>IG &lt;ig@igor.^ [from] =&gt; Array ( <br designtimesp=24701>[0] -&gt; stddass Object ( <br designtimesp=24702>[personal] =&gt; IG [mailbox] =&gt; ig [host] =&gt; <br designtimesp=24703>Igor. ) ) <br designtimesp=24704>[reply_toaddress] =&gt;<br designtimesp=24705>IG &lt;тд1?тдог.&gt; [reply_to] =&gt; Array ( <br designtimesp=24706>[0] -&gt; stddass Object ( <br designtimesp=24707>[personal] =&gt; IG [mailbox] =&gt; <br designtimesp=24708>ig [host] =&gt; igor. ) <br designtimesp=24709>[senderaddress] -&gt;<br designtimesp=24710>IG &lt;ig(?igor.&gt; [sender] -&gt; Array ( <br designtimesp=24711>[0] -&gt; stddass Ob.iect i <br designtimesp=24712>[personal] =&gt; IG <br designtimesp=24713>[mailbox] =&gt; ig [hnbt] -&gt; igor ) ) <br designtimesp=24714>[Recent] &gt; N [Unseen] =&gt; <br designtimesp=24715>[Flagged] =&gt; [Answered] =&gt;<br designtimesp=24716>[Deleted] =&gt; [Draft] =&gt; [Msgno] =&gt; 1<br designtimesp=24717>[MailDate] =&gt; <br designtimesp=24718>13 May-2005 01:41:00 <br designtimesp=24719>+0400 [Size] =&gt; 1581 [udate] =&gt; <br designtimesp=24720>9S9703660 ) </FONT></P> <P DESIGNTIMESP=24721><FONT face=Tahoma size=2 DESIGNTIMESP=24722>В объекте, как вы можете видеть, возвращаются следующие значения: </FONT></P> <ul designtimesp=24723> <li designtimesp=24724><FONT face=Tahoma size=2 DESIGNTIMESP=24725>Идентификационная информация: date, Date, subject, Subject, message^ I id, Msgno, Mai IDate, Size, udate. </FONT> <li designtimesp=24726><FONT face=Tahoma size=2 DESIGNTIMESP=24727>Адресная информация: toaddre^s, to (mailbox, host), fromaddress, from (personal, mailbox, host), replyjtoaddress, reply_to (personal, mailbox, host), senderaddress, sender (personal, mailbox, host). </FONT> <li designtimesp=24728><FONT face=Tahoma size=2 DESIGNTIMESP=24729>Значения флагов: Recent. Unseen, Flagged, Answered, Deleted, Draft. </FONT></LI></UL> <P DESIGNTIMESP=24730><FONT face=Tahoma size=2 DESIGNTIMESP=24731>Структура и формат записей определяются реализацией серверного интерфейса и могут сильно различаться для разных систем (единственный способ выяснить это — проверить на практике). В большинстве случаев для сообщений протоколов ШАР, РОРЗ и NNTP форматы информационных полей идентичны. </FONT></P> <P DESIGNTIMESP=24732><FONT face=Tahoma size=2 DESIGNTIMESP=24733>Для news-сообщений дополнительно возвращается свойство newsgroup. </FONT></P> <P DESIGNTIMESP=24734><FONT face=Tahoma size=2 DESIGNTIMESP=24735>Пары полей date, Date и subject, Subject обычно совпадают. В message_ id хранится уникальный хеш сообщения (идентификатор UID), а в Msgno - относительный порядковый. В записях Size и udate возвращается соответственно размер сообщения в байтах и время в формате UNIX Timestamp. </FONT></P> <P DESIGNTIMESP=24736><FONT face=Tahoma size=2 DESIGNTIMESP=24737>Адресная информация возвращается как в целостном, так и разделенном па составляющие виде. В большинстве случаев адреса fromaddress, reply_toaddress и senderaddress совпадают. Если у сообщения имеется поле Сс: (отправить копии вторичным получателям), то также возвращается адрес ccaddress. </FONT></P> <P DESIGNTIMESP=24738><FONT face=Tahoma size=2 DESIGNTIMESP=24739>Флат сообщения соответственно обозначают: только что пришедшее сообщение, непрочитанное сообщение, помеченное как «Важное», сообщение на которое был написан ответ, сообщение, маркированное к удалению, и черновик сообщения. </FONT></P> <P DESIGNTIMESP=24740><FONT face=Tahoma size=2 DESIGNTIMESP=24741>Три дополнительных аргумента используются редко. </FONT></P> <P class=Text_Bold DESIGNTIMESP=24742><FONT face=Tahoma size=2 DESIGNTIMESP=24743>imap_sort </FONT></P> <P DESIGNTIMESP=24744><FONT face=Tahoma size=2 DESIGNTIMESP=24745>Сортировка заголовков </FONT></P> <P DESIGNTIMESP=24746><FONT face=Tahoma size=2 DESIGNTIMESP=24747>array imap_sort (int stream, int criteria, int reverse, int options) Возвращает массив номеров сообщений, сортированных по критерию. </FONT></P> <P DESIGNTIMESP=24748><FONT face=Tahoma size=2 DESIGNTIMESP=24749>Если в аргументе reverse указывается значение, то происходит обратная сортировка. </FONT></P> <P DESIGNTIMESP=24750><FONT face=Tahoma size=2 DESIGNTIMESP=24751>В аргументе criteria можно указывать одно из следующих значений: </FONT></P> <ul designtimesp=24752> <li designtimesp=24753><FONT face=Tahoma size=2 DESIGNTIMESP=24754>SORTDATE — по дате сообщения; </FONT> <li designtimesp=24755><FONT face=Tahoma size=2 DESIGNTIMESP=24756>SORTARRIVAL — по дате получения; </FONT> <li designtimesp=24757><FONT face=Tahoma size=2 DESIGNTIMESP=24758>SORTFROM — по первому адресу в поле From; </FONT> <li designtimesp=24759><FONT face=Tahoma size=2 DESIGNTIMESP=24760>SORTSUBJECT — по строке темы в поле Subject:; </FONT> <li designtimesp=24761><FONT face=Tahoma size=2 DESIGNTIMESP=24762>SORTTO — по первому адресу в поле То; </FONT> <li designtimesp=24763><FONT face=Tahoma size=2 DESIGNTIMESP=24764>SORTCC — по первому адресу в поле получателей копии Сс; </FONT> <li designtimesp=24765><FONT face=Tahoma size=2 DESIGNTIMESP=24766>SORTSIZE - но размеру сообщения в октетах. </FONT></LI></UL> <P DESIGNTIMESP=24767><FONT face=Tahoma size=2 DESIGNTIMESP=24768>Флаги options аргумента могут (побитово) включать следующие значения:</FONT></P> <ul designtimesp=24769> <li designtimesp=24770><FONT face=Tahoma size=2 DESIGNTIMESP=24771>SEJJID — возвращать уникальный идентификатор сообщения UID вместо сто порядкового номера; </FONT> <li designtimesp=24772><FONT face=Tahoma size=2 DESIGNTIMESP=24773>SE NOPREFETCH — не выполнять с сообщением предварительные манипуляции. </FONT></LI></UL> <P class=Text_Bold DESIGNTIMESP=24774><FONT face=Tahoma size=2 DESIGNTIMESP=24775>imap_fetchstructure </FONT></P> <P DESIGNTIMESP=24776><FONT face=Tahoma size=2 DESIGNTIMESP=24777>Получение полной информации о сообщении </FONT></P> <P DESIGNTIMESP=24778><FONT face=Tahoma size=2 DESIGNTIMESP=24779>object. imap_fetchstructure (int iraap_streara, int msgjiumber [, int flags]) </FONT></P> <P DESIGNTIMESP=24780><FONT face=Tahoma size=2 DESIGNTIMESP=24781>Информация возвращается в объекте, она описывает формат и структуру сообщения в текущем ящике, указанном порядковым номером msgjiumber. Если в аргументе flags указывается значение FTJJID. это свидетельствует о том, что в аргументе msgjiumber указан не номер сообщения, а его идентификатор UID. </FONT></P> <P DESIGNTIMESP=24782><FONT face=Tahoma size=2 DESIGNTIMESP=24783>В объекте присутствуют следующие объекты (его структура сильно варьируется): </FONT></P> <ul designtimesp=24784> <li designtimesp=24785><FONT face=Tahoma size=2 DESIGNTIMESP=24786>type — тип основного тела сообщения; </FONT> <li designtimesp=24787><FONT face=Tahoma size=2 DESIGNTIMESP=24788>encoding — кодировка тела сообщения; </FONT> <li designtimesp=24789><FONT face=Tahoma size=2 DESIGNTIMESP=24790>if subtype — True, если имеется вложенный тип; </FONT> <li designtimesp=24791><FONT face=Tahoma size=2 DESIGNTIMESP=24792>subtype — вложенный тин MIME; </FONT> <li designtimesp=24793><FONT face=Tahoma size=2 DESIGNTIMESP=24794>ifdescription — True, если имеется строка описания; </FONT> <li designtimesp=24795><FONT face=Tahoma size=2 DESIGNTIMESP=24796>description — строка описания; </FONT> <li designtimesp=24797><FONT face=Tahoma size=2 DESIGNTIMESP=24798>if id — True, если имеется строка идентификации; </FONT> <li designtimesp=24799><FONT face=Tahoma size=2 DESIGNTIMESP=24800>id — строка идентификации; </FONT> <li designtimesp=24801><FONT face=Tahoma size=2 DESIGNTIMESP=24802>lines — размер в строках; </FONT> <li designtimesp=24803><FONT face=Tahoma size=2 DESIGNTIMESP=24804>bytes — размер в байтах; </FONT> <li designtimesp=24805><FONT face=Tahoma size=2 DESIGNTIMESP=24806>ifdisposition — True, если имеется строка размещения; </FONT> <li designtimesp=24807><FONT face=Tahoma size=2 DESIGNTIMESP=24808>disposition - строка размещения; </FONT> <li designtimesp=24809><FONT face=Tahoma size=2 DESIGNTIMESP=24810>ifdparameters — True, если имеется массив dparameters; </FONT> <li designtimesp=24811><FONT face=Tahoma size=2 DESIGNTIMESP=24812>dparameters — массив d-параметров (объектов, где каждый вложен-I ный объект состоит из пар «атрибут», «значение»); </FONT> <li designtimesp=24813><FONT face=Tahoma size=2 DESIGNTIMESP=24814>ifparameters — True, если существует массив параметров; </FONT> <li designtimesp=24815><FONT face=Tahoma size=2 DESIGNTIMESP=24816>parameters — массив параметров MIME (объектов, где каждый вложенный объект состоит из пар «атрибут*, «значение»); </FONT> <li designtimesp=24817><FONT face=Tahoma size=2 DESIGNTIMESP=24818>parts — массив объектов, описывающий каждую часть сообщения (аналогичен по структуре объекту верхнего уровня, но не может иметь вложенные части). </FONT></LI></UL> <P DESIGNTIMESP=24819><FONT face=Tahoma size=2 DESIGNTIMESP=24820>Тип type основного тела может определяться следующими значениями: </FONT></P> <ul designtimesp=24821> <li designtimesp=24822><FONT face=Tahoma size=2 DESIGNTIMESP=24823>0 — простой текст; </FONT> <li designtimesp=24824><FONT face=Tahoma size=2 DESIGNTIMESP=24825>1 — составное сообщение (multipart); </FONT> <li designtimesp=24826><FONT face=Tahoma size=2 DESIGNTIMESP=24827>2 — простое сообщение; </FONT> <li designtimesp=24828><FONT face=Tahoma size=2 DESIGNTIMESP=24829>3 — приложение; </FONT> <li designtimesp=24830><FONT face=Tahoma size=2 DESIGNTIMESP=24831>4 — аудио; </FONT> <li designtimesp=24832><FONT face=Tahoma size=2 DESIGNTIMESP=24833>5 — картинка; </FONT> <li designtimesp=24834><FONT face=Tahoma size=2 DESIGNTIMESP=24835>6 — видео; </FONT> <li designtimesp=24836><FONT face=Tahoma size=2 DESIGNTIMESP=24837>7 — другое. </FONT></LI></UL> <P DESIGNTIMESP=24838><FONT face=Tahoma size=2 DESIGNTIMESP=24839>Типы кодировки encoding: </FONT></P> <ul designtimesp=24840> <li designtimesp=24841><FONT face=Tahoma size=2 DESIGNTIMESP=24842>0 — 7BIT; </FONT> <li designtimesp=24843><FONT face=Tahoma size=2 DESIGNTIMESP=24844>1 — 8BIT; </FONT> <li designtimesp=24845><FONT face=Tahoma size=2 DESIGNTIMESP=24846>2 — BINARY; </FONT> <li designtimesp=24847><FONT face=Tahoma size=2 DESIGNTIMESP=24848>3 — BASE64; </FONT> <li designtimesp=24849><FONT face=Tahoma size=2 DESIGNTIMESP=24850>4 — QUOTED-PRINTABLE; </FONT> <li designtimesp=24851><FONT face=Tahoma size=2 DESIGNTIMESP=24852>5 — OTHER. </FONT></LI></UL> <P DESIGNTIMESP=24853><FONT face=Tahoma size=2 DESIGNTIMESP=24854>Для простого сообщения возвращает объект такого вида: </FONT></P> <P class=list DESIGNTIMESP=24855><FONT face=Tahoma size=2 DESIGNTIMESP=24856>stdClass Object <br designtimesp=24857>[ifsubtype] =&gt; 1 <br designtimesp=24858>[subtype] =&gt; PLAIN [ifdescnption] <br designtimesp=24859>=&gt; 0 [ifid] =&gt; 0 [lines] =&gt; 2 [bytes] =&gt;<br designtimesp=24860>41 [ifdisposition] =&gt; 0 [ifdparameters] <br designtimesp=24861>=&gt; 0 [ifparameters] =&gt; 0 [parameters]<br designtimesp=24862>=&gt; stdClass Object '&gt; </FONT></P> <P DESIGNTIMESP=24863><FONT face=Tahoma size=2 DESIGNTIMESP=24864>Для сложного сообщения1 возвращает объект следующего вида: </FONT></P> <P class=list DESIGNTIMESP=24865><FONT face=Tahoma size=2 DESIGNTIMESP=24866>stdClass Object <br designtimesp=24867>[type] =&gt; 1 [ifsubtype] =&gt; 1<br designtimesp=24868>[subtype]<br designtimesp=24869>=&gt; ALTERNATIVE [ifdescription] =&gt;<br designtimesp=24870>0 [ifid] =&gt; 0 [Ifdisposition] =&gt;<br designtimesp=24871>0 [ifdparameters] =&gt; 0 <br designtimesp=24872>[ifparameters] =&gt; <br designtimesp=24873>1 [parameters] =&gt; Array ( <br designtimesp=24874>[0] =&gt; stdClass Object ( <br designtimesp=24875>[attribute] =&gt; boundary <br designtimesp=24876>[value] =&gt; -=_NextPart_000_0005_<br designtimesp=24877>01CODB4D.C33837AO <br designtimesp=24878>[parts] =&gt; Array ( [0] =&gt; stdClass<br designtimesp=24879>Object ( [encoding] =&gt; 4 <br designtimesp=24880>[ifsubtype] =&gt; 1 [subtype] =&gt; <br designtimesp=24881>PLAIN<br designtimesp=24882>[ifdescription] =&gt; 0 [ifid] =&gt; 0 <br designtimesp=24883>[lines] =&gt; 5 [bytes] =&gt; 59 <br designtimesp=24884>[ifdisposition] =&gt; 0 <br designtimesp=24885>[ifdparameters] =&gt; <br designtimesp=24886>0 [ifparameters] =&gt; <br designtimesp=24887>1 [parameters] =&gt; Array ( <br designtimesp=24888>[0] =&gt; stddass Object \ ( <br designtimesp=24889>} [attribute] =&gt; charset <br designtimesp=24890>[value] =&gt; koi8-r ) <br designtimesp=24891>[1] "&gt; stddass Object <br designtimesp=24892>[encoding] =&gt; 4 [ifsubtype] =&gt;<br designtimesp=24893>1 [subtype] =&gt; HTML [ifdescription]<br designtimesp=24894>=&gt; 0 [ifid] =&gt; 0 [lines] =&gt; 14 <br designtimesp=24895>[bytes] =&gt; 547 [ifdisposition] =&gt; <br designtimesp=24896>0 [ifdparameters] =&gt; <br designtimesp=24897>0 [ifparameters] =&gt; <br designtimesp=24898>1 [parameters] =&gt; Array ( <br designtimesp=24899>[0] =&gt; stddass Object ( <br designtimesp=24900>[attribute] =&gt; charset [value] =&gt;<br designtimesp=24901>koi8-r ) ) ) ) ) </FONT></P> <P class=Text_Bold DESIGNTIMESP=24902><FONT face=Tahoma size=2 DESIGNTIMESP=24903>imap_fetchheader </FONT></P> <P DESIGNTIMESP=24904><FONT face=Tahoma size=2 DESIGNTIMESP=24905>Получение заголовка сообщения </FONT></P> <P DESIGNTIMESP=24906><FONT face=Tahoma size=2 DESIGNTIMESP=24907>string imap_fetchheader (int imap_stream, int msgno, int flags) </FONT></P> <P DESIGNTIMESP=24908><FONT face=Tahoma size=2 DESIGNTIMESP=24909>Возиращается полный, нефильтрованный заголовок (формата RFC822) сообщения с номером msgno в текущем ящике. </FONT></P> <P DESIGNTIMESP=24910><FONT face=Tahoma size=2 DESIGNTIMESP=24911>В аргументе flags могут быть указаны следующие значения (их можно бинарно комбинировать): </FONT></P> <ul designtimesp=24912> <li designtimesp=24913><FONT face=Tahoma size=2 DESIGNTIMESP=24914>FTJJID — в аргументе msgno указан уникальный идентификатор UID; </FONT> <li designtimesp=24915><FONT face=Tahoma size=2 DESIGNTIMESP=24916>FT_INTERNAL — возвращать текст как есть, а не в формате CRLF1; </FONT> <li designtimesp=24917><FONT face=Tahoma size=2 DESIGNTIMESP=24918>FT_PREFETCHTEXT — (RFC822) одновременно получается текст сообщения, что сокращает общую длительность (RTT) подключений ШАР (полученный текст сохраняется в локальном буфере на время подключения). </FONT></LI></UL> <P class=Text_Bold DESIGNTIMESP=24919><FONT face=Tahoma size=2 DESIGNTIMESP=24920>imap_body </FONT></P> <P DESIGNTIMESP=24921><FONT face=Tahoma size=2 DESIGNTIMESP=24922>Получение сообщения </FONT></P> <P DESIGNTIMESP=24923><FONT face=Tahoma size=2 DESIGNTIMESP=24924>string imap_body (int imap_stream, int msg_number [, int flags]) </FONT></P> <P DESIGNTIMESP=24925><FONT face=Tahoma size=2 DESIGNTIMESP=24926>Возвращает тело сообщения с номером msgjiumber в текущем ящике. В аргументе fI ags могут быть указаны следующие значения (их можно бинарно комбинировать): </FONT></P> <ul designtimesp=24927> <li designtimesp=24928><FONT face=Tahoma size=2 DESIGNTIMESP=24929>FTJJID — в аргументе msgno указан уникальный идентификатор UID; </FONT> <li designtimesp=24930><FONT face=Tahoma size=2 DESIGNTIMESP=24931>FT_PEEK — не устанавливать флаг сообщения \Seen (если он еще не установлен); </FONT> <li designtimesp=24932><FONT face=Tahoma size=2 DESIGNTIMESP=24933>FT_INTERNAL — возвращать текст как есть, а не в формате CRLF1. </FONT></LI></UL> <P DESIGNTIMESP=24934><FONT face=Tahoma size=2 DESIGNTIMESP=24935>Функция возвращает полную точную копию сообщения (как есть). С ее помощью можно прочитать простые сообщения. Для сложных (составных) сообщений функция может вернуть просто строку: «This is a multi-part message in MIME format» («Это сообщение в формате MIME состоит из нескольких частей»). Чтобы извлечь отдельные его части и обработать соответственно MIME-кодировке, пользуйтесь функциями imap_fetch_structure() и imap_fetch_body(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=24936><FONT face=Tahoma size=2 DESIGNTIMESP=24937>imap_fetchbody </FONT></P> <P DESIGNTIMESP=24938><FONT face=Tahoma size=2 DESIGNTIMESP=24939>Получение части сообщения </FONT></P> <P DESIGNTIMESP=24940><FONT face=Tahoma size=2 DESIGNTIMESP=24941>string imap_fetchbody (int imap_stream, int msgjiumber. </FONT></P> <P DESIGNTIMESP=24942><FONT face=Tahoma size=2 DESIGNTIMESP=24943>string partjiumber [, flags flags]) </FONT></P> <P DESIGNTIMESP=24944><FONT face=Tahoma size=2 DESIGNTIMESP=24945>Возвращает часть тела сообщения с номером msgjiumber в текущем ящике. Спецификация указания перечисления номеров секций в аргументе partjiumber определяется IMAP 4 (в тривиальном случае это может быть простой номер части, где 0 — основная часть, 1 и далее — вложенные). </FONT></P> <P DESIGNTIMESP=24946><FONT face=Tahoma size=2 DESIGNTIMESP=24947>В аргументе flags могут быть указаны следующие значения (их можно бинарно комбинировать): </FONT></P> <ul designtimesp=24948> <li designtimesp=24949><FONT face=Tahoma size=2 DESIGNTIMESP=24950>FTJJID — в аргументе msgno указан уникальный идентификатор UID; </FONT> <li designtimesp=24951><FONT face=Tahoma size=2 DESIGNTIMESP=24952>FT_PEEK — не устанавливать флаг сообщения Seen (если он еще не установлен); </FONT> <li designtimesp=24953><FONT face=Tahoma size=2 DESIGNTIMESP=24954>FT_INTERNAL — возвращать текст как есть, а не в формате CRLF. </FONT></LI></UL> <P DESIGNTIMESP=24955><FONT face=Tahoma size=2 DESIGNTIMESP=24956>Например, для сложного сообщения, структура которого приведена в примере функции imap_fetchstructure(), содержание частей может быть следующим. </FONT></P> <P DESIGNTIMESP=24957><FONT face=Tahoma size=2 DESIGNTIMESP=24958>Это основная часть сообщения (при вызове imap_fetchbody($m,l,0);): </FONT></P> <P class=list DESIGNTIMESP=24959><FONT face=Tahoma size=2 DESIGNTIMESP=24960>X-F: &lt;ig@igor &gt; Sun May 13 01:41:00<br designtimesp=24961>2003 Received: from igor [127 0 0.1] by igor <br designtimesp=24962>(SMTPD32-6 06 EVAL) id ADEC10316 Sun. <br designtimesp=24963>13 May 2001 01:41-00 +0400 Message-ID:<br designtimesp=24964>&lt;000801cOdb2c$3c46a2cO$01000D7№igor&gt;<br designtimesp=24965>From: "IG" &lt;ig@igor.&gt; To &lt;igor@localhost&gt;<br designtimesp=24966>Subject Приветствие Date: Sun. 13 May 2001 <br designtimesp=24967>01.41-00 +0400 MIME-Version: 1.0<br designtimesp=24968>Content-Type: multipart/alternative: <br designtimesp=24969>boundary"-- --=_NextPart_000_0005_<br designtimesp=24970>01CODB4D.C33837AO" X-Pnonty: <br designtimesp=24971>3 X-MSMail Priority Normal <br designtimesp=24972>X-Mailer: Microsoft Outlook Express <br designtimesp=24973>5.00 2919 6700 X-MimeOLE: Produced <br designtimesp=24974>By Microsoft MimeOLE V5.00.2919.6700<br designtimesp=24975>X-RCPT-TO- &lt;igor@localhost&gt; X-UIDL: <br designtimesp=24976>289703661 Status: U </FONT></P> <P DESIGNTIMESP=24977><FONT face=Tahoma size=2 DESIGNTIMESP=24978>Это первая вложенная часть (при вызове imap_fetchbody($m,l,l);): </FONT></P> <P class=list DESIGNTIMESP=24979><FONT face=Tahoma size=2 DESIGNTIMESP=24980>Привет. <br designtimesp=24981>У нас все хорошо <br designtimesp=24982>Пока. </FONT></P> <P DESIGNTIMESP=24983><FONT face=Tahoma size=2 DESIGNTIMESP=24984>Это вторая вложенная часть (при вызове imap_fetchbody($m,l,2);): </FONT></P> <P DESIGNTIMESP=24985><span class=list designtimesp=24986><FONT face=Tahoma size=2 DESIGNTIMESP=24987>&lt;!DOCTYPE HTML PUBLIC "<br designtimesp=24988>-//W3C//DTD HTML 4 0<br designtimesp=24989>Transitional//EN"&gt; ^HTML&gt;<br designtimesp=24990>&lt;HEAD&gt; &lt;META content=<br designtimesp=24991>3D"text/html. charset=3Dkoi8-r"<br designtimesp=24992>http-equiv=3DContent-Type&gt; <br designtimesp=24993>&lt;META content«3D"MSHTML 5.00.2920.0" <br designtimesp=24994>name=3DGENERATOR&gt; <br designtimesp=24995>&lt;STYLE&gt;<br designtimesp=24996>&lt;/STYLE&gt; <br designtimesp=24997>&lt;/HEAD&gt; <br designtimesp=24998>&lt;BODY bgColor=3D#ffffff&gt; <br designtimesp=24999>&lt;DIV&gt;&lt;FONT face=3D"Arial Cyr" <br designtimesp=25000>size=3D2&gt; Привет &lt;/FONT&gt;<br designtimesp=25001>&lt;/DIV&gt; <br designtimesp=25002>&lt;DIV&gt;&lt;FONT face=3D"Anal CYR"<br designtimesp=25003>size=3D2&gt; У нас все хорошо.&lt;/FONT&gt;<br designtimesp=25004>&lt;/DIV&gt; &lt;DIV&gt;&lt;FONT face=3D"Anal CYR"<br designtimesp=25005>size=3D2&gt; Пока. &lt;/FONT&gt;&lt;/DIV&gt;<br designtimesp=25006>&lt;/BODY&gt;<br designtimesp=25007>&lt;/HTML&gt; </FONT></SPAN></P> <P class=Text_Bold DESIGNTIMESP=25008><FONT face=Tahoma size=2 DESIGNTIMESP=25009>bnap_uid </FONT></P> <P DESIGNTIMESP=25010><FONT face=Tahoma size=2 DESIGNTIMESP=25011>Получение DID сообщения из порядкового номера </FONT></P> <P DESIGNTIMESP=25012><FONT face=Tahoma size=2 DESIGNTIMESP=25013>int imap_uid (int imap_stream, int msgno) </FONT></P> <P DESIGNTIMESP=25014><FONT face=Tahoma size=2 DESIGNTIMESP=25015>Возвращается уникальный идентификатор сообщения UID. Он отличается от номера неизменностью, так как номера псревычисляются при удалении сообщений. Действие функции обратно imapjnsgno(). </FONT></P> <P class=list DESIGNTIMESP=25016><FONT face=Tahoma size=2 DESIGNTIMESP=25017>echo imap_uid($mbox.l); <br designtimesp=25018>// выводит например: 289703561 </FONT></P> <P class=Text_Bold DESIGNTIMESP=25019><FONT face=Tahoma size=2 DESIGNTIMESP=25020>imap_msgno </FONT></P> <P DESIGNTIMESP=25021><FONT face=Tahoma size=2 DESIGNTIMESP=25022>Получение порядкового номера сообщения из UID</FONT></P> <P DESIGNTIMESP=25023><FONT face=Tahoma size=2 DESIGNTIMESP=25024>int imapjnsgno (int imap_stream, int uid) </FONT></P> <P DESIGNTIMESP=25025><FONT face=Tahoma size=2 DESIGNTIMESP=25026>Действие функции обратно imap_uid(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=25027><FONT face=Tahoma size=2 DESIGNTIMESP=25028>imap_setflag_full </FONT></P> <P DESIGNTIMESP=25029><FONT face=Tahoma size=2 DESIGNTIMESP=25030>Установка флагов сообщения </FONT></P> <P DESIGNTIMESP=25031><FONT face=Tahoma size=2 DESIGNTIMESP=25032>string imap_setflag_fu"n (int stream, string sequence, string flag, string options) </FONT> <P DESIGNTIMESP=25033><FONT face=Tahoma size=2 DESIGNTIMESP=25034>В аргументе sequence указывается перечисление номеров сообщений, для которых необходимо установить флаги, указанные в аргументе flag. Флат (согласно RFC2060) обозначаются: "\\Sccn", "\\Answered", "\\Flagged", "\\Deleted", "\\Draft", и "\\Rccent". </FONT></P> <P DESIGNTIMESP=25035><FONT face=Tahoma size=2 DESIGNTIMESP=25036>В аргументе options может быть указано значение STJJID, указывающее на то, что в аргументе sequence указан уникальный идентификатор UID. </FONT></P> <P class=list DESIGNTIMESP=25037><FONT face=Tahoma size=2 DESIGNTIMESP=25038>$mbox =- imap_open("{your.I map.host:143}".<br designtimesp=25039>"userrame"."password") || dieC'can't connect: "<br designtimesp=25040>.imap_last_error()): <br designtimesp=25041>if (imap_sPtflag_full($mbox."2A15:<br designtimesp=25042>19.23"."\\Seen \\Flagged")) print <br designtimesp=25043>"Флаги установлены"; <br designtimesp=25044>imap_clobe($mbox). </FONT></P> <P class=Text_Bold DESIGNTIMESP=25045><FONT face=Tahoma size=2 DESIGNTIMESP=25046>imap_clearflag_ full </FONT></P> <P DESIGNTIMESP=25047><FONT face=Tahoma size=2 DESIGNTIMESP=25048>Сброс флагов сообщения </FONT></P> <P DESIGNTIMESP=25049><FONT face=Tahoma size=2 DESIGNTIMESP=25050>string imap_clearf!ag_fun (int stream, string sequence, string flag, string options) </FONT> <P DESIGNTIMESP=25051><FONT face=Tahoma size=2 DESIGNTIMESP=25052>Действие функции противоположно imap_setflag_fuTI(). </FONT></P> <P DESIGNTIMESP=25053><FONT face=Tahoma size=2 DESIGNTIMESP=25054>См. описание в imap_setf1ag_fun(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=25055><FONT face=Tahoma size=2 DESIGNTIMESP=25056>imap_delete </FONT></P> <P DESIGNTIMESP=25057><FONT face=Tahoma size=2 DESIGNTIMESP=25058>Маркировка сообщения как удаленного </FONT></P> <P DESIGNTIMESP=25059><FONT face=Tahoma size=2 DESIGNTIMESP=25060>int imapjJelete tint imap_stream, int msg_number [, int flags]) </FONT></P> <P DESIGNTIMESP=25061><FONT face=Tahoma size=2 DESIGNTIMESP=25062>Возвращает TRUE. </FONT></P> <P DESIGNTIMESP=25063><FONT face=Tahoma size=2 DESIGNTIMESP=25064>В аргументе msg_number указывается номер сообщения, а в flags (при значении FTJJID) - является ли номер идентификатором. Сообщения, помеченные к удалению, остаются в ящике, пока не будет вызвана функция imap_expunge() или подключение (с установленным флагом CL_EXPUNGE) не будет закрыто функцией imap_close(). </FONT></P> <P class=list DESIGNTIMESP=25065><FONT face=Tahoma size=2 DESIGNTIMESP=25066>\ Smbox - imap_open ("{your miap.hostJINBOX". <br designtimesp=25067>"username". "password") || die<br designtimesp=25068>("can't cornect: " imap_last_error()): <br designtimesp=25069>/ Scheck = imapjnailboxmsginfo <br designtimesp=25070>(Smbox): print "Сообщений до удаления<br designtimesp=25071>" Scheck-&gt;Nmsgs . "&lt;br&gt;\n" ;<br designtimesp=25072>imapjJelete (Smbox. 1); <br designtimesp=25073>$check = imipjnailboxmsginfo <br designtimesp=25074>(imbox): print "Сообщений после удаления<br designtimesp=25075>".$check-&gt;Nmsgs."&lt;br&gt;\n" : imap_expunge <br designtimesp=25076>(Smbox): $check = imap_mailboxmsginfo<br designtimesp=25077>(Smbox). <br designtimesp=25078>print " Сообщений после expunge()<br designtimesp=25079>: ",$chPck-&gt;Nmsgs "^br&gt;\n" ; imap_close <br designtimesp=25080>(Smbox); </FONT></P> <P class=Text_Bold DESIGNTIMESP=25081><FONT face=Tahoma size=2 DESIGNTIMESP=25082>imap_undelete </FONT></P> <P DESIGNTIMESP=25083><FONT face=Tahoma size=2 DESIGNTIMESP=25084>Восстановление удаленного сообщения </FONT></P> <P DESIGNTIMESP=25085><FONT face=Tahoma size=2 DESIGNTIMESP=25086>int imap_undelete (int imap_stream, int msg_number) </FONT></P> <P DESIGNTIMESP=25087><FONT face=Tahoma size=2 DESIGNTIMESP=25088>Функция удаляет флаг удаления с сообщения с номером msgjiumber. Этот флаг ранее можег быть установлен функциями imap_delete(), imapjnail_move() или imap_setflag_full(). </FONT></P> <P DESIGNTIMESP=25089><FONT face=Tahoma size=2 DESIGNTIMESP=25090>Возвращает TRUE или FALSE — при ошибке. </FONT></P> <P class=Text_Bold DESIGNTIMESP=25091><FONT face=Tahoma size=2 DESIGNTIMESP=25092>imap_ expunge </FONT></P> <P DESIGNTIMESP=25093><FONT face=Tahoma size=2 DESIGNTIMESP=25094>Удаление «удаленных» сообщений </FONT></P> <P DESIGNTIMESP=25095><FONT face=Tahoma size=2 DESIGNTIMESP=25096>int imap_expunge (int imap_stream) </FONT></P> <P DESIGNTIMESP=25097><FONT face=Tahoma size=2 DESIGNTIMESP=25098>Полностью удаляет из ящика сообщения, имеющие флаг "\\Dcleted", который может быть установлен функциями imap_delete(), imap_mail_ move() или imap_setflag_full(). </FONT></P> <P DESIGNTIMESP=25099><FONT face=Tahoma size=2 DESIGNTIMESP=25100>Возвращает TRUE. </FONT></P> <P class=Text_Bold DESIGNTIMESP=25101><FONT face=Tahoma size=2 DESIGNTIMESP=25102>imap_mail_copy </FONT></P> <P DESIGNTIMESP=25103><FONT face=Tahoma size=2 DESIGNTIMESP=25104>Копирование сообщения в ящик </FONT></P> <P DESIGNTIMESP=25105><FONT face=Tahoma size=2 DESIGNTIMESP=25106>int -imapjnail_copy (int imap_stream, string msglist, string mbox [. int flags]) </FONT></P> <P DESIGNTIMESP=25107><FONT face=Tahoma size=2 DESIGNTIMESP=25108>Возвращает TRUE или FALSE — при ошибке. </FONT></P> <P DESIGNTIMESP=25109><FONT face=Tahoma size=2 DESIGNTIMESP=25110>Перечисление номеров копируемых сообщений указывается в стро-I ковом аргументе msglist. Их следует перечислять через запятую, без пробелов, диапазоны указываются знаком двоеточия. </FONT></P> <P DESIGNTIMESP=25111><FONT face=Tahoma size=2 DESIGNTIMESP=25112>См. также документ RFC2060. </FONT></P> <P DESIGNTIMESP=25113><FONT face=Tahoma size=2 DESIGNTIMESP=25114>Ящик назначения, указываемый в аргументе mbox, указывается без имени сервера. </FONT></P> <P DESIGNTIMESP=25115><FONT face=Tahoma size=2 DESIGNTIMESP=25116>В аргументе flags можно указывать битовую маску из следующих констант: </FONT></P> <ul designtimesp=25117> <li designtimesp=25118><FONT face=Tahoma size=2 DESIGNTIMESP=25119>CPJJID - номера являются уникальными идентификаторами UID; </FONT> <li designtimesp=25120><FONT face=Tahoma size=2 DESIGNTIMESP=25121>СР MOVE — удалять сообщения после копирования. </FONT></LI></UL> <P class=list DESIGNTIMESP=25122><FONT face=Tahoma size=2 DESIGNTIMESP=25123>imap_mail_copy($m. "1.3 5"."INBOX/Текущие"): </FONT></P> <P class=Text_Bold DESIGNTIMESP=25124><FONT face=Tahoma size=2 DESIGNTIMESP=25125>imap_mail_move </FONT></P> <P DESIGNTIMESP=25126><FONT face=Tahoma size=2 DESIGNTIMESP=25127>Перемещение сообщения в ящик </FONT></P> <P DESIGNTIMESP=25128><FONT face=Tahoma size=2 DESIGNTIMESP=25129>int imapjnailjnove (int imap_stream, string msglist, string robox [. int flags]) </FONT></P> <P DESIGNTIMESP=25130><FONT face=Tahoma size=2 DESIGNTIMESP=25131>Функция аналогична вызову: </FONT></P> <P DESIGNTIMESP=25132><FONT face=Tahoma size=2 DESIGNTIMESP=25133>imap_mail_copy(imap_stream, msglist, mbox, flags | CP_MOVE ); </FONT></P> <P class=Text_Bold DESIGNTIMESP=25134><FONT face=Tahoma size=2 DESIGNTIMESP=25135>imap_alerts </FONT></P> <P DESIGNTIMESP=25136><FONT face=Tahoma size=2 DESIGNTIMESP=25137>Получение сообщения IMAP </FONT></P> <P DESIGNTIMESP=25138><FONT face=Tahoma size=2 DESIGNTIMESP=25139>array imap_alerts (void) </FONT></P> <P DESIGNTIMESP=25140><FONT face=Tahoma size=2 DESIGNTIMESP=25141>Возвращается массив, содержащий все извещения, посланные сервером от начала подключения или после прошлого вызова данной функции. </FONT></P> <P class=Text_Bold DESIGNTIMESP=25142><FONT face=Tahoma size=2 DESIGNTIMESP=25143>imap_mime_header_decode </FONT></P> <P DESIGNTIMESP=25144><FONT face=Tahoma size=2 DESIGNTIMESP=25145>Декодирование элементов MIME заголовков </FONT></P> <P DESIGNTIMESP=25146><FONT face=Tahoma size=2 DESIGNTIMESP=25147>array imap_header_decode (string text) </FONT></P> <P DESIGNTIMESP=25148><FONT face=Tahoma size=2 DESIGNTIMESP=25149>Функция декодирует расширенные заголовки, посланные не в тексте ASCII (см. RFC2047). Декодированные элементы возвращаются в массиве объектов, каждый из которых содержит пару "charset" и "text" (кодировка и содержимое текста). Если заголовки не были закодированы (то есть они передавались в кодировке US-ASCII), значение элемента "charset" будет равно "default". </FONT></P> <P class=list DESIGNTIMESP=25150><FONT face=Tahoma size=2 DESIGNTIMESP=25151>$teAt="*?ISO-8859-l?Q?Keld_&gt;<br designtimesp=25152>r8rn_Simoisen?= &lt;kpldG&gt;dkuug.dk&gt;";<br designtimesp=25153>print._r( тлар irnme_heacier_decode<br designtimesp=25154>($text 0 </FONT></P> <P DESIGNTIMESP=25155><FONT face=Tahoma size=2 DESIGNTIMESP=25156>Выводит следующее: </FONT></P> <P class=list DESIGNTIMESP=25157><FONT face=Tahoma size=2 DESIGNTIMESP=25158>Arrayt <br designtimesp=25159>[0] -&gt; stdClass Object ( <br designtimesp=25160>[charset] =&gt; ISO-8859-1<br designtimesp=25161>[text] =&gt; Keld Juirn Slmonsen )<br designtimesp=25162>[1] -&gt; stdClass Object ( <br designtimesp=25163>[charset] =&gt; default [text] «&gt;<br designtimesp=25164>&lt;keld@dkuug.dk&gt; ) ) </FONT></P> <P class=Text_Bold DESIGNTIMESP=25165><FONT face=Tahoma size=2 DESIGNTIMESP=25166>imap_mail_compose </FONT></P> <P DESIGNTIMESP=25167><FONT face=Tahoma size=2 DESIGNTIMESP=25168>Создание сообщения MIME по шаблону </FONT></P> <P DESIGNTIMESP=25169><FONT face=Tahoma size=2 DESIGNTIMESP=25170>string imapjrtan_compose (array envelope, array body)</FONT></P> <P class=list DESIGNTIMESP=25171><FONT face=Tahoma size=2 DESIGNTIMESP=25172>&lt;?php <br designtimesp=25173>$envelope["from"]="musore<br designtimesp=25174>@afterfive com". $envelope["to"]="<br designtimesp=25175>musone@darkstar"; $envelope["cc"]<br designtimesp=25176>="musone@edgeglobal.com". <br designtimesp=25177>$partlC"type"&gt;TYP0WLTIPART; <br designtimesp=25178>$partl["siibtype"]="mixed"; <br designtimesp=25179>$flleneroe-'/tmp/lroap c.gz";<br designtimesp=25180>$fp=fopen($filename."r").<br designtimesp=25181>$contents=fread&lt;$fp.filesize($filename)):<br designtimesp=25182>fc!ose($fp): <br designtimesp=25183>$part2["type']=TYPEAPPLICATION.<br designtimesp=25184>$part2["encoding"]=ENCBIMARY: <br designtimesp=25185>$part?["subtype"&gt;"octet-stream". <br designtimesp=25186>$part?["descnption"]=basename<br designtimesp=25187>($filename); $part2["contents.data"]=<br designtimesp=25188>$contents; <br designtimesp=25189>$part3["type"&gt;TYP&#163;TEXT. <br designtimesp=25190>$part3["subtype"]="plain". <br designtimesp=25191>$part3[ "descn pt i on" ]="descri pt i on3"; <br designtimesp=25192>$part3["contents.data ']="contents<br designtimesp=25193>.data3\n\n\n\t"; <br designtimesp=25194>$body[l]=$partl: $body<br designtimesp=25195>[2]=$part2. $body[3]=$part3: <br designtimesp=25196>echo nl2br(imap_mail_compose<br designtimesp=25197>($envelope.$body)): ?&gt; </FONT></P> <P class=Text_Bold DESIGNTIMESP=25198><FONT face=Tahoma size=2 DESIGNTIMESP=25199>imap_append </FONT></P> <P DESIGNTIMESP=25200><FONT face=Tahoma size=2 DESIGNTIMESP=25201>Создание сообщения в ящике </FONT></P> <P DESIGNTIMESP=25202><FONT face=Tahoma size=2 DESIGNTIMESP=25203>int imap_append (Int imap_stream, string mbox, string message [, string flags]) </FONT></P> <P DESIGNTIMESP=25204><FONT face=Tahoma size=2 DESIGNTIMESP=25205>Возвращает TRUE или FALSE — при ошибке. </FONT></P> <P DESIGNTIMESP=25206><FONT face=Tahoma size=2 DESIGNTIMESP=25207>В аргументе message содержится текст сообщения, включая текст заголовка. Для многих серверов необходимо обозначать конец строк парой символов «\r\n». </FONT></P> <P DESIGNTIMESP=25208><FONT face=Tahoma size=2 DESIGNTIMESP=25209>В аргументе flags можно указать флаги, присваиваемые сообщению. , </FONT></P> <P class=list DESIGNTIMESP=25210><FONT face=Tahoma size=2 DESIGNTIMESP=25211>$stream = imap_open("(<br designtimesp=25212>your imap.host}INBOX.Drafts"."username". <br designtimesp=25213>"password"): / <br designtimesp=25214>[ $check = imap_check($stream); <br designtimesp=25215>print "Сообщений было: " $check-&gt;<br designtimesp=25216>Nmsgs "\n"; <br designtimesp=25217>imap_append($stream."<br designtimesp=25218>{your.imap.host}INBOX.Drafts" .<br designtimesp=25219>"From- me@my.host\r\n" <br designtimesp=25220>"To: you@your.host\r\n" <br designtimesp=25221>Subject: test\r\n" "\r\n" <br designtimesp=25222>."this TS a test message, please <br designtimesp=25223>ignore\r\n". "\\Flagged \\Draft"): <br designtimesp=25224>$check = imap_check($stream): ' print<br designtimesp=25225>"Сообщений стало: ". $check-&gt;<br designtimesp=25226>Nmsgs "\n"; imap_close<br designtimesp=25227>($stream).</FONT></P> <P class=Text_Bold DESIGNTIMESP=25228><FONT face=Tahoma size=2 DESIGNTIMESP=25229>imap_ mail </FONT></P> <P DESIGNTIMESP=25230><FONT face=Tahoma size=2 DESIGNTIMESP=25231>Посылка email </FONT></P> <P DESIGNTIMESP=25232><FONT face=Tahoma size=2 DESIGNTIMESP=25233>string imapjnail (string to, string subject, string message [, string additionaljieaders [, string cc [, string bcc [, string rpath&gt;) </FONT></P> <P DESIGNTIMESP=25234><FONT face=Tahoma size=2 DESIGNTIMESP=25235>Функция пока доступна только в PHP 3. </FONT></P> <P class=Title_3 DESIGNTIMESP=25236><FONT face=Tahoma size=2 DESIGNTIMESP=25237>Вспомогательные функции </FONT></P> <P class=Text_Bold DESIGNTIMESP=25238><FONT face=Tahoma size=2 DESIGNTIMESP=25239>imap_last_error </FONT></P> <P DESIGNTIMESP=25240><FONT face=Tahoma size=2 DESIGNTIMESP=25241>Получение описания последней ошибки </FONT></P> <P DESIGNTIMESP=25242><FONT face=Tahoma size=2 DESIGNTIMESP=25243>string imap_last_error (void) </FONT></P> <P DESIGNTIMESP=25244><FONT face=Tahoma size=2 DESIGNTIMESP=25245>Возвращается строка, содержащая полное описание ошибки ШАР (если она имелась), произошедшей в ходе исполнения сценария. Стек сообщений не изменяется, и повторный вызов функции возвратит то же значение (если других ошибок не произошло). </FONT></P> <P class=Text_Bold DESIGNTIMESP=25246><FONT face=Tahoma size=2 DESIGNTIMESP=25247>imap_errors </FONT></P> <P DESIGNTIMESP=25248><FONT face=Tahoma size=2 DESIGNTIMESP=25249>Получение всех возникших ошибок array imap_errors (void) </FONT></P> <P DESIGNTIMESP=25250><FONT face=Tahoma size=2 DESIGNTIMESP=25251>В массиве возвращаются строки описания ошибок ШАР, произоше/ тих от начала подключения или с момента последнего вызова дан ной функции. Вызов функции полностью очищает стек ошибок. </FONT></P> <P class=Text_Bold DESIGNTIMESP=25252><FONT face=Tahoma size=2 DESIGNTIMESP=25253>imap_qprint </FONT></P> <P DESIGNTIMESP=25254><FONT face=Tahoma size=2 DESIGNTIMESP=25255>Конвертация строки quoted-printable в 8-bit string imap_qprint (string string.j Способ конвертации описан в RFC2045, раздел 6.7. / Возвращает двоичную, 8-битную строку. </FONT></P> <P DESIGNTIMESP=25256><FONT face=Tahoma size=2 DESIGNTIMESP=25257>См. также imap_8bit(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=25258><FONT face=Tahoma size=2 DESIGNTIMESP=25259>imap_8bit </FONT></P> <P DESIGNTIMESP=25260><FONT face=Tahoma size=2 DESIGNTIMESP=25261>Конвертация строки 8bit в quoted-printable </FONT></P> <P DESIGNTIMESP=25262><FONT face=Tahoma size=2 DESIGNTIMESP=25263>string imap_8bit (string string) </FONT></P> <P DESIGNTIMESP=25264><FONT face=Tahoma size=2 DESIGNTIMESP=25265>Способ конвертации описан в RFC2045. </FONT></P> <P DESIGNTIMESP=25266><FONT face=Tahoma size=2 DESIGNTIMESP=25267>Возвращает строку, «цитированную для печати». </FONT></P> <P class=list DESIGNTIMESP=25268><FONT face=Tahoma size=2 DESIGNTIMESP=25269>print imap_8bit("The Привет"),<br designtimesp=25270>// напечатает. The &lt;F=FO=E8=E2=E5=F2</FONT></P> <P DESIGNTIMESP=25271><FONT face=Tahoma size=2 DESIGNTIMESP=25272>См. также imap_qprint(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=25273><FONT face=Tahoma size=2 DESIGNTIMESP=25274>imap_ binary </FONT></P> <P DESIGNTIMESP=25275><FONT face=Tahoma size=2 DESIGNTIMESP=25276>Конвертация строки 8bit в base64 </FONT></P> <P DESIGNTIMESP=25277><FONT face=Tahoma size=2 DESIGNTIMESP=25278>string imapjjinary (string string) </FONT></P> <P DESIGNTIMESP=25279><FONT face=Tahoma size=2 DESIGNTIMESP=25280>Процедура конвертации описана в RFC2045. </FONT></P> <P DESIGNTIMESP=25281><FONT face=Tahoma size=2 DESIGNTIMESP=25282>Возвращает строку в формате base64. </FONT></P> <P class=list DESIGNTIMESP=25283><FONT face=Tahoma size=2 DESIGNTIMESP=25284>print imap_tnnary("The Привет");<br designtimesp=25285>// напечатает: VGhlIM/w60L18g==</FONT></P> <P DESIGNTIMESP=25286><FONT face=Tahoma size=2 DESIGNTIMESP=25287>См. также imap_base64(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=25288><FONT face=Tahoma size=2 DESIGNTIMESP=25289>imap_base64 </FONT></P> <P DESIGNTIMESP=25290><FONT face=Tahoma size=2 DESIGNTIMESP=25291>Декодирование BASE64 </FONT></P> <P DESIGNTIMESP=25292><FONT face=Tahoma size=2 DESIGNTIMESP=25293>string imap_base64 (string text) </FONT></P> <P DESIGNTIMESP=25294><FONT face=Tahoma size=2 DESIGNTIMESP=25295>Процедура конвертирования описана в RFC2045. </FONT></P> <P DESIGNTIMESP=25296><FONT face=Tahoma size=2 DESIGNTIMESP=25297>См. также imap_binary(). </FONT></P> <P class=Text_Bold DESIGNTIMESP=25298><FONT face=Tahoma size=2 DESIGNTIMESP=25299>imap_rfc822_write_address </FONT></P> <P DESIGNTIMESP=25300><FONT face=Tahoma size=2 DESIGNTIMESP=25301>Форматирование строки адреса </FONT></P> <P DESIGNTIMESP=25302><FONT face=Tahoma size=2 DESIGNTIMESP=25303>string imap_rfc822_write_address (string mailbox, string host, string personal) </FONT></P> <P DESIGNTIMESP=25304><FONT face=Tahoma size=2 DESIGNTIMESP=25305>Возвращает строку адреса электронной почты, сформированную из заданных значений согласно правилам, указанным в RFC822. </FONT></P> <P class=list DESIGNTIMESP=25306><FONT face=Tahoma size=2 DESIGNTIMESP=25307>print imap_rfc822_write_address<br designtimesp=25308>("ig"."php net"."Igor Ghgin");<br designtimesp=25309>// выведет. Igor Grigin &lt;ig@php.net&gt; </FONT></P> <P class=Text_Bold DESIGNTIMESP=25310><FONT face=Tahoma size=2 DESIGNTIMESP=25311>imap_rfc822_parse_adrlist </FONT></P> <P DESIGNTIMESP=25312><FONT face=Tahoma size=2 DESIGNTIMESP=25313>Интерпретация адреса</FONT></P> <P DESIGNTIMESP=25314><FONT face=Tahoma size=2 DESIGNTIMESP=25315>array imap_rfc822_parse_adrlist (string address, string default_host) </FONT></P> <P DESIGNTIMESP=25316><FONT face=Tahoma size=2 DESIGNTIMESP=25317>Исходная строка с перечислением почтовых адресов, записанных в формате RFC822, указывается в аргументе address. Аргумент содержит имя хоста, добавляемое к адресу, если в нем таковое отсутствует. </FONT></P> <P DESIGNTIMESP=25318><FONT face=Tahoma size=2 DESIGNTIMESP=25319>Возвращается массив объектов, каждый из которых может иметь следующие свойства: </FONT></P> <ul designtimesp=25320> <li designtimesp=25321><FONT face=Tahoma size=2 DESIGNTIMESP=25322>mailbox — имя ящика (usernamc); </FONT> <li designtimesp=25323><FONT face=Tahoma size=2 DESIGNTIMESP=25324>host — имя хоста; </FONT> <li designtimesp=25325><FONT face=Tahoma size=2 DESIGNTIMESP=25326>personal — личное имя; </FONT> <li designtimesp=25327><FONT face=Tahoma size=2 DESIGNTIMESP=25328>adl — доменный разделитель. </FONT></LI></UL> <P class=list DESIGNTIMESP=25329><FONT face=Tahoma size=2 DESIGNTIMESP=25330>$address_stnng = "Igor Grigin <br designtimesp=25331>&lt;ig@my.domain.net&gt;,postmaster<br designtimesp=25332>@somedomain net. root";<br designtimesp=25333>$address_array = imap_rfc822_parse_ac!rlist<br designtimesp=25334>($address_string."our net"). <br designtimesp=25335>if(! is_array($address_array)) <br designtimesp=25336>dieC'somethings wrong\n"):<br designtimesp=25337>print_r($address_array); </FONT></P> <P DESIGNTIMESP=25338><FONT face=Tahoma size=2 DESIGNTIMESP=25339>Будет выведено следующее: </FONT></P> <P class=list DESIGNTIMESP=25340><FONT face=Tahoma size=2 DESIGNTIMESP=25341>Arrayt [0] =&gt; stdClass Object <br designtimesp=25342>( [mailbox] =&gt; ig [host] =&gt;<br designtimesp=25343>my domann.net [personal] =&gt;<br designtimesp=25344>Igor Origin ) [1] =&gt; stdClass Object <br designtimesp=25345>( [mailbox] =&gt; postmaster [host]<br designtimesp=25346>=&gt; somedomain.net ) <br designtimesp=25347>[2] =&gt; stdClass Object ( [mailbox]<br designtimesp=25348>=&gt; root [host] =&gt; our net ) ) <br designtimesp=25349>imap_rfc822 parse headers <br designtimesp=25350>Интерпретация заголовков<br designtimesp=25351>из строки object <br designtimesp=25352>imap_rfc822_parse_headers <br designtimesp=25353>(string headers [, string defaulthost]) </FONT></P> <P DESIGNTIMESP=25354><FONT face=Tahoma size=2 DESIGNTIMESP=25355>Функция сходна с imap_header(), но информацию она получает не с сервера ШАР, а из строки headers.imap_utf7_decode </FONT></P> <P DESIGNTIMESP=25356><FONT face=Tahoma size=2 DESIGNTIMESP=25357>Декодирование строки UTF-7 </FONT></P> <P class=Text_Bold DESIGNTIMESP=25358><FONT face=Tahoma size=2 DESIGNTIMESP=25359>string imap_utf7_decode (string text) </FONT></P> <P DESIGNTIMESP=25360><FONT face=Tahoma size=2 DESIGNTIMESP=25361>Возвращает оригинальную строку или FALSE — в случае ошибки. Эта кодировка часто используется для адресов почтовых ящиков, содержа-! щих национальные символы (например, символы кириллицы). Функ-/ ция использует модифицированный алгоритм, описанный в RFC2060, раздел 5.1.3 (устаревший алгоритм» был описан в RFC1642). </FONT></P> <P class=Text_Bold DESIGNTIMESP=25362><FONT face=Tahoma size=2 DESIGNTIMESP=25363>imap_utf7_encode </FONT></P> <P DESIGNTIMESP=25364><FONT face=Tahoma size=2 DESIGNTIMESP=25365>Кодирование строки 8bit в UTF-7 </FONT></P> <P DESIGNTIMESP=25366><FONT face=Tahoma size=2 DESIGNTIMESP=25367>string imap_utf7_encode (string data) </FONT></P> <P class=Text_Bold DESIGNTIMESP=25368><FONT face=Tahoma size=2 DESIGNTIMESP=25369>imap_utf8 </FONT></P> <P DESIGNTIMESP=25370><FONT face=Tahoma size=2 DESIGNTIMESP=25371>Конвертация текста в UTF8 </FONT></P> <P DESIGNTIMESP=25372><FONT face=Tahoma size=2 DESIGNTIMESP=25373>string imap_utf8 (string text) Конвертация описана в RFC2044. </FONT></P> </td> </tr> </table> </body>


Управляющие функции

  • Файл конфигурации php.ini
  • Загружаемые модули PHP (extensions)
  • Параметры и информация РНР
  • Управление исполнением сценария РНР
  • Отслеживание и обработка ошибок
  • Управление выводом
  • Использование интерфейса HTTP
  • Сессии
  • Загрузка файлов на сервер методом HTTP POST
  • Запуск внешних приложений
  • Поддержка СОМ для Windows
  • Функции POSIX
  • Функции сервера Apache
  • Клиентский модуль Satellite CORBA
  • Разделяемая память

Файл конфигурации php.ini

В комплекте поставки этот файл называется php.ini-dist, при ручной установке его необходимо переименовать в php.ini и разместить в каталоге но умолчанию. Обычно РНР ищет этот файл в текущем каталоге (например, там, где находится сам интерпретатор). Также этот файл может распо.чагаться в системном каталоге (это свойственно Windows). При запуске интерпретатора из командной строки с параметром -с можно указать иной путь. Кроме того, путь можно задать и переменной окружения PHPRC.

Файл конфигурации PHP ISAPI модуля загружается однажды, при запуске web-сервера; а для CGI-верспи — при каждом запуске. Начальные параметры конфигурации php.ini-dist соответствуют параметрам компиляции по умолчанию. Для сервера Apache некоторые параметры РНР можно также указать в файлах конфигурации web-сервера и файлах .htaccess (в виде php_value name value, где name — название параметра РНР, a value — ее значение).

Параметры для загружаемых модулей помечаются их названиями, коюрые заключены в квадратные скобки. Эти названия в скобках (пока) игнорируются. После символа «точка с занятой» указываются комментарии.

Значения параметров указываются в виде: директива = значение. Регистр учитывается. Значением может быть: < /FONT >

  • строка;
  • число:
  • РНР константа (например: E_ALL, М_Р!);
  • одна из INI констант (On, Off, True, False Yes, No, None);
  • выражение (например: E_ALL & -E_NOTICE);
  • строка в кавычках (например: "Строка").

В выражениях можно указывать группирующие круглые скобки, битовые операторы: | (ИЛИ), & (И), - (НЕ) и логический оператор: ! (НЕ). Если требуется использовать константы РНР, определяемые

загружаемыми библиотеками, то их можно использовать только после строки, загружающей соответствующий модуль. Для установки логических параметров можно использовать значения 1, On, True, Yes; а для их сброса — 0, Off. False, No. Пустая строка может быть обозначена простым неуказанием значения после знака равенства или значением None. Узнать текущие параметры конфигурации можно функциями phpinfoO, get cfg var() и т. п.

Общие параметры

anow_call_time_pass_reference = On < /FONT >

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

;arg_separator.output = "&агар;" < /FONT >

Разделитель аргументов, используемый в URL, генерируемых РНР. По умолчанию: «&>> в представлении HTML (параметр добавлен в РНР 4.0.5).

;arg_separator.input = ";&" < /FONT >

Перечисляет разделители, используемые РНР для разделения аргументов в строке URL и последующего занесения в переменные. Каждый символ указанной строки считается разделителем (параметр добавлен в РПР 4.0.5).

aTlow_url_fopen = On < /FONT >

Разрешает указание адресов URL в функциях открытия файлов (потоков). По умолчанию возможно использование удаленных файлов ftp и http; некоторые дополнительные модули могут расширять возможности, например, модуль zlib позволяет открывать сжатые файлы.

asp_tags = Off < /FONT >

Разрешает использование ASP-подобных тегов <% и %> в дополнение к основным <?рпр и ?>. Это также позволяет выводить значение переменных методом ASP: <%- %value %>.

auto_append_filе = string < /FONT >

Указывается имя файла, текст которого автоматически добавляется перед началом каждого интерпретируемого файла (как если бы его подключали директивой include(); путь include_path также используется). Может использоваться для отслеживания посещений, инициализации переменных основного сценария или простого добавления «верхушек» страниц. Но если сценарий завершается функцией exit(), добавление не производится.

auto_arepend_file = string < /FONT >

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

cgi_ext = string < /FONT >

Параметр пока не определен, defaultjnimetype = "text/html" ;default_charset = "iso-8859-1" < /FONT >

Строки mimetype и charset, посылаемые в http заголовке каждой страницы, генерируемой РНР. Можно явно проверить, какой заголовок выводится РНР, запустив сценарий из командной строки, не указывая параметр -q. Полезно для указания charset-a кириллицы (например: «windows-1251»).

display_errors = On < /FONT >

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

display_startup_errors = Off < /FONT >

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

;doc_root = string < /FONT >

Указывает корневой каталог РНР на сервере. При указании с параметром safejnode = On сценарии в других каталогах не запускают ся. < /FONT >

engine = On < /FONT >

Параметр полезен только для PHP-модуля сервера Apache. Он позволяет разрешить (или запретить) интерпретацию сценариев РНР в определенных web-каталогах или на отдельных виртуальных web-серверах. Обычно эта директива указывается в соответствующем разделе файла httpd.conf.

;error_log = string < /FONT >

Имя файла, в который заносятся сообщения об ошибках. При указании специального значения syslog сообщения направляются в журнал системных событий (в UNIX это syslog(3), а в Windows NT это Event Log; Windows 95 параметр не поддерживает).

error_reporting = E_ALL &-E_NOTICE < /FONT >

Устанавливает битовую маску ошибок, о которых сообщается во время исполнения. По умолчанию выдаются все сообщения, кроме простых. Возможны разнообразные комбинации. Константы и значения приводятся в главе «Обработка ошибок».

;error_prepend_string = "<font color = ffOOOO>" < /FONT>

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

;error_append_string = "</font>" < /FONT >

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

expose_php = On < /FONT >

Разрешает включать в http-заголовки упоминание о том, что РНР установлен на сервере.

file_uploade = On < /FONT >

Разрешает пли запрещает поддержку HТТР-загрузки файлов на сервер.

gpc_order = "GPS" < /FONT >

Параметр устарел и заменен параметром variabдes_order.

ignore_user_abort = On

Запрещает завершать сценарий при разрыве подключения.

См. функцию ignore_user_abort().

inplicit_flush = Off < /FONT >

Эквивалент вызова функции ob_implicit_f"lush(). Установка этого параметра сильно снижает быстродействие и используется в основном при отладке.

include_path = string < /FONT >

Указывает перечисление каталогов, в которых ищутся файлы, подключаемые с помощью requireO, include() и fopen_with_path(). Формат аналогичен используемому в системной переменной окружения PATH: для UNIX разделитель — это двоеточие, для Windows — точка с запятой.

В UNIX: include j33th= .:/home/httpd/php-lib.< /FONT>

В Windows: include_path= ".;c:\www\phplib". < /FONT>

Значение по умолчанию — только текущий каталог.

isapi_ext = string < /FONT >

Параметр пока не определен.

log_errors = Off < /FONT >

Определяет, помещать ли сообщения об ошибках в журнал событий web-сервера. Зависит от вида сервера.

magic_quotes_gpc = On < /FONT >

Разрешает при регистрации глобальных переменных из внешних значений (Get/Post/Cookie) модифицировать получаемые строки, а именно добавлять обратный слеш перед каждым символом: одинарной или двойной кавычки, обратного слеша «\» и нулевого символа \0. Если также разрешен параметр magic_quotes_sybase, то одинарные кавычки удваиваются вместо предварения слешем.

magic_quotes_runtime = Off < /FONT >

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

magic_quotes_sybase = Off < /FONT >

Если этот параметр разрешен совместно с magic_quotes_gpc (или magic_quotes_runtime), то одинарные кавычки удваиваются вместо предварения слешем.

max_execution_time = 30 < /FONT >

Устанавливает максимально допустимое время исполнения сценария (тайм-аут) в секундах. При превышении этого времени сценарий будет прерван.

memory_limit = 8М

Устанавливает максимальный объем памяти, который может быть выделен одному сценарию (8 Мбайт). Это предотвращает поглощение большого объема памяти сервера неоптимизированными сценариями.

nsapi_ext = string < /FONT >

Параметр пока не определен.

open_basedir = string < /FONT >

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

файла (например, функциями fopen() или gzopen()) местоположение файла проверяется и он открывается, только если обнаруживается в каталоге из указанного списка. Специальное значение «точка» означает текущий каталог, в котором находится сценарий.

В Windows разделителем списка каталогов служит точка с запятой, в других системах — двоеточие. При запуске РНР как модуля Apache пути наследуются от корневого web-каталога.

output_buffering = Off < /FONT >

Разрешает или запрещает буферизацию выводимого текста. Разрешение этого параметра позволяет посылать HTTP-заголовки (или cookie) из любого места сценария, но снижает быстродействие. Возможно разрешение буферизации во время исполнения.

output_handler = string < /FONT >

Определяет функцию, которая будет использоваться для вывода. Таким образом можно, например, перенаправлять весь выводимый текст в log-файл. При указании в качестве такой функции "ob_gzhandler" весь выводимый текст будет неявно сжиматься перед посылкой браузеру методом gzip или deflate (обычно браузеры способны автоматически декомпрессировать такие данные). Установка этого параметра автоматически разрешает параметр output_ buffering.

precision = 14 < /FONT >

Число значащих цифр, выводимое в дробных числах.

register_globals = On

Разрешает регистрировать внешние переменные (в порядке, указанном параметром variables_order) в качестве глобальных переменных сценария. Рекомендуется, по соображениям безопасности, отключить этот параметр и осуществлять доступ к внешним переменным (для этого должен быть разрешен параметр track_vars) через соответствующие ассоциативные массивы: SHTTP_ENV_VARS, $HTTP_GET_VARS, $HTTP_POST_VARS, SHTTP_COOKIE_VARS, $HTTP_SERVER_VARS.

post_max_size = 8M < /FONT >

Устанавливает максимальный объем файла (8 Мбайт), который может быть передан на сервер методом POST.

register_argc_argv = On < /FONT >

Разрешает регистрацию переменных argv и агдс, содержащих параметры запуска из командной строки или параметры строки запроса методом GET. Если эти переменные не используются, отключите параметр для повышения быстродействия.

short_open_tag = On < /FONT >

Разрешает использовать короткую форму записи тегов-ограничителей РНР: <? и ?>. Если необходима последующая совместимость РНР с XML, этот параметр следует заблокировать, и тогда будет разрешено использовать только теги <?php и ?>.

track_errors = Off < /FONT >

Сохраняет последнее сообщение об ошибке в переменной $php_ errormsg.

track_vars = On < /FONT >

Разрешает сохранять внешние переменные (Environment, GET, POST, Cookie, Server) в ассоциативных массивах: $HTTP_ENV_ VARS, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_ COOKIE_ VARS и $HTTP_SERVER_VARS.

В РНР 4.0.3 этот параметр разрешен всегда.

;upload_tmp_dir = string [ < /FONT >

Устанавливает каталог временных файлов, загружаемых на сервер методом HTTP upload. Этот каталог должен быть доступен для записи как открытый (public). По умолчанию используется системный: TEMP или ТМР.

upload_max_filesize = 2М < /FONT >

Устанавливает максимально допустимый размер файлов, загружаемых на сервер методом HTTP upload.

user_dir = string < /FONT >

Устанавливает имя корневого каталога пользователей, в котором РНР открывает файлы формата user-name, например: publicjitml.

variables_order = "EGPCS"; иногда указывается "GPC" < /FONT >

Указывает порядок инициализации переменных сценария РНР. Порядок указывается заглавными символами, являющимися сокращениями для соответственно переменных окружения (Environment), переменных, полученных методами GET и POST, затем Cookie, и собственно внутренних переменных РНР (Server Built-in). Инициализация происходит в порядке слева направо, и старые значения заменяются одноименными новыми. Ранее имя этого параметра было gpc_order.

warn_plus_overloading = Off

Выводит предупреждение, если оператор плюс (+) используется в качестве оператора конкатенации строк (вместо оператора «точка»). Полезно для отладки.

y2k_compliance = Off < /FONT >

Разрешает или запрещает поддержку совместимости с браузерами, не способными разрешить проблему 2000 года.

zlib.output_compression = Off < /FONT >

Неявно сжимает весь выводимый текст, посылаемый браузеру, используя библиотеку zlib. Допустимые значения: off, on или размер буфера, используемый для сжатия (по умолчанию 4 Кбайт)

Цветовыделение

Следующие параметры определяют цвета, которыми выделяется синтаксис РНР при использовании функции highlight_file() и подобных ей. Допустимы любые значения цвета, распознаваемые в теге <font color= ???>.< /FONT>

highlight.string = #DDOOOO для строк (красный)
highlight.comment = #FF8000 для комментариев (оранжевый)
highlight.keyword = #007700 для зарезервированных слов (зеленый)
highlight.bg = #FFFFFF цвет фона (белый)
highlight.default = #ООООВВ для обычного кода РНР (синий)
highlight.html = #000000 для обычного текста, не кода (черный) < /FONT >

Безопасный режим

safejnode = Off < /FONT >

Разрешает безопасный режим РНР.

safejnode_exec_dir = string

При исполнении РНР в безопасном режиме функции, запускающие внешние приложения (например: systemO), будут запускать только те из них, которые размещены в указанном каталоге.

safe-mOde_allowed_env_vars = РНР_

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

safe_mode protected env vars = LD LIBRARY PATH< /FONT >

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

disable_functions = string < /FONT >

Блокирует запуск перечисленных через запятую функций. Не зависит от разрешения безопасного режима.

sql. safejnode = Off < /FONT >

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

Mail

[mail function]

SMTP = local host/ < /FONT >

Только для Windows: путь DNS или IP-адрес сервера SMTP, используемого PHP для отправки почты функцией mail ().

sendmail_from = me@localhost.com < /FONT >

Только для Windows: обратный адрес отправителя почты (поле From:) по умолчанию.

;sendmail_path = 'sendmail -t < /FONT >

Только для Unix. Почтовая программа, используемая для отсылки писем. В этой строке можно указать полный путь, а также параметры запуска. Обычные варианты в Unix: usr/sbin/sendmail, /usr/1ib/sendmail, /var/qmai1/bin/sendmail.

Отладчик

[Syslog]

define_syslog_variables = Off < /FONT >

Определяет переменные syslog (например, $LOG_PID, $LOG_CRON и т. д.). Обычно параметр блокируется для повышения быстродействия. Во время исполнения можно воспользоваться функцией define_ syslog_variables().

[Logging]

:logging.method = db < /FONT >

;logging.directory = /path/to/log/directory< /FONT >

Параметры в стадии разработки.

[Debugger]

debugger.host = local host < /FONT >

Строка DNS или IP-адрес хоста отладчика,

debugger.port = 7869

Порт, используемый хостом отладчика,

debugger.enabled = False

Разрешает или запрещает отладку.

[Assertion]

:assert.active = On < /FONT >

Разрешает использование Assert(expr).

;assert.warning = On

Разрешает или запрещает выдачу предупреждения PHP для каждои ошибки в assert().

;assert.bail = Off < /FONT >

Устанавливает, считать ли значение False в assert() ошибкой.

;assert.call back = О < /FONT >

Вызывает указанную функцию для отладки.

:assert.quiet_eval = 0

Обрабатывает ошибки, содержащиеся в eval(), согласно установкам в error_reporting(). Установка значения этого параметра TRUE и последующий вызов error_reporting(0) будут игнорировать эти ошибки.

Прочие настройки модулей

[bcmath]

bcmath.scale = О < /FONT >

Число десятичных цифр для функций bcmath. [browscap]

;browscap = extra/browscap.ini < /FONT >

Имя файла browscap.ini (browser capabilities).

См. также get browser(). [Java]

;Java.class.path = .\php Java.jar ;< /FONT >

Java.home = c:\jdk

;Java.library = c:\jdk\jre\bin\hotspot\jvm.dll < /FONT >

java.library.path

[Verisign Payflow Pro]

pfpro.defaulthost = "test.signio.com" < /FONT >

Сервер Signio по умолчанию

, pfpro.defaultport = 443 < /FONT >

Номер порта подключения к серверу

pfpro.defauHtimeout = 30

Максимальное время ожидания ответа в секундах,

ipfpro.proxyaddress = < /FONT >

IP-адрес прокси сервера, если требуется.

;pfpro.proxyport =

Номер порта прокси-сервера.

;pfpro.proxy!ogon = < /FONT >

. Логин прокси-сервера, по умолчанию.

;pfpro.proxypassword = < /FONT >

Пароль-прокси сервера, по умолчанию.

[Sockets]

sockets.use_system_read = On < /FONT >

Разрешает использовать системную функцию чтения read() вместо функции PHP php_read().

[com]

: com. type! ib_file = < /FONT >

Путь к файлу, содержащему значения GUID, IID, или файлу типа Type Lib. ;com.aTlow_dcom = TRUE < /FONT >

Разрешает вызовы «распределенного» COM (DCOM).

Настройки модулей баз данных

[ODBC]

uodbc.default_db = string < /FONT >

Источник данных ODBC по умолчанию для функций odbc_connect() и odbc_pconnect(). Параметр еще не реализован.

uodbc.default_user = string < /FONT >

Имя пользователя по умолчанию для функций odbc_connect() и odbc_pconnect(). Параметр еще не реализован.

uodbc.default_pw = string < /FONT >

Пароль пользователя по умолчанию для функций odbc_connect() и odbc_pconnect(). Параметр еще не реализован.

odbc.allow_persistent = On < /FONT >

Допускает или запрещает устойчивые ODBC-подключения.

odbc.check_persistent = On

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

uodbc.max_persistent = -1 < /FONT >

Максимальное число устойчивых подключений ODBC на один процесс (значение -1 означает отсутствие ограничений).

uodbc.maxjinks = -1 < /FONT >

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

I odbc.defaultlrl = 4096 < /FONT >

Обработка полей типа LONG (возвращает число байтов в переменных). О означает метод passthra. См. функцию odbcJongreadlen().

odbc.defaultbinmode = 1 < /FONT >

Способ обработки двоичных данных. О означает метод passthru, 1 — «как есть», 2 — преобразование в текстовые символы.

См. функцию odbc_binmode().

[MySQL]

параметры defaultjiost, default_user, default_password блокируются ; в безопасном режиме, и вообще их не рекомендуется указывать здесь

mysql.defaultjiost = string < /FONT >

Имя хоста по умолчанию, где должен размещаться сервер MySQL

mysql.default_user = string < /FONT >

Имя пользователя по умолчанию для функций подключения

mysql.default_password = string < /FONT >

Пароль пользователя по умолчанию для функций подключения

mysql.default_socket = < /FONT >

Имя сокета для локальных подключений к MySQL

mysql.default_port = < /FONT >

Номер порта по умолчанию. Если параметр не установлен, то используется (по порядку) значение из переменной $MYSQL_TCP_PORT, либо из файла /etc/services, либо из константы компиляции MYSQL_ PORT (в Win32 только из MYSQL_PORT).

mysql.allow_persistent = On < /FONT >

Допускает или не допускает устойчивые подключения к MySQL

mysql.max_persistent = -1 < /FONT >

Максимальное число устойчивых подключений к MySQL на один процесс (значение -1 означает отсутствие ограничений).

mysql.maxjlinks = -1 < /FONT >

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

[mSQL]

msql.al 1ow_persi stent = On < /FONT >

Допускает или не допускает устойчивые подключения к mSQL.

I msql .max_persistent = -1 < /FONT >

Максимальное число устойчивых подключений к mSQL на один \ процесс (значение -1 означает отсутствие ограничений).

msql.maxjlinks = -1 < /FONT >

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

[PostgresSQL]

pgsql.allow_persistent = On < /FONT >

Допускает или не допускает устойчивые подключения к Postgres.

pgsql.max_persistent = -1 < /FONT >

Максимальное число устойчивых подключений к Postgres на один процесс (значение -1 означает отсутствие ограничений).

pgsql .maxjinks = -1 < /FONT >

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

[SESAM]

sesam_oml = string < /FONT >

Имя библиотеки BS2000 PLAM, содержащей загружаемые драйверы SESAM. Требуется для использования функций SESAM. Библиотека BS2000 PLAM должна быть сконфигурирована какACCESS=READ,SHARE= YES.

sesam_configfile = string < /FONT >

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

Обычно этот файл содержит следующие параметры:

CNF=B NAM=KNOTYPE sesamjnessagecatalog= string< /FONT >

Имя файла сообщений SESAM. Обычно не требуется. [Sybase]

Sybase.allow_persistent = On < /FONT >

Допускает или не допускает устойчивые подключения к Sybase.

Sybase.max_persistent = -1 < /FONT >

i Максимальное число устойчивых подключений к Sybase на один \ процесс (значение -1 означает отсутствие ограничений).

Sybase.max_links = -1

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

;Sybase.interface_file = "/usr/sybase/interfaces"< /FONT >

Sybase.min_error_severity = 10 < /FONT >

Пороговый уровень отображаемых ошибок.

Sybase.compatabilityjnode = Off

Разрешает или не разрешает совместимость с версиями РНР 3.0. Если совместимость разрешена, РНР автоматически назначает типы результатов согласно типологии Sybase вместо того, чтобы рассматривать их все как строки. Рекомендуется отключать этот параметр.

[Sybase-CT] sybct.allow_persistent = On < /FONT >

Допускает или не допускает устойчивые подключения к Sybase-CT. sybct.maxjersistent = -1 < /FONT >

Максимальное число устойчивых подключений к Sybase-CT на один процесс (значение -1 означает отсутствие ограничений).

sybct.max_links = -1

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

sybct.min_server_severity = 10 < /FONT >

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

См. функцию sybase_min_server_severity(). sybct.min_client_severity = 10 < /FONT >

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

См. функцию sybase_min_client_severity().

Значение 10 обычно блокирует вывод предупреждений.

sybct.login_timeout = 60 < /FONT >

Максимальное время ожидания подключения в секундах (не забывайте также про параметр max_execution_time).

sybct.timeout = < /FONT >

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

sybct.hostname = string < /FONT >

Имя хоста, с которого производится подключение.

См функцию sp_who().

[Informix] ifx.defaultjiost = string < /FONT >

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

ifx.default_user = string < /FONT >

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

ifx.default_password = string < /FONT >

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

ifx.allow_persistent = On < /FONT >

Допускает или не допускает устойчивые подключения к Informix.

ifx.max_persistent = -1 < /FONT >

Максимальное число устойчивых подключений к Informix на один процесс (значение -1 означает отсутствие ограничений).

ifx.maxjinks = -1 < /FONT >

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

ifx.textasvarchar = О < /FONT >

Возвращает или не возвращает поля TEXT (blob) как нормальные строки (при значении TRUE) в запросах SELECT. Иначе (по умолчанию) необходимо использовать для доступа blob id.

См. также ifx_textasvarchar().

ifx.byteasvarchar = 0 < /FONT >

Возвращает или не возвращает поля BYTE (blob) как нормальные строки (при значении TRUE) в запросах SELECT. Иначе (по умолчанию) необходимо использовать для доступа blob id.

См. также ifx_textasvarchar().

ifx.charasvarchar = О < /FONT >

S1 Удаляет или не удаляет пробелы в конце строк нолей CHAR (fixed-length).

ifx.blobinfile = О < /FONT >

Фактически установка этого параметра (TRUE) принуждает сохранять значения не в памяти, а в файле.

См. также ifx_blobinfile_mode().

ifx.null format = 0 < /FONT >

Возвращает поля NULL как строку "NULL" (при значении TRUE) или же как пустую строку "" (по умолчанию).

См. также ifx_nuTl format().

[MSSQL] mssql.allow_persistent = On < /FONT >

Допускает или не допускает устойчивые подключения к MSSQL.

mssql.max_persistent = -1 < /FONT >

Максимальное число устойчивых подключений к MSSQL на один процесс (значение -1 означает отсутствие ограничений).

mssql. maxj inks = -1 < /FONT >

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

mssql.min_error_severity = 10 < /FONT >

Минимальный уровень отображаемых сообщений об ошибках.

mssql .nrin_message_severity = 10 < /FONT >

Минимальный уровень отображаемых сообщений, mssql.compatabilityjnode = Off < /FONT >

Разрешение совместимости с PHP 3.0.

;mssql.textlimit = 4096 < /FONT >

Ограничение длины текстовых строк. Допустимые значения: 0- 2 147 483 647.

;mssql.textsize = 4096

Длина текстовых строк по умолчанию. Допустимые значения: от О до 2 147 483 647.

;mssql.batchsize = 0 < /FONT >

Размер порций (число записей), возвращаемых запросом. О — все записи запроса возвращаются единовременно.

[Ingres II]

Ingres.allow_persistent = On < /FONT >

Допускает или не допускает устойчивые подключения к Ingres II.

Ingres.max_persistent = -1 < /FONT >

Максимальное число устойчивых подключений к Ingres II на один процесс (значение -1 означает отсутствие ограничений).

ingres.maxjinks = -1 < /FONT >

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

Ingres.default_database = < /FONT >

Устанавливает базу данных по умолчанию. Указывается в строке формата: [nodejid: ]dbname[/srv_c"lass].

ingres. defauU_user = < /FONT >

Устанавливает имя пользователя но умолчанию,

ingres.default_password = < /FONT >

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

Параметры сессий

[Session] session.auto_start = 0 < /FONT >

Автоматически инициализирует сессию при запуске сценария ('если не O)

session, savejiandler = files < /FONT >

Функция-обработчик для сохранения/восстановления данных. По умолчанию данные сессии сохраняются в файлах.

session.save_path = /tmp < /FONT >

Аргумент, передаваемый в функцию save_handler. Для файлов, в которых сохраняются данные сессий, это каталог их размещения.

session.use_cookies = 1 < /FONT >

Разрешает использовать cookie

session.name = PHPSESSID

Имя сессии (используется как имя основного cookie, содержащего идентификатор сессии). В имени могут использоваться только алфавитно-цифровые символы.

session.cookie_lifetime = 0 < /FONT >

Время жизни cookie в секундах, при 0 — пока работает браузер

session.cookie_path = < /FONT >

Путь в URL, для которого действителен cookie сессии.

session.cookie_domain = < /FONT >

Домен, для которого действителен cookie.

session.serialize_handler = php

Обработчик сериализации данных, php — стандартный обработчик PHP. Также можно указать wddx.

session.gc_probability = 1 < /FONT >

Процентная вероятность того, что при каждой инициализации сессии будет запускаться процедура «сбора мусора».

session.gcjnaxlifetime = 1440 < /FONT >

Число секунд, по прошествии которых сохраненные данные сессии будут считаться «мусором» и могут быть удалены процессом «сбора мусора».

session.referer_check = < /FONT >

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

session.entropy_length = 0 < /FONT >

Число читаемых из файла байтов.

;session.entropy_file = /dev/urandom < /FONT >

Программа, использующаяся для генерации идентификаторов сессии. Для Unix допустимо использовать /dev/random или /dev/urandom.

;session.entropy_length = 16 < /FONT >

Размер в бантах идентификатора сессий

session.cachejlimiter = nocache < /FONT >

Установка системы кэширования HTTP. Возможные значения: nocache, private, public. Если указывается пустое значение, то клиент использует собственную систему кэширования, заданную в его системе по умолчанию.

session.cache expire = 180 < /FONT >

Время устаревания кэшированных страниц в минутах.

session.use_trans_sid = 1

Использовать автоматическое добавление в ссылки идентификаторов сессии. Для этого РНР должен быть скомпилирован с параметром --enable-trans-sid.

ur"l_rewriter.tags = < /FONT >

"a=href,area=href,frame=src,input= src,form= fakeentry"

Загрузка модулей Extension

enable_dl = On < /FONT >

Эта директива особенно полезна для модуля РНР сервера Apache. С ее помощью можно разрешить загрузку дополнительных модулей для одних виртуальных серверов (или каталогов) и запретить для других. Для модуля РНР сервера IIS этот параметр также автоматически блокируется.

Основная причина блокирования этого параметра — безопасность, так как при разрешении динамической загрузки ограничения safe_ mode и open_basedir исчезают. В безопасном режиме этот параметр автоматически блокируется.

extension_dir = < /FONT >

Каталог, в котором размещаются загружаемые модули РНР. Обычно каталог называется extensions.

extension = extensionfilename < /FONT >

Указание модуля, который должен быть загружен при старте РНР. Рекомендуется указывать имя файла без пути. Например, для Windows: extension=msql.cm, а для UNIX: extension= msql.so.< /FONT>

Загружаемые модули PHP (extensions)

Описание загружаемых модулей приводится для системы Windows. В комплекте РНР, поставляемом для Windows, следующие модули являются уже встроенными (built-in):

  • standard
  • bcmath
  • Calendar
  • com
  • ftp
  • mysql
  • odbc
  • pcre
  • session
  • xml
  • wddx

Следующие модули можно загрузить функцией dl() во время исполнения или раскомментировав соответствующие строки в файле конфигурации (* — файл не входит в комплект поставки РНР). Некоторым модулям требуются дополнительные библиотеки, некоторые из которых входят в комплект поставки и размещаются в каталоге dll (не забудьте переместить их в доступный для системы каталог или указать путь к ним в переменной окружения PATH).

php_bz2.dll php_ctype.dll

php_cpdf.dll php_curl.dll (требует msvcr70.dll*,

sslleay32.dll)

php_cybercash.dll php_db.dll

php_dba.dll php_dbase.dll

php_domxml.dll (требует Iibxml2.dll) php_dotnet.dll

php_exif.dll php_fdf.dll (требует FdfTk.dll)

php_filepro.dll php_gd.dll

php_gettext.dll (требует php_hyperwave.dll

gnu_gettext.dll)

php_iconv.dll php_ifx.dll (требует isqlt09a.dll*)

php_iisfunc.dll php_imap.dll

php_ingres.dll (требует oiapi.dll*) phpjnterbase.dll (требует gds32.dll)

phpjava.dll php_ldap.dll (требует libsasl.dll)

php_mcrypt.dll (требует mcrypL.dll*) php_mhash.dll

php_ming.dll php_mssql.dll (требует

Ntwdblib.dll)

php_oci8.dll (требует oci.dll) php_openssl.dll (требует

msvcr70.dll*, Iibleay32.dll)

php_oracle.dll (требует ociw32.dll*) php_pdf.dll php_pgsql.dll php_printcr.dll

php_sablot.dll (требует sablot.dll) php_snmp.dll

djustright php_sybase_ct.dll php_yaz.dll

(требует libct.dll*)

php_zlib.dll |

Функции модулей

dl

Загрузка библиотеки расширения РНР во время исполнения

int dl (string library)

dl ("extensions/php_db.dll"),

См. также параметр конфигурации extension_dir.

get_loaded_extensions

Определение перечня загруженных модулей

array get_loaded_extensions (void)

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

рrint_r (get_loaded_extensions());

Выводит информацию, подобную следующей:

Array [0] => xml
[1]
      => wddx
[2] => standard
[3] => session
[4] =>
      posix
[5] => pgsql
[6] => рсге
[7] => gd
      [8] => ftp [9] =?
db [10] => Calendar
[11] => bcmath ) < /FONT >

См. также get_extension_funcs().

extension_loaded

Проверка загрузки модуля

boo! extension^oaded (string name)

Возвращает TRUE, если указанный модуль name уже был загружен. Обратите внимание на то, как пишется имя модуля, и на регистр символов.

См. также phpinfo().

get_extension_funcs

Определение функций модуля

array get_extension_funcs (string modulejiame)

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

pnnt_r (get_extension_funcs ("xml")):

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

См. также get_loaded_extensions().

Параметры и информация РНР

phpinfo

Вывод всей информации РНР в формате HTML int phpinfo ([int what])

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

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

  • INFO_GENERAL;
  • INFO_CREDITS;
  • INFO_CONFIGURATION;
  • INFO_MODULES;
  • INFOJNVIRONMENT;
  • INFO_VARIABLES;
  • INFO_LICENSE;
  • INFO_ALL

См. также: phpversion(), phpcredits(), php_logo_guid().

phpversion

Получение версии PHP string phpversion (void)

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

// выводит например. 4.0
5rel-dev' echo phpversion():

См. также: phpinfo(), phpcredits(), php_logo_guid().

phpcredits

HTML-распечатка разработчиков РНР

void phpcredits (int flag)

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

phpcredits(CREDITS_GENERAL):

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

phpcredits(CREDITS_GROUP + CREOITS_DOCS +
CREDITSJULLPAGE).

  • CREDITS_ALL — полный HTML-листинг;
  • CREDITS_DOCS — список разработчиков документации;
  • CREDITS_FULLPAGE — обычно используется в комбинации с другими флагами. Выбирает вариант, подготовленный для распечатки;
  • CREDITSJ3ENERAL - общая разработка языка РНР 4.0 и SAPI;
  • CREDITS_GROUP — список разработчиков ядра;
  • REDITS_MODULES — список модулей расширения и их авторов;
  • CREDITS SAPI — список разработчиков РНР модуля API сервера.

См. также: phpinfo(), phpversion(), php_logo_guid().

php_sapi_name

Получение типа интерфейса между web-сервером и РНР

string php_sapi_name(void);

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

$sapi_type - php_sapi_name().
if ($sapi_type == "cgi")
print "Это CGI PHP\n". else
print "Это не CGI PHP\n":

php_uname

Определение операционной системы string php_uname(void):

Возвращает строку, содержащую название операционной системы, например «Windows NT 5.0 build 2195».

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

ini_set

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

string ini_set (string varname, string newvalue)

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

См. также: ini_alter(), ini_get(), ini_restore().

ini_alter

Синоним функции ini_set

string ini_alter (string varname, string newvalue).

ini_get

Получение значения параметра конфигурации string ini_get (string varname)

Возвращает текущее значение параметра с именем varname. Эта функция позволяет получить все доступные РНР параметры. При ошибке возвращает FALSE.

См. также: ini_alter(), ini_restore(), ini_set().

ini_restore

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

stnng ini_restore (string varname)

Устанавливает значение параметра varname в первоначальное.

echo ini_set("precision". 20).
im_get("precision"), тm_restore("precision"),
im_get("precision");
//
      Обычно выводит 14 20 14

См. также: ini_alter(), ini_get(), ini_set().

get_cfg_var

Определение значения параметра из файла php.ini

string get_cfg_var (string varname)

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

При ошибке возвращает FALSE.

getenv

Получение значения переменной окружения

string getenv (string varname)

При ошибке возвращает FALSE.

$тр = getenv ("REM01E_ADDR");
// ip адрес пользователя

Список переменных окружения выдается функцией phpinfo(). Список этих переменных также определяется спецификацией CGI (http:// hoohoo.ncsa.uiuc.edu/cgi/). Функция не работает в модуле PHP ISAPI.

putenv

Установка переменной окружения

void putenv (string setting)

putenv ("UNIQID=$umqid"). < /FONT>

get_magic_quotes_gpc

Получение текущего значения параметра magic_quotes_gpc.

long getjnagic_quotes_gpc (void)

Возвращается: 0 для Off, 1 для On. См. главу «Файл конфигурации».

См. также: get_magic_quotes_runtime(), set_magic_quotes_runtime().

getjnagic_quotes runtime

Получение текущего значения параметра magic_quotes_runtime

long get_magic_quotes_runtime (void)

Возвращается: 0 для Off, 1 для On. См. главу «Файл конфигурации».

См. также: getjnagic_quotes_gpc(), setjnagic_quotes_runtime().

set_magic_quotes_runtime

Установка текущего значения параметра magic quotes runtime long set_magic_quotes_runtime (int new_setting)

В аргументе new_setting указывается: О для Off, 1 для On. См. главу «Файл конфигурации».

См. также: get_magic_quotes_gpc(), getjnagic_quotes_runtime().

phpjogo_guid

Получение GUID логотипа PHP

string php_logo_guid (void)

Возвращает, например, PHPE9568F34-D428-lld2-A769-OOAA001ACF42.

См. также: phpinfo(), phpversion(), phpcredits()

zend_logo_guid

Получение GUID логотипа Zend string zend_logo_guid (void)

Информация сценария PHP

define

Определение именованной константы

int define (string name, mixed value [, int case_insensitive])

Определение именованной константы сходно с определением переменной, но:

  • константы не имеют знака $ перед своим именем;
  • значения констант доступны в любом месте сценария;
  • константы невозможно переопределить или удалить;
  • константам можно присваивать только скалярные значения.

Имя определяемой константы указывается в аргументе name, а значение — в value.

При указании третьего аргумента со значением 1 имя константы становится нечувствительным к регистру. В ином случае регистр учитывается, то есть: константы CONSTANT и Constant будут представлять различные значения.

<?php
define ("CONSTANT".
"Hello world ").
echo CONSTANT:
// outputs "Hello world."
?>

Возвращается TRUE или FALSE при ошибке (например, если константа уже была определена).

См. также: definedO и раздел «Константы».

defined

Проверка существования константы

int defined (string name)

Возвращает TRUE, если константа с именем, указанным name, была определена; иначе FALSE. /

<?php if (defined("CONSTANT"))
{ // Note that it should be quoted
echo CONSTANT; //
} ?>

См. также: defineO и раздел «Константы».

get_required_files

Определение списка файлов, подключенных директивами require_once()

array get_required_files (void)

Возвращает ассоциативный массив имен файлов. Индексами будут аргументы, указанные в директивах require_once(), без расширения .рhр.

<?php require_once
("local.php"), require_once
(". /inc/global.php"):
for ($1=1; $1<4; $1++)
include "util".$i "php".
echo "Файлы Required_once ";
print_r (get required_files());
echo "Файлы Included_once:
"; pnnt_r (get_included_tiles()): ?>

Приведенный пример должен вывести (подразумевается существование файлов):

Файлы Reqirreconce: Array
( [Lосаl] =-- local chn
. ./inc/vi. bal] -=>
/full/path/to/inc/giobal.php
ч Файлы Included once- Array
( Cut-ill] => ut' i1 php
CutiVI => uti V php
[ut <!,<] =' ut'13 php ) < /FONT >

См. также: require_once(), include_once(), getjncluded_files().

get_included_files

Определение списка файлов, подключенных директивами include_once()

array get included_flies (void)

Функция действует аналогично get_required_files ().

См. также: require_once(), inc1ude_once(), get_required_files().

getrusage

Определение расходования ресурсов

array getrusage ([int who])

Это интерфейс одноименной системной команды. Возвращается ассоциативный массив (см. системную документацию). Если указывается аргумент со значением 1, то происходит вызов типа RUSAGE_ CHILDREN (ресурсы, потребляемые дочерними процессами). В некоторых системах (например, Windows) функция может не работать.

$dat = jetftibdye() .
echo $dat["ru_ns.vap"J:
# number of swaps
echo $datL"ru_najTlt"]:
# number of page faults echo
$ddt["r''.'.'ti!re U'_ser"|;
# user time used (seconds)
echo Idat["ru_utirrie U_usec"]:
# user time used (microseconds)

get_current_user

Определение имени владельца текущего сценария PHP

string get_current_user (void)

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

См. также: getmyuid(), getmypid(), getmyinode() и getlastmod().

getmyuid

Определение DID владельца сценария PHP

Int getmyuid (void)

Возвращает номер-идентификатор пользователя или FALSE при ошибке.

См. также: getmypid(), get_current_user(), getmyinode() и getlastmod().

getmyinode

Определение номера inode текущего сценария PHP

int getmyinode (void)

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

При ошибке возвращает FALSE.

См. также: getmyuid(), get_current_user(), getmypid() и getlastmod().

getmypid

Определение дескриптора процесса PHP

int getmypid (void)

Возвращает системный номер или FALSE при ошибке.

См. также: getmyuid(), get_current_user(), getmyinode() и getlastmod().

getlastmod

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

int getlastmod (void)

Возвращает время последней модификации текущей страницы (или FALSE при ошибке) в формате «Unix timestamp», которое затем может быть передано в функцию date().

// выводит, например:
'Last modified: March 04 1998 20:43:59.'
echo "Last modified: ".date ("F d Y H:i:s ".
getlastmod()).

См. также: date(), getmyuid(), get_current_user(), getmyinode() и getmypid().

Управление исполнением сценария PHP

set_time_limit

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

void set_time_limit (int seconds)

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

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

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

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

sleep

Приостановление выполнения (на секунды)

void sleep (int seconds)

Выполнение сценария приостанавливается на указанное число секунд seconds.

См. также usleep().

usleep

Приостановление выполнения (на микросекунды)

void usleep (int micro_seconds)

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

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

См. также sleep().

die

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

void die (string message)

Это языковая конструкция, ничего не возвращающая.

<?php $filename =
'/path/to/data-file';
Sfile = fopen (Sfllename. 'r')
or dieC'unable to open file
(Sfilename)"); ?>

См. также exit().

exit

Завершение текущего сценария

void exit(void);

Языковая конструкция, ничего не возвращающая.

См. также die().

assert

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

int assert (string]boo! assertion)

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

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

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

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

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

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

а: 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 | asscrt.active. | 1 | Разрешить указание кода в assertQ
ASSERT_WARNING | assert, warning | 1 | Выдавать предупреждение РПР
ASSERTJ3AIL | assert.bail | 0 | Завершать выполнение, если «неистинно»
ASSERT_QUIET_EVAL | assert.quiet_eval | 0 | Не выдавать сообщений
ASSERT_CALLBACK | assert_callback | (null) | Установить функцию в качестве обработчика «неистинных» assert()

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

eval

Интерпретация строки как кода РНР

mixed eval (string code_str)

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

H'le забывайте, что указанный в строке код должен быть синтаксиче-снки правильным (например, должны присутствовать точки с запятой после каждой команды и т. п.), в противном случае сценарий будет заавершен в этой строке с ошибкой. Учитывайте также, что те значе-н«ня переменных, которые будут установлены в данной строке, будут ивспользоваться в оставшейся части сценария.

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

<"-?php Ssstnng = 'сундук' .
$>.name = 'кирпич':
$>str = 'Это Sstnng. а внутри
$name.<br>\n';
e;cho $str.
eeval (" \$str = \"$str\". ");
«val (" echo \$str '):
eecho eval ("return 999: ");
?>

Приведенный выше сценарий выведет:

Это Sstnng, а внутри
Spame.<br>\n3ro сундук,
а внутри кирпич.<br> 9399

Статус подключений

Внутренне РНР имеет три статуса подключения:

  • 0 — NORMAL;
  • 1 — ABORTED (прервано пользователем);
  • 2 — TIMEOUT (истекло время ожидания ответа).

При нормальном выполнении сценария активно состояние NORMAL. Если во время загрузки страницы пользователь нажимает кнопку STOP, активным становится состояние ABORTED. Если сценарий выполняется дольше отведенного ему времени (см. функцию set_tirae_ liraitO), устанавливается флаг состояния TIMEOUT. Возможно определить, как должен вести себя сценарий в зависимости от этих условий.

Если требуется, чтобы сценарий продолжал свое выполнение при разрыве соединения пользователем, нужно установить в файле конфигурации значение параметра ignore_user_abort = 1 (это также можно сделать в файлах конфигурации Apache). Можно также воспользоваться функцией ignore_user_abort(). В противном случае, но умолчанию, если браузер отказывается от приема данных сценария, сценарий завершается. < /FONT >

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

Если функцией register_shutdown_function() была установлена функция «запускаемая при завершении сценария», то, вне зависимости от статуса подключения, она будет исполнена перед тем, как сценарии завершится. И в «завершающей» функции можно будет выяснить (с помощью функций: connection_aborted() ,connection_timeout() и connecti on_ status()), был ли сценарий завершен нормально или досрочно.

connection_aborted

Определение разрыва подключения пользователем

int connection_aborted (void )

Возвращает TRUE, если подключение было разорвано пользователем.

connection_status

Определение статуса подключения

Int connection_status (void )

Возвращает значение битового поля (см. выше), позволяющее выяснить в «завершающей» функции, был ли сценарий завершен досрочно и причину этого. Например, если возвращается 3 (ABORTED | TIMEOUT), то это означает, что время исполнения истекло, а также то, что пользователь отказался от загрузки страницы.

Если возвращается 0 (то есть значение NORMAL), то это означает, что выполнение сценария не было прервано.

connection_tameout

Определение наступления тайм-аута

int connectionjtimeout (void )

Возвращает TRUE, если время исполнения сценария истекло.

ignore_user_abort

Прерывание сценария при разрыве подключения

int ignore_user_abort ([int setting])

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

register_shutdown_function

Регистрация функции в качестве завершающей

int register_shutdown_function (string func)

Регистрирует функцию с именем func в качестве функции, запускаемой после завершения сценария.

Заметьте: так как после завершения функции никакие средства вывода недоступны, это делает для функции, зарегистрированной в качестве «завершающей», недоступными обычные средства отладки, такие как команды print или echo.

Дополнительные функции

get_browser

Определение возможностей браузера

object get_browser ([string user_agent])

Возвращаемая информация извлекается из файла browscap.ini. Для определения браузера используется значение переменной $HTTP_USER_ AGENT или значение, содержащееся в аргументе user_agent.

Информация возвращается в виде свойств объекта и отражает возможности клиентского браузера (например, версию, поддерживает ли он javascript или cookies).

<?php function list_array
($array) { while (list (Jkey. Svalue)
= each (Sarray)) { $str =
"<t»$key:</b> $value<br>\n"; }
return $str }
echo "$HTTP_USER_AGENT<hi">\n";
$browser = get_browser();
echo list_array ((array) Sbrowser). ?>

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

Mozilla/4.5 ten] (Xll; U. Linux 2.2.9 1586)
<hr> <lpbrowser_name_pattern:</b>
Mozilla/4\.5.*<br> <b>parent:</b>
Netscape 4.0<bn> <b>platform:</b>
Unknown<br> <b>majorven:</b>
4<br> <b>mnorver:</b> 5<bn>
<b>browser:</b> Netscape<br>
<b>version </b> 4<br> <b>frames:</b>
l<bn> <b>tables:</b> l<bn>
<b>cookiev</b> l<br>
<b>backgroundsounds:</b>
<br> <b>vbscnpt:</b>
<br> <b>javascnpt:</b>
<br> <b>javaapplet: </b>
<br> <b>activexcontrols-</b>
<br> 'b>beta:<:/b> <br> <b>crawler
:</b> <br> <b>authenticodeupdate:
</b> <br> <b>msn:</b> <br>

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

highlight_file

Вывод содержимого файла с цветовой разметкой boolean highlight_file (string filename)

Имя (или путь) файла указывается'в аргументе. Цвета выделения синтаксиса определяются в файле конфигурации РНР. Возвращает TRUE или FALSE при ошибке.

Например, чтобы заставить сервер Apache при получении запроса с URL, содержащего значение вида «пир://имя.сервера/5оигсе/путь/ к/файлу.php», выводить листинг файла «1тЬ1р://имя.сервера/путь/к/ файлу, рпр», сделайте следующее.

Добавьте в файл httpd.conf следующий фрагмент:

# Используем директиву "ForceType"
чтобы указать, что значение source в URL
- не каталог, а имя сценария РНР
<Location /source>
ForceType appHcation/x-httpd-php
</Location>

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

<HTML><HEAD>
<TITLE'--Source Dibplay</TITLE>
</HEAD><BODY BGCOLOR=#FFEEDD>
<?php Sscnpt = getenv
("PATM_TRANSLATEn"
V if(!$script) { echo "
<BR><B>ERROR: Укажите имя
Сценария</В><ВК>"; lelse {
if (eieg("{\.php|\ inc)$".$scnptl)
{ echo "<Ш>Листинг файла.
$РАТН INFO</Hl>\n<HR>\n";
if(!ehighlight_file($scr1pt))
echo "Ошибка вывода файла":
} else { echo "<H1>ERROR:
Показываются" ." только
листинги PHP файлов </Н1>"; } }
echo "<нр>Распечатано: "
.date("Y/M/d Н:т :s" .timeO): ?>
</BODY>
</HTML>

См. также: rnghlight_string(), show_source().

highlight_string

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

void highlight_string (string str)

Функция действует подобно highlight_file(), но использует не содержимое файла, а указанной строки.

См. также: rngh1ight_file(), show_source().

show_source

Синоним функции highlightjile

boolean show_source (string filename)

См. также: highlight_string(), highlight_file().

leak

Имитация утечки памяти

void leak (int bytes)

Функция используется для отладки менеджера памяти, его проверки на способность ликвидировать неосвобожденные блоки памяти после завершения сценария. Размер блока памяти указывается в байтах аргументом bytes.

uniqid

Генерация уникального идентификатора

int uniqid (string prefix [, boolean leg])

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

Если указывается необязательный аргумент leg со значением TRUE, к концу идентификатора будет добавляться «комбинированный хеш энтропии LCG», делающий его значение более уникальным.

Префикс используется для получения уникальных идентификаторов, генерируемых одновременно на разных машинах (когда время одинаковое). Его длина может достигать 114 символов. Если в качестве его значения передается пустая строка, то длина сгенерированного идентификатора будет 13 символов (при lcg=TRUE — 23 символа). < /FONT>

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

$token = md5 (uniqid ("")):
// без случайной части
$better_token = md5 (uniqid (randO));
// посложнее

Эти строки генерируют 32 байта (128-битное шестнадцатеричное число): они обладают максимальной уникальностью, которая только может потребоваться.

pack

Пакетирование данных в двоичную строку

string pack (string format [, mixed args ...])

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

Строка формата состоит из кодов двух видов: кода типа элементов данных и числителя (длины данных или количества элементов данных данного типа), указанного после кода типа. Числитель может быть числом или значением «*» (тогда длина определяется автоматически). Если числитель не указывается, он считается равным 1. Для кодов a, A, h, H числитель указывает количество символов, вносимых в строку данных; а для кода 0 — абсолютную позицию в строке результата, начиная с которой вносятся символы следующего элемента данных.

echo pack("А"."Abe"),"
",pack("A6"."Abe")."|"
,pack("A*"."Abe")."|":
//выводит: A|Abc |Abe|

Допустимы следующие коды типов данных:

  • а — строка, дополняемая нулевым символом (\0);
  • А — строка, дополняемая пробелом;
  • h — строка шестнадцатеричных цифр (младший полубайт первый);
    packC'h*"."0123456789abcDEF")
    == «\xlO\x32\x54\x76\x98\xBA\xDC\xFE»
  • H — строка шестнадцатеричных цифр (старший полубайт первый);
    pack("H16"."0123456789abcDEF")
    == «\x01\x23\x45\x67\x89\xAB\xCD\xEF»
  • с — байт со знаком;
    pack("c*"."X".-1.255.256) == «\0\xFF\xFF\0» unpackC'c*". pack("c*"."X".-1.255.256» — (O.-l.-l.O)
  • С — байт без знака;
    pack("C*"."X".-l 255.256) =
    = «\0\xFF\xFF\0» unpackC'C*"
    . Dack("C*","X".-1.255.256)) == (0.255.255.0)
  • s — знаковое короткое число (2 байта, порядок байтов системы);
  • S — беззнаковое короткое число (2 байта, порядок байтов системы);
  • n — беззнаковое короткое число (2 байта, старший байт вначале);
    pack("n*".OxF951.Oxlllllllll) == «\xF9\x51\xFF\xFF»
  • v — беззнаковое короткое число (2 байта, младший байт вначале);
    pack("v",OxF951) == «\x51\xF9»
  • i — знаковое длинное число (4 байта, порядок байтов системы);
  • L — беззнаковое длинное число (4 байта, порядок байтов системы);
  • N — беззнаковое длинное число (4 байта, старший байт вначале);
  • V — беззнаковое длинное число (4 байта, младший байт вначале); j
  • i — знаковое целое число (зависит от системы);
  • I — беззнаковое целое число (зависит от системы);
  • f — дробное float (зависит от системы и представления);
  • d — дробное double (зависит от системы и представления);
  • х — байт \0;
  • X — удалить предыдущий байт; pack("x2A*X2A."Abc".'V) == «\0\ОАя»
  • @ — заполнять символами \0 от текущего места и до указанной позиции.
    pack("A*(a4A*"."Ab"."ZZ") =
    = «Ab\0\OZZ» pack("A*(aiA*"."Abccccc"."ZZ")
    == «AZZ»

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

unpack

Распаковка двоичной строки

array unpack (string format, string data)

Возвращает в ассоциативном массиве элементы данных, извлеченных из строки data, согласно формату format. В строке формата указываются последовательности «код_формата [числитель] имя_элемента» без пробелов, разделенные слешем <</>>. Описание кодов формата и комментарии см. в функции pack().

Sdata - unpack ("ccn". -1.128.0xFC9a):
// Sdata == "\xFF\x80\xFC\x9a"
Sarray = unpack ("c2char/mnt". $data):
// в массиве возвращаются:
// $array["charl"] = -1
//
      $array["char2"] =
-128 - переполнение разрядов
// $array["int"] = OxFC9A

iptcparse

Интерпретация двоичного блока 1РТС

array iptcparse (string iptcblock)

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

См. пример в функции GetlmageSize(), а также информацию по адресу: http://www.iptc.org/.

Отслеживание и обработка ошибок

РНР имеет следующие типы ошибок и предупреждений:

Значение | Константа | Описание
1 | E_ERROR | Фатальная ошибка времени исполнения
2 | E_WARNING | Предупреждение времени исполнения
4 | E_PARSE | Сообщение интерпретации времени исполнения
8 | E_NOTICE | Простое сообщение времени исполнения
16 | E_CORE_ERROR | Фатальная ошибка при инициализации РНР
32 | E_CORE_WARNING | Предупреждение инициализации
64 | E_COMPILE_ERROR | Фатальная ошибка компиляции
128 | E_COMPILE_ WARNING | Предупреждения компиляции
256 | E_USER_ERROR | Ошибки, определяемые пользователем
512 | E_USER_WARNING | Предупреждения, определяемые пользователем
1024 | E_USER_NOT1CE | Сообщения, определяемые пользователем
2047 | E_ALL | Все перечисленные сообщения

Указанные значения в виде чисел или консгант можно комбинировать, формируя битовую маску ошибок, о которых необходимо сообщать в ходе исполнения сценария. Для комбинирования используются битовые операторы, но в конфигурационном файле php.ini ' распознаются только «|», «-», «!» и <<&>>.

В PHP 4 по умолчанию разрешены сообщения вида E_ALL & -EJJOTICE, то ость сообщаться должно все, кроме обычных сообщений. Можно переопределить эту установку параметром файла конфигурации еггог_ reporting (ее также можно указывать в файлах конфигурации сервера Apache); а во время исполнения — функцией error_reporting().

Если при вызове функции перед ее именем указать символ «@», то в случае возникновения ошибки в этой функции сообщение о нем выдаваться не будет.

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

Если разрешен параметр конфигурации track_errors, то сообщение об ошибке сохраняется в глобальной переменной $php_errormsg.

«?php // определенный
пользователем обработчик ошибок
function userErrorHandler (Serrno. Serrmsg.
Sfilenamp Slirenum. Svarb) { $dt = date
("Y-m-d H i:s (Т)"). // время возникновения
ошибки Serrortype = array
( 1 => "Error". 2 => "Warning".
4 => "Parsing Error". 8 => "Notice".
16 => "Core Error". 32 =>
"Core Warning". 64 => "Compile Error".
128 => "Compile Warning". 256 =>
"User Error". 512 => "User Warning".
1024=> "User Notice" );
$err .= "время ($dt). номер ошибки
($errno). ": $err .= "тип ошибки
C'.$errortype[$errno]."): ":
$err = "\"$errmsg\", файл
\"$filename\". строка (".
$err .= $linenum.")\n";
I $user_errors - array
(E_USER_ERROR. E_USER_WARNING.
E_USER_NOTICE): if (in_array($errno.
$user_errors))
echo $err;
// выдать сообщения для ошибок
пользователя // сохранить событие
ошибки в системном журнале
error_log($err. 3.
"/usr/local/php4/error.log"): }
// установить уровень контроля
ошибок и обработчик error_reporting(0)
: // не выводить сообщения РНР
$old_error_handler = set_error_handler
("userErrorHandler");
// неопределенная константа вызывает
предупреждение
$t = _NOT_DEFINED_CONSTANT.
tngger_error("Mos ошибка". E_USER_ERROR);
tngger_error
("Moe предупреждение".
E_USER_WARNING): ?>

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

errorjog

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

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

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

В первом аргументе, message, указывается само содержание сообщения; во втором, messagejtype — куда оно должно быть направлено. Назначение обозначается следующими значениями:

  • 0 — сообщение заносится в системный журнал событий (файл) согласно установке параметра конфигурации error_log;
  • 1 — сообщение отправляется по электронной почте, по адресу, указанному в аргументе destination. Это единственный тип сообщения, использующий четвертый параметр, extrajieaders, в котором можно указать дополнительные заголовки (как в функции Mail());
  • 2 — сообщение посылается через подключение отладки. Это возможно только в случае, если параметр удаленной отладки был разрешен в файле конфигурации. Для этого также должен быть определен адрес хоста (имя или его адрес IP) и порт сокета, который будет принимать сообщения отладки; это можно указать в аргументе destination или параметрах конфигурации;
  • 3 — message добавляется в конец файла destination.

Возможные варианты применения функции:

if (!0ra_l_ogon (Susername. Spassword))
{ erroMog ("Сервер Oracle недоступен!".
О). } if (!($foo = allocate_new_foo())
{ rroMog ("Нельзя выделить FOO!".
1. "operator@mydomain.com").
} // other ways of calling error_log():
errorjog ГУ нас ошибка!".
2. "127.0.0 1.7000"); rrorjog
("У нас ошибка1". 2. "loghost");
eri~or_loq ("У нас ошибка!".
3. "/var/tmp/my-errors.log"):

error_reporting

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

int errorj-eporting ([int level])

Возвращает предыдущую установку типа сообщаемых ошибок; если указан аргумент, то заново переопределяет ее. В аргументе можно указывать константу, число или битовую маску. Старайтесь использовать константы вместо численных значений, чтобы сохранить совместимость с будущими версиями РНР.

errorj-eporting (2039).
// в РНР 4 эквивалент E_ALL " EJIOTICE
error_reporting (E_ALL * E_NOTICE);
// установка по умолчанию
error_reporting(0):
// отключить сообщения об ошибках
errorj-eporting (EJRROR E_WARNING
| E_PARSE):
/* Общие ошибки выполнения */
error j-eporting (EJRROR | E_WARNING
| E_PARSE | EJIOTICE);
/* также сообщать о неизвестных переменных */
error_reporting (E_ALL).
/* сообщать все ошибки */

set_error_handler

Установка пользовательского обработчика ошибок

string set_error_hand1er (string error_handler)

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

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

Функция, устанавливаемая в качестве обработчика ошибок, должна принимать пять параметров (три последних являются дополнительными и могут не обрабатываться):

  • код ошибки;
  • строку, описывающую ошибку;
  • имя сценария, в котором произошла ошибка;
  • номер строки сценария, содержащей ошибку;
  • контекст (массив, содержащий значения переменных, в момент-возникновения ошибки).

<?php // определить константы
пользовательских ошибок define
(FATAL.E_USER_ERROR);
define (ERROR.E_USER_WARNING).
define (WARNING.E_USER_NOTICE).
// установить, какие ошибки должны
обрабатываться в сценарии
errorj-eporting (FATAL | ERROR | WARNING);
// пользовательский обработчик ошибок
function myErrorHandler ($errno. Serrstr.
ierrfile. Serrlme) { switch (Serrno)
{ case FATAL:
echo "<b>Критическая ошибка</b>
[Serrno] $errstr<br>\n";
echo " в строке: Serrline. файла:
".Serrhle:
echo ", PHP ".PHP_VERSION."
(".PHP_OS.")<br>\n":
echo "Aborting...<br>\n":
exit -1:
break case ERROR:
echo "<b>Ошибка</b> [Serrno] $errstr
<br>\n":
break: case WARNING:
echo "<b>Предупреждение</b>
[Serrno] Serrstr<br>\n";
break:
default:
echo "Неизвестный тип ошибки:
[Serrno] $errstr<br>\n";
break; } } // функция для проверки
обработки ошибок (масштабирование
массива) function scale_by_log
(Svect. Sscale) { if ( hs_numenc
(Sscale) || Sscale <= 0 )
trigger_error("вычислить log(x).
для x <= 0 нельзя. ". "(x = Sscale)".
FATAL), if (hs_array(Svect))
{ trigger error("Требуется массив
". ERROR); return null: }
for ($1=0; $i<count(Svect): Si++)
{ if (!is_numenc($vect[$i]))
thgger_error( "Элемент (SI)
не число, и его значением".
" считается О". WARNING);
$temp[Si] = log(Sscale) *
$vect[Si]: } return Stemp: }
// установить пользовательский
обработчик ошибок
Sold_error_handler
= set_error_handler
("myErrorHandler");
Sa = array(2.3."foo".5.5.43.3.21 11);
pnnt_r(Sa).
Sb = scale_by_log(Sa. M_PI);
// здесь выдается предупреждение
echo "Массив, масштабированный
на логарифм(Пи): "; pnnt_r($b):
$с = scale_by_log("not array".2 3);
// здесь ошибка var_dump($c).
$d = scale_by_log($a. -25)
.// здесь критическая ошибка
echo "Продолжение сценария .": ?>

При выполнении сценария вывод будет следующим:

Array ( )[0] => 2 [1] => 3
[2] => too [3] => 5 5 [4] => 43
3 [5] <=> 21 11 )
<b>Прелупреждение</b>
[1024] Элемент (2) не число.
v его значением считается 0<bг>
Массив, масштабированный на
логарифм(Пи) Атау (
[0] => 2.2894597716988
[1J => 3.4341896575482 [2]
»> О [3] => 6 2960143721717 [4
] => 49 566804057279 [5] =>
24 165247890281 )
•Ф>Ошибка</b> Г512]
Требуется массив <br>
NULL <b>Критическая
ошибка</b> [256] вычислить
log(x) для х <= 0 нельзя,
(х --- -2 5)<br> в строке 37.
файла. Е-\ooo\php39.php3.
РНР 4.0.5 (WINNT)<br>
Aborting. . <br>

Не забывайте, что при установке пользовательского обработчика ошибок стандартный обработчик РНР не исполняется. Установки еггог_ reporting() также не будут иметь эффекта, и пользовательский обработчик должен уметь обрабатывать все виды ошибок (значение еггог_ reporting() можно выяснить и действовать соответственно). Заметьте, что код ошибки будет равен 0, если ошибка возникла в функции, выоод ошибок для которой был блокирован оператором «@».

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

См. также: error_reporting(), restore_error_handier(), trigger_error(), user_error()

error_reporting

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

int errorj-eporting ([int level])

Возвращает предыдущую установку типа сообщаемых ошибок; если указан аргумент, то заново переопределяет ее. В аргументе можно указывать константу, число или битовую маску. Старайтесь использовать константы вместо численных значений, чтобы сохранить совместимость с будущими версиями РНР.

errorj-eporting (2039).
// в РНР 4 эквивалент E_ALL " EJIOTICE
error_reporting (E_ALL * E_NOTICE);
// установка по умолчанию
error_reporting(0):
// отключить сообщения об ошибках
errorj-eporting (EJRROR E_WARNING
| E_PARSE):
/* Общие ошибки выполнения */
error j-eporting (EJRROR | E_WARNING
| E_PARSE | EJIOTICE);
/* также сообщать о неизвестных переменных */
error_reporting (E_ALL).
/* сообщать все ошибки */

set_error_handler

Установка пользовательского обработчика ошибок

string set_error_handler (string error_handler)

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

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

Функция, устанавливаемая в качестве обработчика ошибок, должна принимать пять параметров (три последних являются дополнительными и могут не обрабатываться):

  • код ошибки;
  • строку, описывающую ошибку;
  • имя сценария, в котором произошла ошибка;
  • номер строки сценария, содержащей ошибку;
  • контекст (массив, содержащий значения переменных, в момент-возникновения ошибки).

<?php // определить константы
пользовательских ошибок define
(FATAL.E_USER_ERROR);
define (ERROR.E_USER_WARNING).
define (WARNING.E_USER_NOTICE).
// установить, какие ошибки должны
обрабатываться в сценарии
errorj-eporting (FATAL | ERROR | WARNING);
// пользовательский обработчик ошибок
function myErrorHandler ($errno. Serrstr.
ierrfile. Serrlme) { switch (Serrno)
{ case FATAL:
echo "<b>Критическая ошибка</b>
[Serrno] $errstr<br>\n";
echo " в строке: Serrline. файла:
".Serrhle:
echo ", PHP ".PHP_VERSION."
(".PHP_OS.")<br>\n":
echo "Aborting...<br>\n":
exit -1:
break case ERROR:
echo "<b>Ошибка</b> [Serrno] $errstr
<br>\n":
break: case WARNING:
echo "<b>Предупреждение</b>
[Serrno] Serrstr<br>\n";
break:
default:
echo "Неизвестный тип ошибки:
[Serrno] $errstr<br>\n";
break; } } // функция для проверки
обработки ошибок (масштабирование
массива) function scale_by_log
(Svect. Sscale) { if ( hs_numenc
(Sscale) || Sscale <= 0 )
trigger_error("вычислить log(x).
для x <= 0 нельзя. ". "(x = Sscale)".
FATAL), if (hs_array(Svect))
{ trigger error("Требуется массив
". ERROR); return null: }
for ($1=0; $i<count(Svect): Si++)
{ if (!is_numenc($vect[$i]))
thgger_error( "Элемент (SI)
не число, и его значением".
" считается О". WARNING);
$temp[Si] = log(Sscale) *
$vect[Si]: } return Stemp: }
// установить пользовательский
обработчик ошибок
Sold_error_handler
= set_error_handler
("myErrorHandler");
Sa = array(2.3."foo".5.5.43.3.21 11);
pnnt_r(Sa).
Sb = scale_by_log(Sa. M_PI);
// здесь выдается предупреждение
echo "Массив, масштабированный
на логарифм(Пи): "; pnnt_r($b):
$с = scale_by_log("not array".2 3);
// здесь ошибка var_dump($c).
$d = scale_by_log($a. -25)
.// здесь критическая ошибка
echo "Продолжение сценария .": ?>

При выполнении сценария вывод будет следующим:

Array ( )[0] => 2 [1] => 3
[2] => too [3] => 5 5 [4] => 43
3 [5] <=> 21 11 )
<b>Прелупреждение</b>
[1024] Элемент (2) не число.
v его значением считается 0<bг>
Массив, масштабированный на
логарифм(Пи) Атау (
[0] => 2.2894597716988
[1J => 3.4341896575482 [2]
»> О [3] => 6 2960143721717 [4
] => 49 566804057279 [5] =>
24 165247890281 )
•Ф>Ошибка</b> Г512]
Требуется массив <br>
NULL <b>Критическая
ошибка</b> [256] вычислить
log(x) для х <= 0 нельзя,
(х --- -2 5)<br> в строке 37.
файла. Е-\ooo\php39.php3.
РНР 4.0.5 (WINNT)<br>
Aborting. . <br>

Не забывайте, что при установке пользовательского обработчика ошибок стандартный обработчик РНР не исполняется. Установки еггог_ reportingO также не будут иметь эффекта, и пользовательский обработчик должен уметь обрабатывать все виды ошибок (значение еггог_ reportingO можно выяснить и действовать соответственно). Заметьте, что код ошибки будет равен 0, если ошибка возникла в функции, выоод ошибок для которой был блокирован оператором «@».

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

См. также: error_reporting(), restore_error_handier(), trigger_error(), user_error()

restore_error_handler

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

void restore_error_handler (void)

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

См. также: errorj-eporting(), set_error_handler(), trigger_error(), user_ error().

trigger_error

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

void trigger_error (string errorjnsg [, int error_type])

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

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

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

См. также: error_reporting(), set_error_handler(), restore_error_handler(), user_error().

user_error

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

void user_error (string error_msg [, int error_type])

Управление выводом

Данная группа функций позволяет управлять тем, как РИР при выполнении сценария выводит информацию. Это может быть полезно в различных ситуациях, в особенности при посылке браузеру HTML-заголовков (headers) после того, как сценарий начал выводить HTML-текст. (В обычном случае невозможно послать заголовок после того, как был начат вывод текста.) Эти функции не воздействуют на заголовки, посланные функциями header() или setcookie(), а только па функции, подобные echo() и HTML-тексту между блоками РНР-кода.

<?php ob_start():
echo "HelloXn"
\ I setcookie ("cookiename".
"cookiedata"):
end flush() : / >>

В примере выше вывод командой echo() будет сохранен в буфере вывода до вызова функции ob_end_flush(). В то же время вызов setcookie() успешно сохраняет cookie, не вызывая ошибки.

См. также: header() и setcoukie().

ob_start

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

void ob_start ([string output_callback])

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

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

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

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

<'php function c($str)
{ // получает содержимое буфера
return n!2br($str):
// возвращает содержимое буфера )
function d($str) j
// получает содержимое буфера
return strtoupper($str);
// возвращает содержимое буфера ?>
<?php ob_start("c"). ?>
Тут всякий текст...
<?php ob_start("d"):
/* преобразовывать текст далее
в верхний регистр */ ?>
и еще много чего .
<?php ob_end_flush(): ?>
смотрите сами ...
<?php ob_end_f)ush(): ?> ?>

См. также: ob_get_contents(), ob_end_f"lush(), ob_end_clean() и ob_implicit_ flush().

ob_get_contents

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

string ob_get_contents(void);

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

См. также: ob_start() и ob_get_length().

ob_get_length

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

string ob_get_length(vcrid);

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

См. также: ob_start() и ob_get_contents().

ob_end_flush

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

void ob_end_flush(void);

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

См. также: ob_start(), ob_get_contents() и ob_end_clean().

flush

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

void flush(void)

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

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

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

ob_end_clean

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

void ob_end_clean(void);

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

См. также: ob_start() и ob_end_flush().

ob_implicit_ flush

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

void objmplicit_flush (jjnt flag])

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

При вызове функции неявно вызывается ob_end_f"lush().

См. также: flush(), ob_start() и ob_end_flush().

Использование интерфейса HTTP

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

headers_sent

Проверка отсылки заголовков

boolean headers sent (void)

Возвращает TRUE, если заголовки HTTP уже были отосланы; иначе — FALSE.

См. также header().

header

Посылка простого заголовка HTTP

int header (string string)

Функция используется в начале сценария HTML (до вывода прочего текста) для низкоуровневой посылки строк заголовков по протоколу HTTP. Спецификация заголовков HTTP 1.1 (http://www.w3.org/ Г Protocols/rfc2616/rfc2616) определяет их формат и назначение.

Не забывайте, что вывод может происходить также из вложенных файлов, если они были подключены директивой include() или с помощью параметра auto_prepend.

Наиболее общие варианты использования заголовков представлены ниже.

Переадресация. Если браузер получает заюлонок Location, то он пытается загрузить страницу с нового указанного адреса (сервер Apache при этом также получает код статуса REDIRECT).

<?php
header
("Location: http://www.p.net/new.php");
echo "Эта страница была перенесена
в другое место. Обновите ссылки.": exit;>

Выполнение команды HTTP/ (регистр не важен).

header ("HTTP/1.0 404 Not Found").
// страница не найдена
header ("HTTP/1.0 403 Forbidden"):
// доступ к этому адресу запрещен

Управление кэшированием (на браузере или прокси-сервере). Следующие четыре команды запрещают кэширование различными способами.

header ("Expires: Mon. 26 Jul
1988 05:00:00 GMT").
// Уже устаоело header
("Last-Modified- " . gmdateC'D. d M Y H:vs")
" GMT"):
// только что модифицировано
header ("Cache-Control: no-cache,
must-revalidate").
// HTTP/1.1 header ("Pragma: no-cache"):
// HTTP/1.0

См. также headers_sent().

HTTP-аутентификация в PHP

Осуществлять аутентификацию HTTP можно, только если PHP установлен как модуль web-сервера Apache. Для версии CGI и на других серверах (например, IIS) это невозможно. Аутентификация происходит путем посылки (с помощью функции Heatier()) заголовка Authentication Required, что заставляет браузер вывести окно для ввода имени пользователя и его пароля. После того как пользователь вводит эти данные, браузер заново запрашивает страницу, передавая серверу переменные $PHP_AUTH_USER, $PHP_AUTH_PW и $PHP_AUTH_TYPE, соответственно со значениями имени пользователя, его пароля и метода аутентификации. В настоящее время поддерживается только аутентификация простого типа «Basic».

См. также функцию Header().

<?рhр if(hsset($PHP_
AUTH_USER)) { Header
C'WWW-Authenticate: Basic
rea)m=\"My RealmV"):
Header("HTTP/1.0 401
Unauthorized"): echo "Вы
отменили ввод
идентификационной информации.\n";
exit: } else { // здесь обычно
".роверяется имя пользователя
и пароль echo "Привет
$PHP_AUTH_USER.<P>";
echo "Вы вели пароль:
$PHP_AUTH_PW.<P>"; } ?>

Cookies

PHP полностью поддерживает cookies. Cookies — это механизм HTTP для сохранения информации о пользователе на его клиентской машине. Они работают следующим образом:

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

При получении cookies PHP преобразовывает их в переменные, как и переменные, полученные HTTP методами GET и POST (они также сохраняются в глобальном массиве $HTTP_COOKIE_VARS[]). Таким образом можно ассоциировать определенную информацию с конкретным пользователем (а реально его браузером) и передавать данные между страницам» одного сайта.

Например, так можно сохранять настройки пользователя для сайта или для электронных магазинов, информацию о том, что находится в «покупательской корзине» пользователя. В противном случае пришлось бы передавать всю эту информацию (часто достаточно объемную) в строке адреса URL. Имеется также альтернативный и часто более предпочтительный вариант — использование сессий (см. ниже).

Не забывайте, что cookies являются частью заголовков HTTP, и передавать их следует до того, как началась передача текста страницы (а также до того, как функцией header() будут посланы обычные заголовки). Таковы правила HTTP. Стоит отметить, что для одной страницы не может быть установлено более 20 cookies. А также, что значения cookies можно будет получить только при загрузке следующей страницы удалять cookies нужно с теми параметрами, с которыми они были созданы.

setcookie

Посылка cookie /

int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure])

Функция посылает переменную cookie в заголовке HTTP. Все аргументы, кроме имени name, необязательны (если какие-то указывать не требуется, то тогда их значением может быть пустая строка "" для строковых аргументов и 0 для числовых). Если у браузера уже имелся cookie с таким именем, он будет заменен новым.

В аргументе value можно указать значение, которое необходимо сохранить. Время, до которого браузер должен хранить у себя cookie, указывается в аргументе expire (в формате Unix time, возвращаемом функциями time() или mktirae()). Если в аргументе secure указывается ненулевое значение, то cookie будет передаваться в зашифрованном виде через протокол HTTPS.

В аргументах path и domain можно указать, страницам из каких каталогов какого домена необходимо возвращать значения cookies.

Следующие примеры устанавливают cookies:

setcookie ("TestCookiel". "Test Value"):
setcookie ("TestCooHeZ1 , $value.fime()+3GOO);
/* устаревает через час */ setcookie
("TestCook'eS". $value.time()+3600.
"/-rasmus/". " utoronto.ca". 1):

Удалить cookies из примера выше можно следующим образом:

setcookie ("TestCookiel"):
// set the expiration date to one hour ago
setcookie ("TestCookie2". "". timeO - 3600):
// время уже прошло
setcookie ("TestCookleS". "". timeO - 3600.
"/-nasmus/". " utoronto.ca". 1);

Можно сохранять в одном cookie одномерный массив (но устанавливать значение каждого элемента нужно по отдельности):

s etcookie ("cookie[three]".
"cookie_three").
setcookie ("cookie[two]".
"cookie_two"): , setcookie
("coohe[one]". "cookie_one").
// проверим получение на
следующей странице ]
if (isset (Scookie)) { while
(list ($name. Svalue) = each ($cookie))
{ I echo "Sname == $vatue<br>\n": } }

Документацию Netscape, описывающую cookies, можно найти по адресу: http://www.netscape.com/newsref/std/cookie_spec.html

Microsoft Internet Explorer 4 (c Service Pack 1) некорректно работает с cookies, имеющими установленный третий параметр. Netscape Communicator 4.05 и Microsoft Internet Explorer 3.x некорректно работают с cookies с не установленными третьим и четвертым параметрами.

Сессии

Сессии позволяют реализовать единый механизм передачи данных между страницами сайта. Программная реализация имеется в библиотеке PHPLIB, но в РНР есть встроенная. Сессии работают по следующей схеме.

  • Пользователю, впервые посетившему сайт, присваивается уникальный идентификатор (идентификатор сессии). Этот идентификатор может быть сохранен в cookie (но не все браузеры их поддерживают) или в строке URL (тогда необходимо вносить значение идентификатора во все внутренние ссылки сайта, имеющиеся на каждой странице сайта).
  • Затем инициализируется массии, в котором будут храниться данные текущей сессии. Обычно данные сессии хранятся на сервере в файлах или базе данных.
  • В сценарии используются две основные функции: открытие сессии и внесение значения неременной в данные сессии.
  • При открытии сессии автоматически извлекаются ранее сохраненные переменные сессии.
  • При уничтожении сессии (обычно это делается автоматически, но прошествии времени устаревания) удаляются все се данные.

Внутренняя реализация сессий PIIP работает следующим образом. Если параметр конфигурации session.auto_start установлен (равен 1), то при запуске сценария сессия инициализируется автоматически (неявно вызывается функция session_start()). При этом проверяется существование идентификатора сессии и необходимость его создания.

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

Сохранение и восстановление переменных сессии определяется параметрами конфигурации track_vars (обычно он разрешен всегда) и register_globals.

Если параметр register_g"lobals разрешен, то переменные сессии автоматически преобразуются в глобальные и обратно (также их значения доступны в массиве $HTTP_SESSION_VARS).

<?php session_register
("count"): $count++: >>

Если параметр register_globals запрещен, то тогда переменные сессии сохраняются только в глобальном ассоциативном массиве $НТТР_ SESSIONJARS.

<?php session_register
("count");
$HTTP_SESSION_VARS
["count"l++: ?>

PHP может автоматически вносить идентификаторы сессий (SID) в строки локальных гиперссылок, если при компиляции был разрешен параметр —enable-trans-sid. Это бывает полезно, если браузер клиента не поддерживает cookie; иначе придется добавлять идентификаторы сессий в ссылки вручную.

<php? # <?=SID^>
- позволяет вывести идентификатор
сессии
# при интерпретации
заменяется на значение вида
# PHPSESSID=
-da07977e2f4cl52f973676c41d6bd9aa ?>

По умолчганию данные сессий сохраняются в файчах (в каталоге, указанном параметром конфигурации session.save path). Так заметно снижает быстродействие, можно использовать собственную функцию сохранения данных сессий (например, в БД) установив в качестве таковой с помощью функции session set save hand().

session_start

Инициализация данных сессии

bool session_start(void)

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

Функция всегда возвращает TRUE.

session_destroy

Уничтожение данных сессии

bool session_destroy(void);

session_ name

Определение имени сессии

string sessionjiame ([string name])

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

Имя сессии является именем cookies, или например в строке запросом URL. Оно должно содержать цифровые символы. По умолчанию имя устанавливается параметром session.name , файле конфигурации. Если требуется измнить его в сценарии, это должно быть сделано до открытия сессии (вызова функций session_start() или session_register()).

<?php
Sprevious name = session_name
("WebsitelD"): echo "Ранее именем
сессии было $previous_name<p>"; ?>

session_module_name

Определение модуля работы с сессиями

string session_module_name ([string module])

Возвращает имя текущего модуля для работы с сессиями (обычно это встроенный в РНР модуль). Можно указать имя собственного модуля module, который должен использоваться вместо встроенного.

session_save_path

Определение каталога сохранения данных сессии string session_save_path ([string path])

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

session_ id

Определение значения идентификатора сессии string session_id ([string id])

Возвращает значение идентификатора текущей сессии; если указан аргумент, то заменяет его на указанное id (установить значение можно только до начала сессии).

Значение идентификатора также хранится в константе SID.

session_register

Добавление переменной сессии

bool session_register (mixed name [, mixed ...])

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

session_unregister

Удаление переменной сессии

bool session_unregister (string name)

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

session_unset

Удаление всех переменных сессии

void session_unset(void);

Удаляет все данные текущей сессии.

session_ is_ registered

Проверка принадлежности переменной к текущей сессии

bool session_is_registered (string name)

Возвращает TRUE, если переменная с именем name принадлежит сессии.

session_get_cookie_params

Получение параметров cookie сессии

array session_get_cookie_pararas (void);

Возвращается массив, содержащий три элемента:

  • lifetime — время жизни cookie;
  • path — путь URL, для которого cookie действителен;
  • domain — домен, для которого cookie действителен.

session_ set_ cookie_ params

Установка параметров cookie сессии

void session_set_cookie_params (int lifetime [, string path [, string domain]]).

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

session_decode

Декодирование данных сессии из строки

boo! session_decode (string data)

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

session_encode

Кодирование данных сессии в строку

string session_encode(void)

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

tession_set_save_handler

Установление пользовательских процедур работы с сессиями

void session_set_save_handler (string open, string close, string Aead, string write, string destroy, string gc)

Этой функцией можно установить функции, которые будут выполнять следующие действия: открытие сессии, закрытие, чтение и запись данных сессии, уничтожение устаревших данных, вычисление момента, когда следует удалять устаревшие данные. Имена соответствующих функций указываются в этом порядке, как аргументы данной функции. Для того чтобы можно было использовать пользовательские функции, следует установить для параметра session.save_ handler в файле конфигурации значение user.

Можно реализовать механизм сохранения данных сессий в базе данных. Следующий пример, демонстрирующий сохранение данных в файлах (примерно таким образом действует РНР), может быть лег- / ко преобразован для хранения данных в БД.

<?Php
// инициализация сессии
function open ($save_path. $sesston_name)
{ global $sess_save_path. $sess_session_name:
// здесь может выполняться подключение
к БД $sess_save_path = $save_path;
$sess_session_name •= $session_name: return(TRUE).
}
// закрытие сессии function close()
{ return(TRUE): }
// загрузка данных сессии function
read ($id) { global $sess_save_path.
$sess_session_name
$sess_file =
"$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file. "r";)
{ $sess_data = fread
($fp. filesize($sess_file));
return($sess_data): } else {
returnC"'). }
// сохранение данных сессии
function write ($id. $sess_data) {
global $sess_save_path.
$sess_session_name:
$sess_file = "$sess_save_path/sess_$id":
if ($fp = @fopen($sess_file. "w"))
{ return (fwnte($fp, $sess_data));
} else { return(FALSE): }
} // уничтожение устаревших данных
сессии function destroy (Sid) {
global $sess_save_path.
$sess_session_name:
$sess_file = "$sess_save_path/sess_$id";
' return(@unlink($sess_file)); }
// здесь должны проверяться данные
сессии на истечение времени хранения
function gc (Smaxlifetime) {
return TRUE. }
session_set_save_handler
("open", "close", "read", "write",
"destroy", "gc"); session_start():
// далее следует обычная процедура
работы с сессиями ?>

session_cache_limiter

Определение ограничения кэширования

string session_cachejimiter ([string cachejimiter])

Когда посылаются заголовки HTTP, в них можно указать, разрешено ли кэширование полученных данных. В HTTP допустимы следующие значения: nocache (по умолчанию), private (относительное ограничение кэширования) и public (отсутствие ограничений). При запуске сценария ограничение кэширования устанавливается согласно значению параметра конфигурации session.cache_limiter.

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

<?php
session_cache_himter( 'private');
session_start (): ?>

Загрузка файлов на сервер методом HTTP POST

PHP способен осуществлять загрузку на сервер файлов, посланных браузерами, использующими стандарт RFC1867 (таковыми являются Netscape Navigator 3 и старше, Microsoft Internet Explorer 3 с обновлением или более поздние браузеры Microsoft). Файлы могут быть как двоичными, так и текстовыми. При этом бывает полезно г воспользоваться процедурой аутентификации и функциями файловой системы.

Также РНР поддерживает загрузку методом PUT, используемую программами Netscape Composer и Amaya (см. ниже).

Для загрузки файлов методом POST необходимо передать браузеру следующую форму:

«FORM ENCTYPE="multipart/form-data"
ACTION="get.php" METHOD=POST>
<INPUT TYPE="hidden" name=
"MAX_FHE_SIZE" value="1000">
Отослать файл; <INPUT NAME=
"userfile" TYPE="file">
<INPUT TYPE="subirnt"
="Послать">
</FORM>

Вместо значения атрибута ACTION «get.php» необходимо указать имя PHP-сценария, который будет принимать файл. В скрытом поле MAX_FILE_SIZE указывается максимальный размер файла (в байтах), который может быть послан, но он не может быть больше, чем определено в параметре конфигурации upload_max_filesize. При отображении данной формы браузер автоматически добавляет кнопку «Обзор...», при нажатии на которую появляется стандартное окно выбора файлов.

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

Array (
[userfile] => Array ( [name] ->
jshtm.zip [type] =>
application/x-zip-compressed
[tmp_name] => E:/Tmp\phpAE.tmp
[size] => 21344 ) [userfnle?] =>
Array (
[name] => tsrm.txt
[type] => text/plain
[tmp_name] => E:/Tmp\phpAF.tmp
[size] => 5483 ) )

userfile — это имя поля формы, в которое вводилось имя передаваемого файла. (В форме может присутствовать несколько таких полей типа «file», если необходимо передавать несколько файлов одновременно.) Соответственно массив будет содержать столько же подмассивов, сколько полей передачи файлов присутствовало в форме.

  • $HTTP_POST_FILES['userfne']['name'] — имя файла на клиентской машине (без пути к нему).
  • JHTTP_POST_FILES['userfile']['type'] - MIME тип файла, автоматически определяемый браузером.
  • $HTTP_POST_FILES['userfi1e']['size'] — размер файла и байтах.
  • $HTTP_POST_FILES['userfile']['tmp_name'] — имя временного файла, в котором был сохранен загруженный на сервер файл.

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

<?php
foreach ($HTTP_POST_FILES as $v) {
// здесь обычно проводится проверка
допустимости if(move_uploaded_file
($v['tmp_name'J.
"Е/Tmp/UpLoaded.Files/".$v['name']))
echo "Файл r$v[name]' (размером
$v[snze] байт)", был успешно загружен
<ВР>\n", } ?>

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

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

<input name="userfile[]" type="file">
<br>
<input name="userfile[]" type="file">
<br>
<input name="userfile[]" type-"file">
<br>

Тогда структура массива $HTTP_POST_FILES будет иметь другую форму:

Array (
[userfilo] => Array ( [name] =>
Array [0 - ...] [type] => Array
[0 - ..] [tmpjiame] => Array [0 - ... ]
[size] > Array [0 - . ] ))

В этом случае тип первого загруженного файла будет находиться в элементе $HTTP_POST_FILES["userfile"]["type"][0], а размер второго в $HnP_POST_FILES["userfile"]["size"][l].

Загрузка методом PUT

PHP также поддерживает загрузку HTTP PUT, используемую такими устаревшими приложениями, как Netscape Composer. Этот метод работает намного проще, в теле заголовка запроса HTTP передается строка:

PUT /path/filename html HTTP/1.1

Строка указывает, что сервер должен сохранить последующую часть запроса как файл под именем filename.html в каталоге web-сервера /path/. Едва ли такое решение является удачным — позволять любому клиенту сохранять произвольные файлы на сервере. Поэтому в конфигурации web-сервера следует указать, что запросы этого типа должен обрабатывать определенный сценарий. В сервере Apache для этого необходимо добавить директиву Script в его файл конфигурации. Обычно такая директива вносится в блок <Directory>, иногда — в блок <Virtualhost>. Например, в таком виде:

Script PUT /put.php

Эта директива указывает серверу, что все получаемые запросы типа PUT (соответствующие контексту, то есть адресованные определенному каталогу или виртуальному хосту) должны передаваться сценарию put.php (расположенному в корневом каталоге web-сервера). Внутри файла put.php можно указать следующую строку:

<?php copy
($PHPjmjILFNAME.IDOCUMENT_ROOT.
$REQUEST_URI); ?>

Тогда все загружаемые файлы будут копироваться в указанную в запросе директорию. Необходимо, конечно, предварительно проводить ряд проверок на допустимость подобной операции. Полученный файл сохраняется во временном файле, имя которого заносится в переменную SPHP_PUT_FILENAME. Адрес, по которому запрашивался файл, сохраняется в переменной $REQUEST_URI (для Apache). Так же как и для файлов POST, полученный файл удаляется по завершении, если он не был скопирован или перемещен.

Запуск внешних приложений

escapeshellarg

i Добавление кавычек в строку аргументов команды ОС

string escapeshellarg (string arg)

Возвращается строку arg, в которую добавляются одинарные кавычки (вокру! самой строки и вокруг каждой одинарной кавычки), что позволяет передавать аргументы запуска командам операционной системы, если необходимо передать одиночный параметр, содержащий пробелы или другие символы разделители. Это бывает полезно для систем Unix при использовании функций exec(), system().

system('ls " .EscapeShel lArg($dir))

См. также: ехес(), popen(), system() и «оператор запуска внешних программ».

escapeshellcmd

Цитирование метасимволов командной строки

string escapeshellcmd (string command)

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

$е - EscapeShellCmd($usennput).
systemC'echo $e"); // в $е возможно
присутствие пробелов
$f = EscapeShellCmd($filename):
systemt"touch \"/tmp/$f\": Is -1 \"/tmp/$f\""):

См. также: escapeshellarg(), exec(), popen(), system() и «оператор запуска внешних программ».

exec

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

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

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

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

Если указан аргумент return_var, то в нем будет сохранен код завершения команды.

<? $se = "dir C:\\".
$sO = exec($se. $sa. $sr):
echo "При запуске команды '$se
последняя выведенная строка была:\n".
$sO. "\n Код возврата ($sr)
\nA это все что было выведено: ";
pnnt_r($sa); ?>

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

См. также: system(), PassThru(), popen(), EscapeShellCmd() и «оператор запуска внешних программ».

passthru

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

void passthru (string command [, int return_var])

Функция сходна с ЕхесО: она запускает команду операционной системы command и возвращает в переменной return_var код завершения соответствующей системной команды, но она также выводит все то, что выводится при запуске.

Эта команда может использоваться и в тех случаях, когда внешняя программа выводит двоичные данные; например, с помощью утилиты

pbmplus можно непосредственно отослать браузеру рисунок (предварительно следует отослать заголовок «content-type: image/gif»).

В отличие от функций ехес() и system() она не возвращает никакого значения.

См. также: ехес(), system(), popen(), EscapeShellCmd(), «оператор запуска внешних программ».

system

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

string system (string command [, int return_var])

Функция подобна PassThru(), но она возвращает последнюю строку, выведенную при запуске команды (или FALSE при ошибке). Кроме того, после этого запуска (если была включена буферизация вывода) выводится содержимое буфера.

См. также: ехес(), PassThru(), popent), EscapeShellCmd() и «оператор запуска внешних программ».

Поддержка СОМ для Windows

Эти функции доступны только для Windows версий интерпретатора РНР1,

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

СОМ объект можно создать, вызвав конструктор СОМ с оператором new.

$xcl = new COM("fxcel.sheet");

Если необходимо создать удаленный компонент (DCOM), то во втором дополнительном аргументе можно указать адрес сервера, на котором он должен создаваться (для этого должен быть разрешен параметр конфигурации com.al"low_dcom = TRUE). Доступ к свойствам и методам компонента можно осуществлять гак:

$xcl->Applicat"ion->Visible = 1;
// показать окно
echo
      $xcl->Application->Version,
// вывести номер
      версии
$xcl->Worksheets->Add:
// добавить лист
Sell =
      $xcl->Activesheet->Cells(3.2):
// выбрать
      ячейку
$cll->Activate():
// выделить ее
$cll->Value * "АА",
//
      ввести значение
$cll->Font->Bold = True;
// выделить жирным шрифтом

com_ load

Создание новой ссылки на компонент СОМ

string com_load (string module name [, string server name])

Создает новый компонент COM (если он не был создан ранее) и возвращает ссылку на него. При ошибке возвращает FALSE.

com_invoke

Вызов метода объекта СОМ

mixed com_invoke (resource com_object, string functionjiame [, mixed function parameters. ...])

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

com_propget

Синоним функции comjjet

mixed com_propget (resource com_object, string property)

com_get

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

mixed com_get (resource com_object, string property)

Возвращает значение свойства property обьекта com_object или FALSE — в случае ошибки.

com_propput

Синоним функции com_set

void com_propput (resource com_object, string property, mixed value)

com_propset

Синоним функции com_set

void com_propset (resource com_object, string property, mixed value)

com_set

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

void com_set (resource com_object, string property, mixed value)

Присваивает значение value свойству property объекта com_object. Возвращает TRUE, если операция прошла успешно, или FALSE в случае ошибки.

Функции POSIX

Данная группа функций позволяет работать с реализацией интерфейса POSIX.1, соответствующей спецификации IEEE 1003.1. Так как разработка этого модуля еще не завершена, документация по многим функциям находится в стадии разработки.

posix_kill

Посылка процессу сигнала завершения

boo! posixjdll (int pid, int sig)

Возвращает TRUE при успешной посылке сигнала sig процессу с идентификатором pid или FALSE при ошибке.

См. также раздел kill(2) справочной системы man по системе POSIX относительно отрицательных значений идентификаторов процессов и специальных значений pid 0. pjd -In номера сигнала 0.

posix_getpid

Получение идентификатора текущего процесса

int posix_getpid (void )

posix_getppid

Получение идентификатора родительского процесса

int posix_getppid (void )

posix_getuid

Получение ID реального пользователя текущего процесса int posix_getuid (void )

См. также posix_getpwuid().

posix_geteuid

Получение ID эффективного пользователя текущего процесса

int posix_geteuid (void )

См. также posix_getpwuid().

posix_getgid

Получение ID группы реального пользователя текущего процесса int posix_getgid (void )

См. также posix_getgrgid().

posix_getegid

Получение ID группы эффективного пользователя текущего процесса

int posix_getegid (void )

См. также posix_getgrgid().

posix_setuid

Установка ID реального пользователя текущего процесса

bool posix_setuid (int uid)

Для выполнения этой функции необходимо иметь соответствующие привилегии (обычно root). Возвращается TRUE или FALSE — при ошибке.

См. также posix_setgid().

posix_setgid

Установка ID эффективного пользователя текущего процесса bool posix_setgid (int gid)

Для выполнения этой функции необходимо иметь соответствующие привилегии (обычно root). Возвращается TRUE или FALSE — при ошибке. Заметьте, обычно сперва вызывается posix_setgid(), а затем posTX_setuid().

posi_ getgroups

Получение набора группы текущего процесса array posix_getgroups (void )

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

См. также posix_getgrgid().

posix_getlogin

Получение имени login

string posix_get"login (void )

Возвращает имя (login), от которого был запущен текущий процесс.

См. также posix_getpwnam().

posix_getpgrp

Получение группового идентификатора текущего процесса

int posix_getpgrp (void )

См. также документацию POSIX.1 и раздел getpgrp(2) справочной системы man.

Posix_setsid

Назначение текущего процесса лидером сессии

int posix_setsid (void )

Возвращает идентификатор сессии.

См. также документацию POSIX. 1 и раздел setsid(2) справочной сис-тшы man.

posix _setpgid

Установка идентификатора группы процесса int posix_setpgid (int pid, int pgid)

Присоединяет процесс pid к группе процессов pgid. При ошибке возвращает FALSE.

См. также документацию POSIX.1 и раздел sctsid(2) справочной системы man.

posix_getpgid

Получение идентификатора группы процесса

int posix_getpgid (int pid)

Это не функция POSIX, но она распространена в системах BSD и System V. Если она не поддерживается системой, то РНР всегда будет возвращать FALSE.

posix_getsid

Получение идентификатора sid процесса

int posix_getsid (int pid)

Если pid равен 0, то возвращается идентификатор sid текущего процесса.

Это не функция POSIX, но она распространена в системах BSD и System V. Если она не поддерживается системой, то РНР всегда будет возвращать FALSE.

posix_uname

Получение информации о системе

array posix_uname (void )

Возвращает массив, содержащий следующие элементы:

  • sysname — название операционной системы (например, Linux);
  • nodename — имя системы (например, valiant);
  • release — версию операционной системы (например, 2.2.10);
  • version — дату создания (например, #4 Tue Jul 20 17:01:36 MEST 1999);
  • machine — архитектуру системы (например, i586);
  • domainname — имя домена DNS (например, php.net);

domainname — это расширение GNU, не являющееся частью POSIX.1, поэтому этот элемент доступен только на системах GNU или при использовании библиотеки GNU libc. Posix предупреждает, что формат значений может значительно различаться в разных системах.

posix_times

Получение времени процесса

array posix_times (void )

Возвращает ассоциативный массив строк, содержащих информацию

об использовании ресурсов CPU текущим процессом:

  • ticks — число тиков часов, прошедших с момента загрузки;
  • titime — время, расходуемое пользовательской частью текущего процесса;
  • stime — время, расходуемое системной частью текущего процесса;
  • cutime — общее время, расходуемое пользовательской частью текущего процесса и его дочерними процессами;
  • cstime — общее время, расходуемое системной частью текущего процесса и его дочерними процессами.

posix_stermid

Получение имени терминала ;

string posix_ctermid (void )

posix_ ttyname

Определение устройства терминала string posix_ttyname (int fd)

posix_ isatty

Проверка, является ли дескриптор файла терминалом

bool posix_isatty (int fd)

posix_ getcwd

Выяснение пути текущего каталога string posix_getcwd (void )

posix_mkfifo

Создание специального файла fifo (named pipe)

bool posix_getcwd (string pathname, int mode)

posix_getgrnam

Получение информации о группе по имени

array posix_getgrnam (string name)

posix_getgrgid

Получение информации о группе по идентификатору

array posix_getgrgid (int gid)

posix_getpwnam

Получение информации о пользователе по имени

array posix_getpwnam (string username)

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

Возвращаемый массив содержит следующие элементы:

  • name — имя пользователя username;
  • passwd — пароль пользователя в зашифрованном виде (иногда «*»);
  • uid — числовой идентификатор пользователя;
  • gid — числовой идентификатор группы пользователя. См. также posix_getgrgid();
  • gecos — устаревшее значение, но формализованное POSIX, содержащее информацию finger для систем Honeywell. Содержит перечисление через запятую (полное имя пользователя и, не всегда, рабочий и домашний телефон);
  • dir — абсолютный путь домашнего каталога пользователя;
  • shell — путь к программной оболочке пользователя по умолчанию.

posix_getpwuid

Получение информации о пользователе по идентификатору

array posix_getpwuid (int uid)

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

Структура возвращаемого массива аналогична таковому в функции posix_getpwnam().

posix_getrlimit

Получение массива информации об ограничениях ресурсов системы

array posix_getrlimit (void )

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

apache_lookup_uri

Запрос URI и получение о нем информации

class apache_lookup_uri (string filename)

Выполняет специальный запрос URI, указанный в аргументе filename. Функция позволяет узнать, как бы поступил сервер, получив соответствующий запрос. Возвращается объект, имеющий следующие свойства:

  • status — код статуса исполнения HTTP-запроса;
  • the_request — полный текст HTTP-запроса;
  • statusjline — строка, комментирующая статус исполнения HTTP-запроса;
  • method — метод HTTP-запроса;
  • content_type — MIME-тип возвращаемого содержимого;
  • handler — обработчик запроса;
  • uri — транслированный путь;
  • filename — локальное имя файла, к которому выполнялся запрос;
  • path_info — относительный путь, по которому запрашивался файл;
  • args — дополнительные аргументы HTTP-запроса;
  • boundary — границы;
  • no_cache — было ли запрещено кэширование полученного содержимого;
  • no_loca!_copy_allowed — допустим ли запрос;
  • send_bodyct — было ли отослано содержимое ответа;
  • bytes_sent — размер отосланного содержимого;
  • byterange — границы пересылаемого сегмента данных;
  • clength_unparsed uri — нстранслированный путь HTTP запроса;
  • mtime — время обработки запроса;
  • request_time — время получения запроса в формате Unix timestamp.

Функция работает, только если РНР установлен как модуль Apache.

<? var_dump(apache_lookup_un("/")); ?>

Выводит следующую информацию:

object(stdClass)(16) { ["status"]=>
int(200) ["the_request"]=>
stnng(23) "GET /ap/ap.php HTTP/1.1"
["method"]=> stnng(3) "GET"
["conter,t_type"]=> stnng(20)
"httpci/urn x-di rectory" ["un"]=>
stnng(l) "/" L"filename"]=>string(43)
"e:/apache/htdocs" ["path_info"]=>
stnng(l) "/" ["no_cache"]=>int(0)
["no_local_copy"]=> int(l)
["allowed"]=> int(O)
["sent_boclyct"]=> int(O)
["bytes_sent"]=> int(O) ["byterange"]=>
int(O) ["clength"]=> int(O)
["unparsed_uri"]=> stnng(l) "/"
["request_time"]=> int(990724810)
}

apgche_note

Определение примечания запроса

string apachejiote (string notejiame [, string note_value])

функция получаст и (если указан аргумент note_value) устанавливает JIOBOC значение из внутренней таблицы заметок Apache.

getgllheaders

Обработка заголовков запроса HTTP

аггаy getallheaders (void)

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

Заметьте: многие из переменных, которые можно получить данным способом, могут быть получены как стандартные переменные окружения CG1.

См. также phpinfo(). var (jump(getallheaders ()): Вьведет примерно следующее:

аггау(б) {
["Accept"]=> stnng(3) "*/*"
["Accept-Encoding"]=>
stnng(13) "gzip. deflate"
["Accept-Language"]=> string(2) "ru"
["Connection"]=> stnngil())
"Keep-Alive"
["Host"]=> string()) "locaihost"
r"iJser-Agent">> stnng(51)
"Mozilla/4.0 (compatible: MSIE
5.01; Windows NT 5 0)" }

В настоящее время функция работает, только если РНР установлен как модуль Apache.

virtual

Выполнение подзапроса Apache

int virtual (string filename)

Выпо.''"яет директиву SSI файлов <! -#include virtual ...-->, обрабатываемую модулем Apache modjndude. Это полезно для включения в текущий файл CGI сценариев или файлов .shtml. Если необходимо включить файл РНР, используйте директивы include() или require().

ascii2ebcdic

Преобразование строки ASCII в EBCDIC

int ascin2ebcdic (string ascii_str)

Функция доступна только в системах, поддерживающих EBCDIC (OS/390, BS2000). Возвращает строку ascii_str, конвертированную в двоичный формат EBCDIC.

См. также обратную функцию ebcdic2ascii().

ebcdic2ascii

Преобразование строки EBCDIC в ASCII

int ebcdic2ascii (string ebcdic_str)

Функция доступна только в системах, поддерживающих EBCDIC (OS/390, BS2000).

См. также обратную функцию ascii2ebcdic().

Клиентский модуль Satellite CORBA

Этот модуль используется для работы с удаленными объектами архитектуры CORBA. Добавьте в файл php.ini строку idl_directory=, в которой указан путь к файлам описания интерфейсов IDL.

OrbitObject

Класс доступа к объекту CORBA

new OrbitObject (string ior)

В аргументе ior указывается строка идентификатора удаленного объекта IOR (Interoperable Object Reference), обычно включающая его имя и адрес.

# Простой файл описания интерфейса
(IDL) объекта interface Mylnterface {
voTd Setlnfo (scnng info):
string Getlnfo():
attribute
      int value: }
<?php
$obj = new CrDitObject ($ior).
$obj->Set!nfo ("A 2GooD object"):
echo $obj->GetInto():
$obj->value = 42.
echo
      $obj->value: ?>

OrbitEnum

Класс перечисления CORBA

new OrbitEnum (string id)

В аргументе id указывается строка имени «перечисления», которая может представлять простое его имя (например, "МуЕпит") пли быть полным идентификатором депозитария (например, "IDL:MyEnum:1.0").

# Простой файл описания интерфейса
(IDL) перечислителя enum MyEnum {
a.b.c.d.e -N ) \ !*л <?
! Senum = new OrbitEnum ("MyEnum");
echo $enum->a./* выводит О */
echo $enurn->c;/* выводит 2 */
echo $enum->e;/* выводит 4 */ ?>

OrbitStruct

Класс структуры CORBA

new OrbitStruct (string id)

В аргументе id указывается строка имени структуры, которая может представлять простое ее имя (например, "MyStnict") или быть полным идентификатором депозитария (например, "IDL:MyStruct:1.0").

# Простой файл описания интерфейса
(IDL) структуры struct MyStruct (
short shortvalue: string stnngvalue. }:
interface Somelnterface {
void SetValues (MyStruct values);
MyStruct GetValuesO:
}
      <?php
$obj - new OrbitObject ($ior);
$inmal_values = new OrbitStruct
("IDL:MyStruct:1.0");
$imtial_values->shortvalue = 42.
$1n!t1al va1ues->str1ngvalue =
"HGTTG".
$obj->SetValues
      ($imtnal_values);
Svalues =• $obj->GetValues();
echo $values->shortvalue:
echo $values->stnngvalue: ?>

satellite_caught_exception

Проверка исключения прошлой функции bool satellite_caught_exception ()

Возвращает TRUE, если при выполнении предыдущей функции в никло исключение.

# Простой файл описания интерфейса
(IOL) exception OutOfCheeseError {
int parameter; }
interface Anotherlnterface {
void AskWhyO raises
(OutOfCheeseError): }
<?php $obj = new
OrbntObject ($тог);
$obj->Askwhy().
if (satellnte_caught_exception())
{ if ("IDL-.OutOfCheeseError
10" == satellite_exceptionjd())
{ Sexception =
satellite_exception_value();
echo $exception->parameter; )
} ?>

satellite_exception_id

Получение идентификатора депозитария последнего исключения

string satellite_exception_id ()

Возвращает строку идентификатора (например, "IDL:MyException:1.0".)

См. также sateTlite_caught exception().

satellite_exception_value

Получение структуры последнего исключения

OrbitStruct satellite_exception_value()

См. также sateTlite_cauglit_exception().

Разделяемая память

Данный набор функций позволяет РНР создавать, удалять, читать и записывать данные в разделяемые блоки памяти UNIX. С помощью разделяемой памяти можно осуществлять глобальный обмен данными между приложениями. В системах Windows эти функции не работают, так как там не поддерживается разделяемая память1. Для использования этих функций необходимо скомпилировать РНР с параметром — enable-shmop. В версиях РПР 4.0.3 и ниже эти функции имели префикс shm_.

<?php
' Sshmjd = shmop_open
(0xff3. "с". 0644. 100) if('$shmjd
) { echo "Couldn't create shared
memory segment\n": }
$shm_size = bhmop_size($shmjd):
echo "Был создан SHM Block
размером: ",$shm_size. "\n".
$shm_bytes_wntten = shmop_write
($shffl_i(J. "my shared memory block", 0);
if($shm_bytes_wntten =
strlenC'my shared memory block"))
{ echo "Невозможно записать
все данные\n". } $my_stnng =
shmop_read($shmjid. 0. $shm_size):
if(!$my_stnng) { echo "Невозможно
прочитать даннь:е\n". }
echo "Данные в блоке: ".
$my_stnng. "\n":
if(!shmop_delete(Ishm_1d))
{ echo "Невозможно
удалить блок памяти". }
shmop_close($shin_id): ?>

shmop_open

Создание или открытие блока разделяемой памяти

int shmop_open (int key, string flags, int mode, int size)

В аргументе key указывается системный идентификатор блока; во втором аргументе, flags, указывается вид операции:

  • "а" — открыть доступ к уже существующему блоку (IPC_EXCL);
  • "с" — создать новый блок (IPC_CREATE).

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

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

shmop_size

Получение размера блока разделяемой памяти

int shmop_size (int shmid)

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

shmop_read

Чтение данных из блока разделяемой памяти

string shmop_read (int shmid, int start, nnt count)

Возвращает прочитанную строку данных размером count байтов, начиная со смещения start, из блока, указанного дескриптором shmid.

shmop_write

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

int shmop_write (int shmid, string data, int offset)

Записывает строку данных data в блок, указанный дескриптором shmid, по относительному адресу (смещению от начала блока) offset.

shmop_delete

Удаление блока разделяемой памяти

int shmop_delete (int shmid)

В аргументе shmid указывается дескриптор блока.

В случае успеха возвращает 1, а при ошибке — 0.

shmop_close

Закрытие блока разделяемой памяти

int shmop_close (int shmid)

В аргументе shrald указывается дескриптор блока.

Семафоры

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

Операционные системы Unix имеют следующие ограничения:

  • SHMMAX — максимальный размер блока разделяемой памяти, обычно 131 072 байта;
  • SHMMIN — минимальный размер блока разделяемой памяти, обычно 1 байт;
  • SHMMNI — максимальное число блоков разделяемой памяти в системе, обычно 100;
  • SHMSEG — максимальное число блоков разделяемой памяти для одного процесса, обычно 6.

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

sem_get

Получение дескриптора семафора

int sem_get (int key [, int max_acquire [, int perm]])

Возвращает дескриптор семафора с идентификатором key или FALSE — при ошибке.

При отсутствии такого семафора он создается, и в аргументах тах_ acquire и perm можно задать: число процессов, которые могут заблокировать этот семафор (по умолчанию 1 — «никакой процесс, кроме данного»), и нрава доступа к нему (по умолчанию 0666).

См. также: sem_acquire() и sem_release().

sem_acquire

Блокировка семафора

int sem_acquire (int senMdentifier)

Возвращает TRUE или FALSE — при ошибке. Число процессов, которые одновременно могут заблокировать семафор, указывается при его создании (аргументом max_acquire), и если оно уже достигнуто, попытки блокировки отвергаются. После завершения процесса, если он не освобождает семафор, выдается предупреждение.

См. также: sera_get() и sem_release().

sem_release

Освобождение семафора

int sem_release (int sem_identifier)

Освобождает семафор, заблокированный ранее данным процессом. Возвращает TRUE или FALSE — при ошибке (с выдачей предупреждения). После освобождения семафора его снова можно заблокировать функцией sem_acqihre().

См. также: sera get() и sero_acquire().

shm_attach

Создание или открытие блока разделяемой памяти

int shm_attach (int key [, int memsize [, int perm]])

В аргументе key указывается системный идентификатор блока. В случае успеха функция возвращает дескриптор блока разделяемой памяти System V, используемый в последующих операциях с ним. Если такого блока не существует, то он создается, и тогда в аргументе memsize можно указать его размер в байтах. (Если значение не указывается, то создается блок размером 10 000 байт, размер по умолча-' нию можно также задать, добавив в файл конфигурации параметр sysvshm.initjnem=.) В аргументе perm можно указать права доступа (по умолчанию 0666).

Повторный вызов функции с тем же значением key создаст новый дескриптор на тот же блок (аргументы memsize и perm будут игнорироваться).

shm_detach

Закрытие блока разделяемой памяти

int shm_detach (int shm_identifier)

Данные блока shmjdentifier при закрытии сохраняются.

shm_remove

Удаление блока разделяемой памяти

int shm_remove (int shmjiclentifier)

Все данные блока shm_identifier уничтожаются.

shm_put_var

Добавление или обновление переменной в разделяемой памяти

int shm_put_var (int shm_identifier, int variable_key, mixed variable)

Присваивает значение PHP-переменной variable переменной в блоке разделяемой памяти (с дескриптором shm_identifier), имеющей идентификатор variable_key. Поддерживаются все типы переменных (double, int, string, array).

shm_get_var

Получение переменной из разделяемой памяти

mixed shm_get_var (int id, int variable_key)

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

shm_remove_var

Удаление переменной из разделяемой памяти int shm_remove_var (int id, int variable_key) Удаляет переменную variable_key и освобождает память.


<HTML><HEAD><TITLE>1.htm</TITLE><META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=WINDOWS-1251"><style>
.Title_1{
        text-align: left;
        font-family: Arial, Helvetica, sans-serif;
        font-size: 22px;
}
.Title_2{
        text-align: left;
        font-family: Arial, Helvetica, sans-serif;
        font-size: 20px;
        font-weight: bold;
}
.Title_3{
        text-align: left;
        font-family: Arial, Helvetica, sans-serif;
        font-size: 20px;
}
.Title_4{
        text-align: left;
        font-family: Arial, Helvetica, sans-serif;
        font-size: 18px;
        font-weight: bold;
}
.list{
        text-align: left;
        font-family: "Courier New", Courier, mono;
        font-size: 14px;
}
.Text   {
        font-family:  Arial, Helvetica, sans-serif;
        font-size: 16px;
}
.Text_Bold{
        font-family:  Arial, Helvetica, sans-serif;
        font-size: 16px;
        font-weight: bold;
}
.Text_italic{
        font-family:  Arial, Helvetica, sans-serif;
        font-size: 16px;
        font-style: italic;
}

.Picture {
        font-size: 16px;
        font-weight: bold;
        text-align: left;
        font-style: italic;
}
.Picture_i {
        text-align: left;
        font-weight: lighter;
}

.Prim {
        font-family:  Arial, Helvetica, sans-serif;
        font-size: 16px;
        font-style: italic;
}
.Menu {
        font-family:  Arial, Helvetica, sans-serif;
        font-size: 16px;
        font-style: normal;
        font-weight: bold;
        font-variant: normal;
        line-height: normal;
        list-style-type: square;

}
</style></HEAD><body   BGCOLOR="#bed0f4" class="Text" designtimesp=22125>

<table width="100%" border="0" class="Text" designtimesp=22126>
  <tr designtimesp=22127>
    <td designtimesp=22128><P class="Title_1" DESIGNTIMESP=22129><FONT face=Tahoma
      size=4 DESIGNTIMESP=22130><STRONG DESIGNTIMESP=22131>Взаимодействие с базами данных</STRONG></FONT>   </P>
      <ul designtimesp=22132>
        <li designtimesp=22133> <span class="Menu" designtimesp=22134><A href="#1" DESIGNTIMEURL="#1" DESIGNTIMESP=22135><FONT face=Tahoma
        size=2 DESIGNTIMESP=22136>ODBC </FONT> </a></span>
        <li class="Menu" designtimesp=22137> <A href="#2" DESIGNTIMEURL="#2" DESIGNTIMESP=22138><FONT face=Tahoma size=2 DESIGNTIMESP=22139>MySQL</FONT></a><FONT
        face=Tahoma size=2 DESIGNTIMESP=22140> </FONT>
        <li class="Menu" designtimesp=22141> <A href="#3" DESIGNTIMEURL="#3" DESIGNTIMESP=22142><FONT face=Tahoma size=2 DESIGNTIMESP=22143>mSQL</FONT></a><FONT
        face=Tahoma size=2 DESIGNTIMESP=22144> </FONT>
        <li class="Menu" designtimesp=22145> <A href="#4" DESIGNTIMEURL="#4" DESIGNTIMESP=22146><FONT face=Tahoma size=2 DESIGNTIMESP=22147>PostgreSQL</FONT></a><FONT
        face=Tahoma size=2 DESIGNTIMESP=22148> </FONT>
        <li class="Menu" designtimesp=22149> <A href="#5" DESIGNTIMEURL="#5" DESIGNTIMESP=22150><FONT face=Tahoma size=2 DESIGNTIMESP=22151>Microsoft SQL
        Server</FONT>  </a><FONT face=Tahoma size=2 DESIGNTIMESP=22152> </FONT>
        <li class="Menu" designtimesp=22153> <A href="#6" DESIGNTIMEURL="#6" DESIGNTIMESP=22154><FONT face=Tahoma size=2 DESIGNTIMESP=22155>InterBase</FONT></a><FONT
        face=Tahoma size=2 DESIGNTIMESP=22156> </FONT>
        <li class="Menu" designtimesp=22157> <A href="#7" DESIGNTIMEURL="#7" DESIGNTIMESP=22158><FONT face=Tahoma size=2 DESIGNTIMESP=22159>Informix</FONT></a><FONT
        face=Tahoma size=2 DESIGNTIMESP=22160> </FONT>
        <li class="Menu" designtimesp=22161> <A href="#8" DESIGNTIMEURL="#8" DESIGNTIMESP=22162><FONT face=Tahoma size=2 DESIGNTIMESP=22163>Ingres II</FONT> </a><FONT
        face=Tahoma size=2 DESIGNTIMESP=22164> </FONT>
        <li class="Menu" designtimesp=22165> <A href="#9" DESIGNTIMEURL="#9" DESIGNTIMESP=22166><FONT face=Tahoma size=2 DESIGNTIMESP=22167>Sybase</FONT></a><FONT
        face=Tahoma size=2 DESIGNTIMESP=22168> </FONT>
        <li class="Menu" designtimesp=22169> <A href="#10" DESIGNTIMEURL="#10" DESIGNTIMESP=22170><FONT face=Tahoma size=2 DESIGNTIMESP=22171>Oracle</FONT></a><FONT
        face=Tahoma size=2 DESIGNTIMESP=22172> </FONT>
        <li class="Menu" designtimesp=22173> <A href="#11" DESIGNTIMEURL="#11" DESIGNTIMESP=22174><FONT face=Tahoma size=2 DESIGNTIMESP=22175>Oracle 8</FONT> </a><FONT
        face=Tahoma size=2 DESIGNTIMESP=22176> </FONT>
        <li class="Menu" designtimesp=22177> <A href="#12" DESIGNTIMEURL="#12" DESIGNTIMESP=22178><FONT face=Tahoma size=2 DESIGNTIMESP=22179>dBase</FONT></a><FONT
        face=Tahoma size=2 DESIGNTIMESP=22180> </FONT>
        <li class="Menu" designtimesp=22181> <A href="#13" DESIGNTIMEURL="#13" DESIGNTIMESP=22182><FONT face=Tahoma size=2 DESIGNTIMESP=22183>DBM</FONT></a><FONT
        face=Tahoma size=2 DESIGNTIMESP=22184> </FONT>
        <li class="Menu" designtimesp=22185> <A href="#14" DESIGNTIMEURL="#14" DESIGNTIMESP=22186><FONT face=Tahoma size=2 DESIGNTIMESP=22187>Абстракция уровня
        dbm</FONT>  </a><FONT face=Tahoma size=2 DESIGNTIMESP=22188> </FONT>
        <li class="Menu" designtimesp=22189> <A href="#15" DESIGNTIMEURL="#15" DESIGNTIMESP=22190><FONT face=Tahoma size=2 DESIGNTIMESP=22191>filePro</FONT></a><FONT
        face=Tahoma size=2 DESIGNTIMESP=22192> </FONT>
        <li class="Menu" designtimesp=22193> <A href="#16" DESIGNTIMEURL="#16" DESIGNTIMESP=22194><FONT face=Tahoma size=2 DESIGNTIMESP=22195>Ovrimos SQL</FONT> </a><FONT
        face=Tahoma size=2 DESIGNTIMESP=22196> </FONT></li>
      </ul>
      <p class="Title_2" designtimesp=22197><a name="1" designtimesp=22198></a><FONT face=Tahoma size=2 DESIGNTIMESP=22199>ODBC </FONT> </p>
      <P DESIGNTIMESP=22200><FONT face=Tahoma size=2 DESIGNTIMESP=22201>В дополнение к поддержке
      обычных драйверов ODBC, данная группа функций позволяет работать с базами
      данных, поддерживающими так называемый интерфейс Unified ODBC. В число БД,
      использующих API Unified ODBC, входят: Adabas D (http://www.adabas.com),
      IBM DB2 (http://www.ibm.com/db2), iODBC (http://www.iodbc.org), Solid
      (http://www.solidtech.com) и Sybase SQL Anywhere (http://www. sybase.com).
      </FONT>

      </P>
      <P DESIGNTIMESP=22202><FONT face=Tahoma size=2 DESIGNTIMESP=22203>Схемы работы с различными
      БД практически идентичны и различаются только в отношении внутреннего
      функционирования серверов БД. </FONT>
              </P>
      <P DESIGNTIMESP=22204><FONT face=Tahoma size=2 DESIGNTIMESP=22205>См. также раздел
      «Инсталляция в системах Unix» относительно конфигурирования поддержки этих
      БД при компиляции. </FONT>
              </P>
      <P DESIGNTIMESP=22206><FONT face=Tahoma size=2 DESIGNTIMESP=22207>Заметьте, что
      использование драйверов ODBC снижает производительность и не является
      оправданным, если, конечно, вы не планируете менять БД вашего приложения
      достаточно часто. Более обоснованно использовать первичные функции РНР
      интерфейса соответствующей БД. </FONT>

             </P>
      <P DESIGNTIMESP=22208><FONT face=Tahoma size=2 DESIGNTIMESP=22209>Но что касается БД с
      интерфейсом Unified ODBC, то здесь не используются сами ODBC драйверы,
      просто все они используют единую архитектуру API, аналогичную ODBC.
      </FONT>

          </P>
      <P class="Text_Bold" DESIGNTIMESP=22210><FONT face=Tahoma
      size=2 DESIGNTIMESP=22211>odbc_connect </FONT>  </P>
      <P DESIGNTIMESP=22212><FONT face=Tahoma size=2 DESIGNTIMESP=22213>Подключение к источнику
      данных (БД) </FONT>      </P>
      <P DESIGNTIMESP=22214><FONT face=Tahoma size=2 DESIGNTIMESP=22215>int odbc_connect (string
      dsn. string user, string password [, int cursor J:ype]) </FONT>
         </P>
      <P DESIGNTIMESP=22216><FONT face=Tahoma size=2 DESIGNTIMESP=22217>Возвращает дескриптор
      подключения к БД (используемый последующими функциями) или О (FALSE) при
      ошибке. Одновременно можно открывать несколько подключений. В общем случае
      для открытия подключения необходимо указывать имя системного источника
      данных DSN, имя и пароль клиента. В Unix-системах иногда возникает
      проблема подключений, которая может быть устранена указали- </FONT>

               </P>
      <P DESIGNTIMESP=22218><FONT face=Tahoma size=2 DESIGNTIMESP=22219> ем параметров подключения в одной строке аргумента dsn в виде<br designtimesp=22220>
        «DSN=DataSource:UID=UserName;PWD=Password».</FONT> </P>
      <P DESIGNTIMESP=22221><FONT face=Tahoma size=2 DESIGNTIMESP=22222>В необязательном
      четвертом аргументе можно указать тип курсора БД, и это часто помогает
      решить проблемы с некоторыми БД; например, при попытке выполнения хранимых
      процедур (при вызове которых возникает ошибка типа: "Cannot open a cursor
      on a stored procedure that has anything other than a single select
      statement in it"), и в таких случаях может помочь указание типа курсора
      SQL_CUR_ USE_ODBC. Тип курсора может быть указан одной из следующих
      констант: </FONT>

            </P>
      <ul designtimesp=22223>
        <li designtimesp=22224><FONT face=Tahoma size=2 DESIGNTIMESP=22225>SQL_CUR_USE_IF_NEEDED;
        </FONT>
        <li designtimesp=22226><FONT face=Tahoma size=2 DESIGNTIMESP=22227>SQL_CUR_USE_ODBC;
        </FONT>
        <li designtimesp=22228><FONT face=Tahoma size=2 DESIGNTIMESP=22229>SQL_CUR_USE_DRIVER;
        </FONT>
        <li designtimesp=22230><FONT face=Tahoma size=2 DESIGNTIMESP=22231>SQL_CUR_DEFAULT.
        </FONT>  </li>
      </ul>
      <P class="Text_Bold" DESIGNTIMESP=22232><FONT face=Tahoma
      size=2 DESIGNTIMESP=22233>odbc_pconnect </FONT>  </P>
      <P DESIGNTIMESP=22234><FONT face=Tahoma size=2 DESIGNTIMESP=22235>Создание устойчивого
      подключения </FONT>    </P>
      <P DESIGNTIMESP=22236><FONT face=Tahoma size=2 DESIGNTIMESP=22237>int odbc_pconnect (string
      dsn, string user, string password [, \ int cursor_type]) </FONT>
         </P>
      <P DESIGNTIMESP=22238><FONT face=Tahoma size=2 DESIGNTIMESP=22239>Возвращает дескриптор
      подключения к БД или FALSE — при ошибке. </FONT>          </P>
      <P DESIGNTIMESP=22240><FONT face=Tahoma size=2 DESIGNTIMESP=22241>Перед подключением
      функция пытается проверить, имеется ли уже открытое (устойчивое)
      подключение с параметрами (имя источника данных, пользователя и пароль),
      аналогичными указанным. Если такое подключение обнаруживается, то
      возвращается его идентификатор вместо создания нового подключения.
      </FONT>

      </P>
      <P DESIGNTIMESP=22242><FONT face=Tahoma size=2 DESIGNTIMESP=22243>При завершении сценария
      подключение не закрывается, а остается действительным для дальнейшего
      использования. Но устойчивые подключения не работают, если РНР запускается
      в режиме CGI. </FONT>

              </P>
      <P class="Text_Bold" DESIGNTIMESP=22244><FONT face=Tahoma
      size=2 DESIGNTIMESP=22245>odbc_close </FONT>  </P>
      <P DESIGNTIMESP=22246><FONT face=Tahoma size=2 DESIGNTIMESP=22247>Закрытие сеанса
      подключения ODBC </FONT>     </P>
      <P DESIGNTIMESP=22248><FONT face=Tahoma size=2 DESIGNTIMESP=22249>void odbc_close (int
      connection_id) </FONT>     </P>
      <P DESIGNTIMESP=22250><FONT face=Tahoma size=2 DESIGNTIMESP=22251>Заметьте, при имеющихся
      незавершенных транзакциях функция не закрывает подключение. </FONT>
         </P>
      <P class="Text_Bold" DESIGNTIMESP=22252><FONT face=Tahoma
      size=2 DESIGNTIMESP=22253>odbc_close_all </FONT>  </P>
      <P DESIGNTIMESP=22254><FONT face=Tahoma size=2 DESIGNTIMESP=22255>Закрытие всех подключений
      ODBC </FONT>     </P>
      <P DESIGNTIMESP=22256><FONT face=Tahoma size=2 DESIGNTIMESP=22257>void
      odbc_close_aTI(void); </FONT>   </P>
      <P class="Text_Bold" DESIGNTIMESP=22258><FONT face=Tahoma
      size=2 DESIGNTIMESP=22259>odbc_cursor </FONT>  </P>
      <P DESIGNTIMESP=22260><FONT face=Tahoma size=2 DESIGNTIMESP=22261>Определение типа курсора
      для подключения </FONT>      </P>
      <P DESIGNTIMESP=22262><FONT face=Tahoma size=2 DESIGNTIMESP=22263>string odbc_cursor (int
      result_id) </FONT>     </P>
      <P DESIGNTIMESP=22264><FONT face=Tahoma size=2 DESIGNTIMESP=22265>Возвращает имя курсора,
      используемого в подключении result_ld. </FONT>        </P>
      <P class="Text_Bold" DESIGNTIMESP=22266><FONT face=Tahoma size=2 DESIGNTIMESP=22267>odbc_do
      </FONT>  </P>
      <P DESIGNTIMESP=22268><FONT face=Tahoma size=2 DESIGNTIMESP=22269>Синоним odbc_exec
      </FONT>   </P>
      <P DESIGNTIMESP=22270><FONT face=Tahoma size=2 DESIGNTIMESP=22271>int odbc_do (int conn_id,
      string query) </FONT>       </P>
      <P class="Text_Bold" DESIGNTIMESP=22272><FONT face=Tahoma size=2 DESIGNTIMESP=22273>odbc_exec
      </FONT>  </P>
      <P DESIGNTIMESP=22274><FONT face=Tahoma size=2 DESIGNTIMESP=22275>Выполнение запроса SQL
      </FONT>    </P>
      <P DESIGNTIMESP=22276><FONT face=Tahoma size=2 DESIGNTIMESP=22277>int odbc_exec (int
      connection_id, string query_string) </FONT>       </P>
      <P DESIGNTIMESP=22278><FONT face=Tahoma size=2 DESIGNTIMESP=22279>Возвращает дескриптор
      набора записей, возвращенных запросом query_string, или FALSE — при
      ошибке. Параметр connectionjid должен быть ранее успешно возвращен
      функцией odbc_connect() или odbc_pconnect(). </FONT>

             </P>
      <P DESIGNTIMESP=22280><FONT face=Tahoma size=2 DESIGNTIMESP=22281>См. также: odbc_prepare()
      и odbc_execute(). </FONT>      </P>
      <P class="Text_Bold" DESIGNTIMESP=22282><FONT face=Tahoma
      size=2 DESIGNTIMESP=22283>odbc_prepare </FONT> </P>
      <P DESIGNTIMESP=22284><FONT face=Tahoma size=2 DESIGNTIMESP=22285>Подготовка запроса
      </FONT>   </P>
      <P DESIGNTIMESP=22286><FONT face=Tahoma size=2 DESIGNTIMESP=22287>int odbc_prepare (int
      connection_id, string query_string)[ </FONT>       </P>
      <P DESIGNTIMESP=22288><FONT face=Tahoma size=2 DESIGNTIMESP=22289>Функция возвращает
      дескриптор запроса, который затем исполь зуется в функции odbc_execute()
      для его исполнения, или FALSE — в случае ошибки. </FONT>

      </P>
      <P class="Text_Bold" DESIGNTIMESP=22290><FONT face=Tahoma
      size=2 DESIGNTIMESP=22291>odbc_execute </FONT>  </P>
      <P DESIGNTIMESP=22292><FONT face=Tahoma size=2 DESIGNTIMESP=22293>Выполнение
      подготовленного запроса </FONT>    </P>
      <P DESIGNTIMESP=22294><FONT face=Tahoma size=2 DESIGNTIMESP=22295>int odbc_execute (int
      result_id [, array parameters_array]) </FONT>        </P>
      <P DESIGNTIMESP=22296><FONT face=Tahoma size=2 DESIGNTIMESP=22297>Выполняет запрос
      resu1t_id, подготовленный функцией odbc_prepare(). Возвращает TRUE или
      FALSE — при ошибке. В массиве parameters_array можно указать параметры
      запроса, если они требуются. </FONT>

              </P>
      <P class="Text_Bold" DESIGNTIMESP=22298><FONT face=Tahoma
      size=2 DESIGNTIMESP=22299>odbc_autocommit </FONT>  </P>
      <P DESIGNTIMESP=22300><FONT face=Tahoma size=2 DESIGNTIMESP=22301>Переключение режима
      транзакций autocommit </FONT>     </P>
      <P DESIGNTIMESP=22302><FONT face=Tahoma size=2 DESIGNTIMESP=22303>int odbc_autocommit (int
      connection_id [, int OnOff]) </FONT>        </P>
      <P DESIGNTIMESP=22304><FONT face=Tahoma size=2 DESIGNTIMESP=22305>Если не указывается
      аргумент OnOff, функция возвращает текущее состояние auto-commit для
      подключения connection_id. True означает «разрешено», a FALSE — «не
      разрешено» или произошла ошибка. </FONT>

                </P>
      <P DESIGNTIMESP=22306><FONT face=Tahoma size=2 DESIGNTIMESP=22307>Если в значении аргумента
      OnOff указывается значение TRUE, то последующие запросы исполняются
      незамедлительно, если FALSE — то они откладываются до вызова функции
      odbc_commit() (таким образом формируя транзакцию). При этом возвращается
      TRUE или FALSE — при ошибке. </FONT>

                </P>
      <P DESIGNTIMESP=22308><FONT face=Tahoma size=2 DESIGNTIMESP=22309>По умолчанию вес запросы
      исполняются незамедлительно, и запрещение состояния auto-commit
      равносильно началу транзакции. </FONT>
            </P>
      <P DESIGNTIMESP=22310><FONT face=Tahoma size=2 DESIGNTIMESP=22311>См. также: odbc_commit()
      и odbc_rollback(). </FONT>      </P>
      <P class="Text_Bold" DESIGNTIMESP=22312><FONT face=Tahoma
      size=2 DESIGNTIMESP=22313>odbc_commit </FONT>  </P>
      <P DESIGNTIMESP=22314><FONT face=Tahoma size=2 DESIGNTIMESP=22315>Завершение транзакции
      </FONT>   </P>
      <P DESIGNTIMESP=22316><FONT face=Tahoma size=2 DESIGNTIMESP=22317>int odbc_commit (int
      connectiorMd) </FONT>     </P>
      <P DESIGNTIMESP=22318><FONT face=Tahoma size=2 DESIGNTIMESP=22319>Выполняет все отложенные
      запросы (транзакцию) для подключения connectiorMd и возвращает TRUE или
      FALSE — при ошибке. </FONT>
                </P>
      <P class="Text_Bold" DESIGNTIMESP=22320><FONT face=Tahoma
      size=2 DESIGNTIMESP=22321>odbc_rollback </FONT>  </P>
      <P DESIGNTIMESP=22322><FONT face=Tahoma size=2 DESIGNTIMESP=22323>Отмена транзакции
      </FONT>   </P>
      <P DESIGNTIMESP=22324><FONT face=Tahoma size=2 DESIGNTIMESP=22325>int odbc_rollback (int
      connection_id) </FONT>     </P>
      <P DESIGNTIMESP=22326><FONT face=Tahoma size=2 DESIGNTIMESP=22327>Отменяет псе отложенные
      запросы (транзакцию) для подключения connection_id и возвращает TRUE или
      FALSE — при ошибке. </FONT>
                </P>
      <P class="Text_Bold" DESIGNTIMESP=22328><FONT face=Tahoma
      size=2 DESIGNTIMESP=22329>odbc_num_rows </FONT>  </P>
      <P DESIGNTIMESP=22330><FONT face=Tahoma size=2 DESIGNTIMESP=22331>Получение числа
      возвращенных записей </FONT>     </P>
      <P DESIGNTIMESP=22332><FONT face=Tahoma size=2 DESIGNTIMESP=22333>int odbc_num_rows (int
      resulted) </FONT>     </P>
      <P DESIGNTIMESP=22334><FONT face=Tahoma size=2 DESIGNTIMESP=22335>; В аргументе указывается
      дескриптор результата, возвращенный ODBC ' запросом. При ошибке
      возвращается -1. Для запросов INSERT, UPDATE и DELETE возвращается число
      вставленных, измененных, удаленных записей; для запроса SELECT — число
      возвращенных запросом записей (некоторые драйверы возвращают -1 вне
      зависимости от того, сколько записей было возвращено). </FONT>

                 </P>
      <P class="Text_Bold" DESIGNTIMESP=22336><FONT face=Tahoma
      size=2 DESIGNTIMESP=22337>odbc_num_fields </FONT>  </P>
      <P DESIGNTIMESP=22338><FONT face=Tahoma size=2 DESIGNTIMESP=22339>Определение числа полей в
      результате </FONT>      </P>
      <P DESIGNTIMESP=22340><FONT face=Tahoma size=2 DESIGNTIMESP=22341>int odbc_num_fields (int
      result_id) </FONT>     </P>
      <P DESIGNTIMESP=22342><FONT face=Tahoma size=2 DESIGNTIMESP=22343>В аргументе указывается
      дескриптор результата, возвращенный ODBC запросом (функцией odbc_exec()).
      Функция возвращает число полей (столбцов), содержащихся в наборе записей,
      возвращенных запросом, либо -1 в случае ошибки. </FONT>

                  </P>
      <P DESIGNTIMESP=22344><FONT face=Tahoma size=2 DESIGNTIMESP=22345>Обработка полей
      LONGVARBINARY определяется odbc_binmode(). </FONT>      </P>
      <P class="Text_Bold" DESIGNTIMESP=22346><FONT face=Tahoma
      size=2 DESIGNTIMESP=22347>odbc_result </FONT>  </P>
      <P DESIGNTIMESP=22348><FONT face=Tahoma size=2 DESIGNTIMESP=22349>Получение данных

      результата запроса </FONT>     </P>
      <P DESIGNTIMESP=22350><FONT face=Tahoma size=2 DESIGNTIMESP=22351>string odbc_result (int
      result_id, mixed field) </FONT>       </P>
      <P DESIGNTIMESP=22352><FONT face=Tahoma size=2 DESIGNTIMESP=22353>Возвращает содержимое
      поля, указанного аргументом field текущей записи. Поле может быть указано
      номером (начиная с 1) или именем: </FONT>
                  </P>
      <P class="list" DESIGNTIMESP=22354><FONT face=Tahoma size=2 DESIGNTIMESP=22355>$item_3 =   odbc_result ($Query_ID. 3); <br designtimesp=22356>
        $item_val =
      odbc_result ($Query_ID. "id"): <
        /FONT >    </P>
      <P DESIGNTIMESP=22357><FONT face=Tahoma size=2 DESIGNTIMESP=22358>Данные полей типа long
      или двоичные данные возвращаются согласно установкам функций
      odbc_binmode() и odbcJongreadlen(). </FONT>
            </P>
      <P class="Text_Bold" DESIGNTIMESP=22359><FONT face=Tahoma
      size=2 DESIGNTIMESP=22360>odbc_result_all </FONT>  </P>
      <P DESIGNTIMESP=22361><FONT face=Tahoma size=2 DESIGNTIMESP=22362>Распечатка результата
      запроса в таблице HTML </FONT>      </P>
      <P DESIGNTIMESP=22363><FONT face=Tahoma size=2 DESIGNTIMESP=22364>int odbc_result_all (int
      result_id [. string format]) </FONT>        </P>
      <P DESIGNTIMESP=22365><FONT face=Tahoma size=2 DESIGNTIMESP=22366>Возвращает число
      выведенных записей или FALSE — при ошибке. В аргументе result_id
      указывается дескриптор набора записей, возвращенный функцией odbc_exec(),
      а в строке format можно указать атрибуты тега &lt;TABLE ... &gt;.
      </FONT>

         </P>
      <P class="Text_Bold" DESIGNTIMESP=22367><FONT face=Tahoma
      size=2 DESIGNTIMESP=22368>odbc_fetch_row </FONT>  </P>
      <P DESIGNTIMESP=22369><FONT face=Tahoma size=2 DESIGNTIMESP=22370>Установка курсора текущей
      записи </FONT>     </P>
      <P DESIGNTIMESP=22371><FONT face=Tahoma size=2 DESIGNTIMESP=22372>int odbc_fetch_row (int
      resu!t_id [, int rowjiumber]) </FONT>        </P>
      <P DESIGNTIMESP=22373><FONT face=Tahoma size=2 DESIGNTIMESP=22374>Выбирает запись номер
      rowjiumber (или по умолчанию следующую) . из набора записей resultjid,
      возвращенного функциями odbc_do() или odbcjaxec(). Возвращает TRUE или
      FALSE — при ошибке (например, когда записи с таким номером не существует).
      Последующие вызовы odbc_result() будут возвращать данные из выбранной
      записи. Нумерация начинается с 0. Не все драйверы допускают произвольный
      выбор записи.</FONT>

           </P>
      <P class="list" DESIGNTIMESP=22375><FONT face=Tahoma size=2 DESIGNTIMESP=22376>$сnn =   odbc_conrect<br designtimesp=22377>
        ("MyDSN"."root" "passI23"): <br designtimesp=22378>
        $rs = odbcjBxecdcnn. "SELECT * FROM tbll").<br designtimesp=22379>
        echo "Записей. ". <br designtimesp=22380>
        $nr =
          odbc_num_rows($rs). <br designtimesp=22381>
        echo ".иполей: ". <br designtimesp=22382>
        $nf - odbc_num_fields($rs); <br designtimesp=22383>
        // распечатать в виде [n]<br designtimesp=22384>
        'aaa'. '666'. 'ввв'. for($r=l; $r&lt;=$nr; $r++) <br designtimesp=22385>
        { // записи echo "\n[$r] ". <br designtimesp=22386>
        odbc_fetch_row($rs.$r). <br designtimesp=22387>
        for($f=l: $f&lt;=$nf: $f++) <br designtimesp=22388>
        // поля echo "'",<br designtimesp=22389>
        odbc
      result(Srs.$f). "'.": } </FONT>
            </P>
      <P class="Text_Bold" DESIGNTIMESP=22390><FONT face=Tahoma
      size=2 DESIGNTIMESP=22391>odbc_fetch_into</FONT> </P>
      <P DESIGNTIMESP=22392><FONT face=Tahoma size=2 DESIGNTIMESP=22393>Занесение полученной
      записи в массив </FONT>      </P>
      <P DESIGNTIMESP=22394><FONT face=Tahoma size=2 DESIGNTIMESP=22395>int odbc_fetch_into (int
      result id [, int rownumber. array resu"lt_array]) </FONT>
      </P>
      <P DESIGNTIMESP=22396><FONT face=Tahoma size=2 DESIGNTIMESP=22397>Заносит поля записи номер
      rownumber из набора записей result_id в элементы массива resu"lt_array.
      Возвращает число полей набора записей (результата запроса) или FALSE — при
      ошибке. </FONT>

              </P>
      <P class="list" DESIGNTIMESP=22398><FONT face=Tahoma size=2 DESIGNTIMESP=22399>$cnn =   odbc_connect<br designtimesp=22400>
        ( 'MyDSN"."root"."pass!23"). <br designtimesp=22401>
        $rs = odbc_exec<br designtimesp=22402>
        ($cnn."SELECT * FROM tbll"). <br designtimesp=22403>
        for($r=l; $r&lt;=odbc_num_rows<br designtimesp=22404>
        ($rs): $r++) { odbc_fetch_into($rs.$r.$arr):<br designtimesp=22405>
        $ar[]=$arr <br designtimesp=22406>
        // занести набор
      записей в двухмерный массив </FONT>
               </P>
      <P class="Text_Bold" DESIGNTIMESP=22407><FONT face=Tahoma size=2 DESIGNTIMESP=22408>odbc_
      field_name </FONT>   </P>
      <P DESIGNTIMESP=22409><FONT face=Tahoma size=2 DESIGNTIMESP=22410>Определение имени поля
      </FONT>    </P>
      <P DESIGNTIMESP=22411><FONT face=Tahoma size=2 DESIGNTIMESP=22412>string odbc_field_name
      (int result_id, int field_number) </FONT>       </P>
      <P DESIGNTIMESP=22413><FONT face=Tahoma size=2 DESIGNTIMESP=22414>Возвращает имя поля по
      его номеру field_number в наборе записей result_id. Нумерация начинается с
      1. При ошибке возвращает FALSE. </FONT>
                </P>
      <P class="Text_Bold" DESIGNTIMESP=22415><FONT face=Tahoma
      size=2 DESIGNTIMESP=22416>odbc_field_num </FONT>  </P>
      <P DESIGNTIMESP=22417><FONT face=Tahoma size=2 DESIGNTIMESP=22418>Определение порядкового
      номера поля </FONT>     </P>
      <P DESIGNTIMESP=22419><FONT face=Tahoma size=2 DESIGNTIMESP=22420>int odbc_field_num (int
      result_id, string field_name) </FONT>       </P>
      <P DESIGNTIMESP=22421><FONT face=Tahoma size=2 DESIGNTIMESP=22422>Возвращает номер поля по
      его имени field_name в наборе записей result_id. Нумерация начинается с 1.
      При ошибке возвращает FALSE. </FONT>
                </P>
      <P class="Text_Bold" DESIGNTIMESP=22423><FONT face=Tahoma
      size=2 DESIGNTIMESP=22424>odbc_field_type </FONT>  </P>
      <P DESIGNTIMESP=22425><FONT face=Tahoma size=2 DESIGNTIMESP=22426>Получение типа данных
      поля </FONT>     </P>
      <P DESIGNTIMESP=22427><FONT face=Tahoma size=2 DESIGNTIMESP=22428>string odbc_field_type
      (int resulted, int fieldjiumber) </FONT>       </P>
      <P DESIGNTIMESP=22429><FONT face=Tahoma size=2 DESIGNTIMESP=22430>Возвращает SQL-тип поля с
      номером field_number в наборе записей result_id. Нумерация начинается с 1.
      При ошибке возвращает FALSE. </FONT>
                </P>
      <P class="Text_Bold" DESIGNTIMESP=22431><FONT face=Tahoma
      size=2 DESIGNTIMESP=22432>odbc_field_len </FONT>  </P>
      <P DESIGNTIMESP=22433><FONT face=Tahoma size=2 DESIGNTIMESP=22434>Получение длины
      (точности) поля </FONT>     </P>
      <P DESIGNTIMESP=22435><FONT face=Tahoma size=2 DESIGNTIMESP=22436>int odbc_field_len (int
      resultjid, int fieldjiumber) </FONT>       </P>
      <P DESIGNTIMESP=22437><FONT face=Tahoma size=2 DESIGNTIMESP=22438>См. также:
      odbc_field_scale(). </FONT>   </P>
      <P class="Text_Bold" DESIGNTIMESP=22439><FONT face=Tahoma
      size=2 DESIGNTIMESP=22440>odbc_field_precision </FONT>  </P>
      <P DESIGNTIMESP=22441><FONT face=Tahoma size=2 DESIGNTIMESP=22442>Синоним odbc_fieldjen()
      </FONT>   </P>
      <P DESIGNTIMESP=22443><FONT face=Tahoma size=2 DESIGNTIMESP=22444>string
      odbc_field_precision (int result_id, int field_number) </FONT>       </P>
      <P class="Text_Bold" DESIGNTIMESP=22445><FONT face=Tahoma
      size=2 DESIGNTIMESP=22446>odbc_field_scale </FONT> </P>
      <P DESIGNTIMESP=22447><FONT face=Tahoma size=2 DESIGNTIMESP=22448>Определение точности поля
      </FONT>    </P>
      <P DESIGNTIMESP=22449><FONT face=Tahoma size=2 DESIGNTIMESP=22450>string odbc_field_scale
      (int result_id, int field_number) </FONT>       </P>
      <P DESIGNTIMESP=22451><FONT face=Tahoma size=2 DESIGNTIMESP=22452>Функция возвращает число
      сохраняемых десятичных знаков после запятой для полей дробных чисел.
      </FONT>
            </P>
      <P class="Text_Bold" DESIGNTIMESP=22453><FONT face=Tahoma
      size=2 DESIGNTIMESP=22454>odbc_free_result </FONT>  </P>
      <P DESIGNTIMESP=22455><FONT face=Tahoma size=2 DESIGNTIMESP=22456>Освобождение ресурсов,
      занятых набором записей </FONT>      </P>
      <P DESIGNTIMESP=22457><FONT face=Tahoma size=2 DESIGNTIMESP=22458>int odbcjreej-esult (Int
      result_id) </FONT>     </P>
      <P DESIGNTIMESP=22459><FONT face=Tahoma size=2 DESIGNTIMESP=22460>Всегда возвращает TRUE.
      Поскольку при завершении сценария освобождаются вес выделенные ему
      ресурсы, использовать данную функцию имеет смысл только в случае крайней
      экономии памяти, расходуемой сценарием. </FONT>

               </P>
      <P DESIGNTIMESP=22461><FONT face=Tahoma size=2 DESIGNTIMESP=22462>Если транзакция была
      начата, но не завершена (см. odbc_autocommit()), данная функция отменяет
      ее. </FONT>
            </P>
      <P class="Text_Bold" DESIGNTIMESP=22463><FONT face=Tahoma
      size=2 DESIGNTIMESP=22464>odbc_binmode </FONT>  </P>
      <P DESIGNTIMESP=22465><FONT face=Tahoma size=2 DESIGNTIMESP=22466>Определение обработки
      двоичных полей </FONT>     </P>
      <P DESIGNTIMESP=22467><FONT face=Tahoma size=2 DESIGNTIMESP=22468>int odbc_binmode (int
      result_id, int mode) </FONT>       </P>
      <P DESIGNTIMESP=22469><FONT face=Tahoma size=2 DESIGNTIMESP=22470>Функция управляет
      обработкой полей ODBC SQL типов BINARY, VARBINARY, LONGVARBINARY. Если
      resultjd равен О, то установки будут применяться к новым наборам записей.
      </FONT>

           </P>
      <ul designtimesp=22471>
        <li designtimesp=22472><FONT face=Tahoma size=2 DESIGNTIMESP=22473>ODBC_BINMODE_PASSTHRU
        - пропускать двоичные поля; </FONT>
        <li designtimesp=22474><FONT face=Tahoma size=2 DESIGNTIMESP=22475>ODBC_BINMODE_RETURN —
        возвращать двоичные поля как есть (по умолчанию); , </FONT>
        <li designtimesp=22476><FONT face=Tahoma size=2 DESIGNTIMESP=22477>ODBC_BINMODE_CONVERT -
        возвращать двоичные поля, конвертируя. </FONT>       </li>
      </ul>
      <P DESIGNTIMESP=22478><FONT face=Tahoma size=2 DESIGNTIMESP=22479>Пропуск (в нервом случае)
      означает, что при использовании функции odbc_fetch_into() для полей этого
      типа будет возвращаться nycтая строка. </FONT>
                </P>
      <P DESIGNTIMESP=22480><FONT face=Tahoma size=2 DESIGNTIMESP=22481>В последнем случае
      конвертация означает, что каждый байт данных будет представлен двумя
      шестнадцатсричными цифрами, например, двоичный байт 00000001 будет
      представлен как "01", а 11111111 — как "FF". </FONT>

      </P>
      <P DESIGNTIMESP=22482><FONT face=Tahoma size=2 DESIGNTIMESP=22483>Обработка длинных
      двоичных полей также зависит от параметра, установленного функцией
      odbcJongreadlen(). </FONT>
          </P>
      <TABLE FRAME="box" RULES="all" BORDER="1" DESIGNTIMESP=22484>
        <TR DESIGNTIMESP=22485>
          <TD DESIGNTIMESP=22486> <P DESIGNTIMESP=22487><FONT face=Tahoma
          size=2 DESIGNTIMESP=22488>Binmode</FONT></P></TD>
          <TD DESIGNTIMESP=22489> <P DESIGNTIMESP=22490><FONT face=Tahoma
            size=2 DESIGNTIMESP=22491>longreadlen</FONT></P></TD>
          <TD DESIGNTIMESP=22492> <P DESIGNTIMESP=22493><FONT face=Tahoma
          size=2 DESIGNTIMESP=22494>Результат</FONT></P></TD>
        </TR>
        <TR DESIGNTIMESP=22495>
          <TD DESIGNTIMESP=22496> <P DESIGNTIMESP=22497><FONT face=Tahoma size=2 DESIGNTIMESP=22498>ODBC BINMODE
            PASSTHRU</FONT>  </P></TD>
          <TD DESIGNTIMESP=22499> <P DESIGNTIMESP=22500><FONT face=Tahoma size=2 DESIGNTIMESP=22501>0</FONT></P></TD>
          <TD DESIGNTIMESP=22502> <P DESIGNTIMESP=22503><FONT face=Tahoma
            size=2 DESIGNTIMESP=22504>Пропускать</FONT></P></TD>
        </TR>
        <TR DESIGNTIMESP=22505>
          <TD DESIGNTIMESP=22506> <P DESIGNTIMESP=22507><FONT face=Tahoma size=2 DESIGNTIMESP=22508>ODBC BINMODE
            RETURN</FONT>  </P></TD>
          <TD DESIGNTIMESP=22509> <P DESIGNTIMESP=22510><FONT face=Tahoma size=2 DESIGNTIMESP=22511>0</FONT></P></TD>
          <TD DESIGNTIMESP=22512> <P DESIGNTIMESP=22513><FONT face=Tahoma
            size=2 DESIGNTIMESP=22514>Пропускать</FONT></P></TD>
        </TR>
        <TR DESIGNTIMESP=22515>
          <TD DESIGNTIMESP=22516> <P DESIGNTIMESP=22517><FONT face=Tahoma
            size=2 DESIGNTIMESP=22518>ODBC_BINMODE_CONVERT</FONT></P></TD>
          <TD DESIGNTIMESP=22519> <P DESIGNTIMESP=22520><FONT face=Tahoma size=2 DESIGNTIMESP=22521>0</FONT></P></TD>
          <TD DESIGNTIMESP=22522> <P DESIGNTIMESP=22523><FONT face=Tahoma
            size=2 DESIGNTIMESP=22524>Пропускать</FONT></P></TD>
        </TR>
        <TR DESIGNTIMESP=22525>
          <TD DESIGNTIMESP=22526> <P DESIGNTIMESP=22527><FONT face=Tahoma size=2 DESIGNTIMESP=22528>ODBC BINMODE
            PASSTHRU</FONT>  </P></TD>
          <TD DESIGNTIMESP=22529> <P DESIGNTIMESP=22530><FONT face=Tahoma size=2 DESIGNTIMESP=22531>&gt;0</FONT></P></TD>
          <TD DESIGNTIMESP=22532> <P DESIGNTIMESP=22533><FONT face=Tahoma
            size=2 DESIGNTIMESP=22534>Пропускать</FONT></P></TD>
        </TR>
        <TR DESIGNTIMESP=22535>
          <TD DESIGNTIMESP=22536> <P DESIGNTIMESP=22537><FONT face=Tahoma size=2 DESIGNTIMESP=22538>ODBC BINMODE
            RETURN</FONT>  </P></TD>
          <TD DESIGNTIMESP=22539> <P DESIGNTIMESP=22540><FONT face=Tahoma size=2 DESIGNTIMESP=22541>&gt;0</FONT></P></TD>
          <TD DESIGNTIMESP=22542> <P DESIGNTIMESP=22543><FONT face=Tahoma size=2 DESIGNTIMESP=22544>Возвращать как
            есть</FONT>  </P></TD>
        </TR>
        <TR DESIGNTIMESP=22545>
          <TD DESIGNTIMESP=22546> <P DESIGNTIMESP=22547><FONT face=Tahoma size=2 DESIGNTIMESP=22548>ODBC BINMODE
            CONVERT</FONT>  </P></TD>
          <TD DESIGNTIMESP=22549> <P DESIGNTIMESP=22550><FONT face=Tahoma size=2 DESIGNTIMESP=22551>&gt;0</FONT></P></TD>
          <TD DESIGNTIMESP=22552> <P DESIGNTIMESP=22553><FONT face=Tahoma
            size=2 DESIGNTIMESP=22554>Конвертировать</FONT></P></TD>
        </TR>
      </TABLE>
      <P class="Text_Bold" DESIGNTIMESP=22555><FONT face=Tahoma
      size=2 DESIGNTIMESP=22556>odbc_longreadlen </FONT>  </P>
      <P DESIGNTIMESP=22557><FONT face=Tahoma size=2 DESIGNTIMESP=22558>Обработка полей LONG
      </FONT>    </P>
      <P DESIGNTIMESP=22559><FONT face=Tahoma size=2 DESIGNTIMESP=22560>int odbc_longreadlen (int
      result_id, Int length) </FONT>       </P>
      <P DESIGNTIMESP=22561><FONT face=Tahoma size=2 DESIGNTIMESP=22562>Функция управляет
      обработкой полей ODBC SQL типов LONG, LONGVARBINARY. В аргументе length
      указывается, сколько байтов следует возвращать из полей данных типов. По
      .умолчанию возвращается 4096 байтов. </FONT>

               </P>
      <P DESIGNTIMESP=22563><FONT face=Tahoma size=2 DESIGNTIMESP=22564>См. также odbc_binmode().
      </FONT>    </P>
      <P class="Text_Bold" DESIGNTIMESP=22565><FONT face=Tahoma
      size=2 DESIGNTIMESP=22566>odbc_setoption </FONT>  </P>
      <P DESIGNTIMESP=22567><FONT face=Tahoma size=2 DESIGNTIMESP=22568>Настройка параметров ODBC
      </FONT>    </P>
      <P DESIGNTIMESP=22569><FONT face=Tahoma size=2 DESIGNTIMESP=22570>int odbc_setoption (int
      id. int function, int option, int parara) </FONT>           </P>
      <P DESIGNTIMESP=22571><FONT face=Tahoma size=2 DESIGNTIMESP=22572>Если в аргументе function
      указывается значение 1, то тогда настраиваются параметры подключения (в
      этом случае в аргументе id необходимо указывать дескриптор подключения);
      если указывается 2, то настраиваются параметры запроса (тогда в id
      указывается настраиваемый запрос). </FONT>

               </P>
      <P DESIGNTIMESP=22573><FONT face=Tahoma size=2 DESIGNTIMESP=22574>Это позволяет устранить
      проблемы с некоторыми своеобразными драйверами ODBC. Конечно, вы должны
      понимать, какой эффект будет иметь установка того или иного параметра для
      конкретного драйвера. Пользуйтесь документацией ODBC и не забывайте, что 1
      функциональность различных версий драйверов может различаться. </FONT>

          </P>
      <P DESIGNTIMESP=22575><FONT face=Tahoma size=2 DESIGNTIMESP=22576>Так как использование
      этой функции сильно зависит от специфики ODBC драйвера, использовать ее в
      публикуемых сценариях РНР не рекомендуется. Имейте также в виду, что
      некоторые параметры доступны только после открытия подключения или
      подготовки запроса. </FONT>

            </P>
      <P DESIGNTIMESP=22577><FONT face=Tahoma size=2 DESIGNTIMESP=22578>Аргумент option - номер
      устанавливаемого параметра, а рагат — ее значение. </FONT>
      </P>
      <P DESIGNTIMESP=22579><FONT face=Tahoma size=2 DESIGNTIMESP=22580>При ошибке возвращается
      FALSE; иначе TRUE. </FONT>       </P>
      <P class="list" DESIGNTIMESP=22581><FONT face=Tahoma size=2 DESIGNTIMESP=22582> // Номер параметра SQL_AUTOCOMM!T<br designtimesp=22583>
        в SQLSetConnectOptionO: 102<br designtimesp=22584>
        // Значение 1 для <br designtimesp=22585>
        SQL_AUTOCOMMIT - SQL_AUTOCOMMIT_ON. <br designtimesp=22586>
        // Следующая строка имеет тот же эффект, что и <br designtimesp=22587>
        // odbc_autocorrmit($conn. TRUE); <br designtimesp=22588>
        odbc_setoption (Sconn. 1. 102. 1): <br designtimesp=22589>
        // Номер параметра SQL_QUERY_TIMCOUT<br designtimesp=22590>
        в SQLSetStmtOption(): 0 <br designtimesp=22591>
        // Следующая строка устанавливает<br designtimesp=22592>
        предел выполнения запроса в 30 сек. <br designtimesp=22593>
        tresult = odbc_prepare ($conn. $sq!): <br designtimesp=22594>
        odbc_setoption (Sresult. 2. 0. 30). odbc_execute <br designtimesp=22595>
        (Sresult): </FONT>
         </P>
      <P class="Text_Bold" DESIGNTIMESP=22596><FONT face=Tahoma
      size=2 DESIGNTIMESP=22597>odbc_tables </FONT>  </P>
      <P DESIGNTIMESP=22598><FONT face=Tahoma size=2 DESIGNTIMESP=22599>Получение списка таблиц
      источника данных </FONT>      </P>
      <P DESIGNTIMESP=22600><FONT face=Tahoma size=2 DESIGNTIMESP=22601>int odbc_tables (Int
      connection_id [, string qualifier [, </FONT>         </P>
      <P DESIGNTIMESP=22602><FONT face=Tahoma size=2 DESIGNTIMESP=22603>string owner [, string
      name [, string table_type&gt;) </FONT>         </P>
      <P DESIGNTIMESP=22604><FONT face=Tahoma size=2 DESIGNTIMESP=22605>Возвращает в наборе
      записей перечисление имеющихся в источнике данных connection_id таблиц
      (определенного типа table_type). Возвращаемый набор записей содержит
      следующие ноля: </FONT>

            </P>
      <ul designtimesp=22606>
        <li designtimesp=22607><FONT face=Tahoma size=2 DESIGNTIMESP=22608>TABLE_QUALIFIER;
        </FONT>
        <li designtimesp=22609><FONT face=Tahoma size=2 DESIGNTIMESP=22610>TABLE_OWNER; </FONT>
        <li designtimesp=22611><FONT face=Tahoma size=2 DESIGNTIMESP=22612>TABLE_NAME — имя
        таблицы; </FONT>
        <li designtimesp=22613><FONT face=Tahoma size=2 DESIGNTIMESP=22614>TABLE_TYPE — тип
        таблицы; например, «TABLE», «VIEW»; </FONT>
        <li designtimesp=22615><FONT face=Tahoma size=2 DESIGNTIMESP=22616>REMARKS — примечания;
        например, «MySQL table». </FONT>       </li>
      </ul>
      <P DESIGNTIMESP=22617><FONT face=Tahoma size=2 DESIGNTIMESP=22618>Возвращаемый набор
      записей сортируется в порядке: TABLE_TYPE, TABLE_ QUALIFIER, TABLEJJWNER,
      TABLE_NAME. </FONT>
           </P>
      <P DESIGNTIMESP=22619><FONT face=Tahoma size=2 DESIGNTIMESP=22620>Аргументы owner и name
      могут содержать шаблоны («%» заменяет ноль и более символов, а «_» — один
      символ). </FONT>
                 </P>
      <P DESIGNTIMESP=22621><FONT face=Tahoma size=2 DESIGNTIMESP=22622>Чтобы получить
      перечисление возможных значений аргументов qua- / li-ficr, owner и table
      type, используется следующая семантика: </FONT>
               </P>
      <ul designtimesp=22623>
        <li designtimesp=22624><FONT face=Tahoma size=2 DESIGNTIMESP=22625>Если qualifier = "%",
        a owner и name — пустые строки, то возвраща- \ ется набор записей,
        содержащий перечисление возможных квали-фикаторов источника данных. (Все
        поля, за исключением TABLE_ QUALIFIER содержат пустые значения NULL.)
        Обычно это каталоги (БД), но не все БД используют их. </FONT>
        <li designtimesp=22626><FONT face=Tahoma size=2 DESIGNTIMESP=22627>Если owner = "%", a
        qualifier и name — пустые строки, то возвращается набор записей,
        содержащий перечисление владельцев источника данных. (Все поля, за
        исключением TABLE_OWNER, содержат пустые значения NULL.) </FONT>
        <li designtimesp=22628><FONT face=Tahoma size=2 DESIGNTIMESP=22629>Если tablejtype = "%",
        a qualifier, owner и name — пустые строки, то возвращается набор
        записей, содержащий перечисление возможных типов таблиц источника
        данных. (Все поля, за исключением TABLE_TYPE, содержат пустые значения
        NULL.) <  /FONT >

              </li>
      </ul>
      <P DESIGNTIMESP=22630><FONT face=Tahoma size=2 DESIGNTIMESP=22631>Если table_type не пустая
      строка, то она должна содержать перечисление через запятую типов
      запрашиваемых таблиц, (например, в виде: «'TABLE1.'VIEW'» или «TABLE,
      VIEW»). </FONT>

           </P>
      <P class="list" DESIGNTIMESP=22632><FONT face=Tahoma size=2 DESIGNTIMESP=22633>$rs =   odbc_tables($cnn. "".""."%".
        'TABLF" ): <br designtimesp=22634>
        // все
      имеющиеся таблицы </FONT>
            </P>
      <P DESIGNTIMESP=22635><FONT face=Tahoma size=2 DESIGNTIMESP=22636>См. также
      odbc_tableprivileges(). </FONT>   </P>
      <P class="Text_Bold" DESIGNTIMESP=22637><FONT face=Tahoma
      size=2 DESIGNTIMESP=22638>odbc_tableprivileges </FONT> </P>
      <P DESIGNTIMESP=22639><FONT face=Tahoma size=2 DESIGNTIMESP=22640>Получение списка
      привилегий таблиц </FONT>     </P>
      <P DESIGNTIMESP=22641><FONT face=Tahoma size=2 DESIGNTIMESP=22642>int odbc_tableprivileges
      (int connect1on_id [, string qualifier [, string owner [, string name]]])
      </FONT>
            </P>
      <P DESIGNTIMESP=22643><FONT face=Tahoma size=2 DESIGNTIMESP=22644>Возвращает список таблиц
      и присвоенных им привилегий в наборе записей или FALSE при ошибке.
      Возвращаемый набор записей сортируется в порядке: TA8LEJUALIFIER,
      TA8LE_OWNER, TABLEJAME и содержит следующие поля: </FONT>

               </P>
      <ul designtimesp=22645>
        <li designtimesp=22646><FONT face=Tahoma size=2 DESIGNTIMESP=22647>TABLE_QUALIFIER;
        </FONT>
        <li designtimesp=22648><FONT face=Tahoma size=2 DESIGNTIMESP=22649>TABLE_OWNER; </FONT>
        <li designtimesp=22650><FONT face=Tahoma size=2 DESIGNTIMESP=22651>TABLEJJAME; </FONT>
        <li designtimesp=22652><FONT face=Tahoma size=2 DESIGNTIMESP=22653>GRANTOR; </FONT>
        <li designtimesp=22654><FONT face=Tahoma size=2 DESIGNTIMESP=22655>GRANTEE; </FONT>
        <li designtimesp=22656><FONT face=Tahoma size=2 DESIGNTIMESP=22657>PRIVILEGE; </FONT>
        <li designtimesp=22658><FONT face=Tahoma size=2 DESIGNTIMESP=22659>IS_GRANTABLE.
        </FONT>  </li>
      </ul>
      <P DESIGNTIMESP=22660><FONT face=Tahoma size=2 DESIGNTIMESP=22661>Аргументы owner и name
      могут содержать шаблоны («%» заменяет .. ноль и более символов, а «_» —
      один символ). </FONT>
                  </P>
      <P DESIGNTIMESP=22662><FONT face=Tahoma size=2 DESIGNTIMESP=22663>См. описание odbc
      tables().</FONT>    </P>
      <P class="Text_Bold" DESIGNTIMESP=22664><FONT face=Tahoma
      size=2 DESIGNTIMESP=22665>odbc_statistics </FONT>  </P>
      <P DESIGNTIMESP=22666><FONT face=Tahoma size=2 DESIGNTIMESP=22667>Получение описания
      таблицы </FONT>    </P>
      <P DESIGNTIMESP=22668><FONT face=Tahoma size=2 DESIGNTIMESP=22669>int odbc_statisties (int
      connection_id, string qualifier, string owner, string tablejiame, int
      unique, int accuracy) </FONT>
              </P>
      <P DESIGNTIMESP=22670><FONT face=Tahoma size=2 DESIGNTIMESP=22671>Возвращает список таблиц
      и их индексов в наборе записей или FALSE — при ошибке. Возвращаемый набор
      записей сортируется в порядке: NONJJNIQUE, TYPE, INDEX_QUALIFIER,
      INDEXJAME и SEQ_IN_INDEX и содержит следующие ноля: </FONT>

      </P>
      <ul designtimesp=22672>
        <li designtimesp=22673><FONT face=Tahoma size=2 DESIGNTIMESP=22674>TABLE_QUALIFIER;
        </FONT>
        <li designtimesp=22675><FONT face=Tahoma size=2 DESIGNTIMESP=22676>TABLE JMIER; </FONT>
        <li designtimesp=22677><FONT face=Tahoma size=2 DESIGNTIMESP=22678>TABLE NAME; </FONT>
        <li designtimesp=22679><FONT face=Tahoma size=2 DESIGNTIMESP=22680>NONJJNIQUE; </FONT>
        <li designtimesp=22681><FONT face=Tahoma size=2 DESIGNTIMESP=22682>INDEX_QUALIFIER;
        </FONT>
        <li designtimesp=22683><FONT face=Tahoma size=2 DESIGNTIMESP=22684>INDEX_NAME; </FONT>
        <li designtimesp=22685><FONT face=Tahoma size=2 DESIGNTIMESP=22686>TYPE; </FONT>
        <li designtimesp=22687><FONT face=Tahoma size=2 DESIGNTIMESP=22688>SEQ_IN_INDEX; </FONT>
        <li designtimesp=22689><FONT face=Tahoma size=2 DESIGNTIMESP=22690>COLLATION; </FONT>
        <li designtimesp=22691><FONT face=Tahoma size=2 DESIGNTIMESP=22692>CARDINALITY; </FONT>
        <li designtimesp=22693><FONT face=Tahoma size=2 DESIGNTIMESP=22694>PAGES; </FONT>
        <li designtimesp=22695><FONT face=Tahoma size=2 DESIGNTIMESP=22696>FILTER_CONDITION.
        </FONT>  </li>
      </ul>
      <P class="Text_Bold" DESIGNTIMESP=22697><FONT face=Tahoma
      size=2 DESIGNTIMESP=22698>odbc_columns </FONT>  </P>
      <P DESIGNTIMESP=22699><FONT face=Tahoma size=2 DESIGNTIMESP=22700>Перечисление полей
      заданной таблицы </FONT>     </P>
      <P DESIGNTIMESP=22701><FONT face=Tahoma size=2 DESIGNTIMESP=22702>int odbc_columns (int
      connection_id [, string qualifier [, string owner [, string tablejiame [,
      string column_name&gt;) </FONT>
              </P>
      <P DESIGNTIMESP=22703><FONT face=Tahoma size=2 DESIGNTIMESP=22704>Возвращает список полей
      таблицы table_name в наборе записей или FALSE — при ошибке. Возвращаемый
      набор записей сортируется в порядке: TABLE_QUALIFIER, TABLE_OWNER и
      TABLEJAME и содержит следующие поля: </FONT>

               </P>
      <ul designtimesp=22705>
        <li designtimesp=22706><FONT face=Tahoma size=2 DESIGNTIMESP=22707>TABLE_QUALIFIER;
        </FONT>
        <li designtimesp=22708><FONT face=Tahoma size=2 DESIGNTIMESP=22709>TABLE_OWNER; </FONT>
        <li designtimesp=22710><FONT face=Tahoma size=2 DESIGNTIMESP=22711>TABLE_NAME; </FONT>
        <li designtimesp=22712><FONT face=Tahoma size=2 DESIGNTIMESP=22713>COLUMN_NAME; </FONT>
        <li designtimesp=22714><FONT face=Tahoma size=2 DESIGNTIMESP=22715>DATA_TYPE; </FONT>
        <li designtimesp=22716><FONT face=Tahoma size=2 DESIGNTIMESP=22717>TYPE_NAME; </FONT>
        <li designtimesp=22718><FONT face=Tahoma size=2 DESIGNTIMESP=22719>PRECISION; </FONT>
        <li designtimesp=22720><FONT face=Tahoma size=2 DESIGNTIMESP=22721>LENGTH; </FONT>
        <li designtimesp=22722><FONT face=Tahoma size=2 DESIGNTIMESP=22723>SCALE; </FONT>
        <li designtimesp=22724><FONT face=Tahoma size=2 DESIGNTIMESP=22725>RADIX; </FONT>
        <li designtimesp=22726><FONT face=Tahoma size=2 DESIGNTIMESP=22727>NULLABLE; </FONT>
        <li designtimesp=22728><FONT face=Tahoma size=2 DESIGNTIMESP=22729>REMARKS.
      </FONT>  </li>
      </ul>
      <P DESIGNTIMESP=22730><FONT face=Tahoma size=2 DESIGNTIMESP=22731>Аргументы owner,
      tablejname и columnjiame могут содержать шаблоны («%» заменяет ноль и
      более символов, а «_» — один символ). </FONT>
                  </P>
      <P DESIGNTIMESP=22732><FONT face=Tahoma size=2 DESIGNTIMESP=22733>См. также
      odbc_columnprivileges(). </FONT>    </P>
      <P class="Text_Bold" DESIGNTIMESP=22734><FONT face=Tahoma
      size=2 DESIGNTIMESP=22735>odbc_columnprivileges </FONT>  </P>
      <P DESIGNTIMESP=22736><FONT face=Tahoma size=2 DESIGNTIMESP=22737>Перечисление полей
      заданной таблицы с их привилегиями </FONT>        </P>
      <P DESIGNTIMESP=22738><FONT face=Tahoma size=2 DESIGNTIMESP=22739>int odbc_co1umnprivileges
      (int connection_id [, string qualifier [, string owner [, string
      table_name [, string column_name&gt;) </FONT>
                </P>
      <P DESIGNTIMESP=22740><FONT face=Tahoma size=2 DESIGNTIMESP=22741>Возвращает список полей
      таблицы table_name в наборе записей или FALSE — при ошибке. Возвращаемый
      набор записей сортируется в порядке: TABLE_QUALIFIER, TABLE_OWNER и
      TABLE_NAME и содержит следующие поля: </FONT>

               </P>
      <ul designtimesp=22742>
        <li designtimesp=22743><FONT face=Tahoma size=2 DESIGNTIMESP=22744>TABLE_QUALIFIER;
        </FONT>
        <li designtimesp=22745><FONT face=Tahoma size=2 DESIGNTIMESP=22746>TABLEJMER; </FONT>
        <li designtimesp=22747><FONT face=Tahoma size=2 DESIGNTIMESP=22748>TABLE_NAME; </FONT>
        <li designtimesp=22749><FONT face=Tahoma size=2 DESIGNTIMESP=22750>GRANTOR; </FONT>
        <li designtimesp=22751><FONT face=Tahoma size=2 DESIGNTIMESP=22752>GRANTEE; </FONT>
        <li designtimesp=22753><FONT face=Tahoma size=2 DESIGNTIMESP=22754>PRIVILEGE; </FONT>
        <li designtimesp=22755><FONT face=Tahoma size=2 DESIGNTIMESP=22756>IS_GRANTABLE.
        </FONT>  </li>
      </ul>
      <P DESIGNTIMESP=22757><FONT face=Tahoma size=2 DESIGNTIMESP=22758>Аргумент column_name
      может содержать шаблоны («%» заменяет ноль и более символов, а &lt;&lt;_»
      — один символ). </FONT>
                 </P>
      <P class="Text_Bold" DESIGNTIMESP=22759><FONT face=Tahoma
      size=2 DESIGNTIMESP=22760>odbc_gettypeinfo </FONT>  </P>
      <P DESIGNTIMESP=22761><FONT face=Tahoma size=2 DESIGNTIMESP=22762>Определение типов
      поддерживаемых данных </FONT>     </P>
      <P DESIGNTIMESP=22763><FONT face=Tahoma size=2 DESIGNTIMESP=22764>int odbc_gettypeinfo (Int
      connectien_id [, int data_type]) </FONT>        </P>
      <P DESIGNTIMESP=22765><FONT face=Tahoma size=2 DESIGNTIMESP=22766>Возвращает набор записей,
      содержащий перечисление поддерживаемых БД типов данных; если необходимо
      выяснить, поддерживается ли конкретный тип данных, его необходимо указать
      в аргументе data_type. При ошибке возвращается FALSE. </FONT>

         </P>
      <P DESIGNTIMESP=22767><FONT face=Tahoma size=2 DESIGNTIMESP=22768>А В наборе записей
      возвращаются следующие поля: </FONT>        </P>
      <ul designtimesp=22769>
        <li designtimesp=22770><FONT face=Tahoma size=2 DESIGNTIMESP=22771>TYPEJIAME; </FONT>
        <li designtimesp=22772><FONT face=Tahoma size=2 DESIGNTIMESP=22773>OATA_TYPE; </FONT>
        <li designtimesp=22774><FONT face=Tahoma size=2 DESIGNTIMESP=22775>PRECISION; </FONT>
        <li designtimesp=22776><FONT face=Tahoma size=2 DESIGNTIMESP=22777>LITERAL_PREFIX;
</FONT>
        <li designtimesp=22778><FONT face=Tahoma size=2 DESIGNTIMESP=22779>LITERAL_SUFFIX;
</FONT>
        <li designtimesp=22780><FONT face=Tahoma size=2 DESIGNTIMESP=22781>CREATE_PARAMS; </FONT>
        <li designtimesp=22782><FONT face=Tahoma size=2 DESIGNTIMESP=22783>NULLABLE; </FONT>
        <li designtimesp=22784><FONT face=Tahoma size=2 DESIGNTIMESP=22785>CASE_SENSITIVE;
</FONT>
        <li designtimesp=22786><FONT face=Tahoma size=2 DESIGNTIMESP=22787>SEARCHABLE; </FONT>
        <li designtimesp=22788><FONT face=Tahoma size=2 DESIGNTIMESP=22789>UNSIGNED_AnRIBUTE;
        </FONT>
        <li designtimesp=22790><FONT face=Tahoma size=2 DESIGNTIMESP=22791>MONEY; </FONT>
        <li designtimesp=22792><FONT face=Tahoma size=2 DESIGNTIMESP=22793>AUTO_INCREMENT;
</FONT>
        <li designtimesp=22794><FONT face=Tahoma size=2 DESIGNTIMESP=22795>LOCAL_TYPE_NAME;
        </FONT>
        <li designtimesp=22796><FONT face=Tahoma size=2 DESIGNTIMESP=22797>MINIMUM_SCALE; </FONT>
        <li designtimesp=22798><FONT face=Tahoma size=2 DESIGNTIMESP=22799>MAXIMUM_SCALE.
        </FONT>  </li>
      </ul>
      <P DESIGNTIMESP=22800><FONT face=Tahoma size=2 DESIGNTIMESP=22801>Записи сортируются по
      полям DATA_TYPE и TYPE_NAME. </FONT>        </P>
      <P class="Text_Bold" DESIGNTIMESP=22802><FONT face=Tahoma
      size=2 DESIGNTIMESP=22803>odbc_primarykeys </FONT>  </P>
      <P DESIGNTIMESP=22804><FONT face=Tahoma size=2 DESIGNTIMESP=22805>Подбор поля, способного
      быть первичным ключом таблицы </FONT>        </P>
      <P DESIGNTIMESP=22806><FONT face=Tahoma size=2 DESIGNTIMESP=22807>int odbc_primarykeys (int
      connection_id, string qualifier, string owner, string table) </FONT>
          </P>
      <P DESIGNTIMESP=22808><FONT face=Tahoma size=2 DESIGNTIMESP=22809>Возвращает набор записей,
      содержащий список полей, которые могут претендовать на роль первичного
      ключа таблицы table. При ошибке возвращается FALSE. </FONT>

      </P>
      <P DESIGNTIMESP=22810><FONT face=Tahoma size=2 DESIGNTIMESP=22811>В наборе записей
      возвращаются следующие поля: </FONT>       </P>
      <ul designtimesp=22812>
        <li designtimesp=22813><FONT face=Tahoma size=2 DESIGNTIMESP=22814>TABLE_QUALIFIER;
        </FONT>
        <li designtimesp=22815><FONT face=Tahoma size=2 DESIGNTIMESP=22816>TABLE_OWNER; </FONT>
        <li designtimesp=22817><FONT face=Tahoma size=2 DESIGNTIMESP=22818>TABLEJAME; </FONT>
        <li designtimesp=22819><FONT face=Tahoma size=2 DESIGNTIMESP=22820>COLUMN_NAME; </FONT>
        <li designtimesp=22821><FONT face=Tahoma size=2 DESIGNTIMESP=22822>KEYJEQ; </FONT>
        <li designtimesp=22823><FONT face=Tahoma size=2 DESIGNTIMESP=22824>PK_NAME.
      </FONT>  </li>
      </ul>
      <P class="Text_Bold" DESIGNTIMESP=22825><FONT face=Tahoma
      size=2 DESIGNTIMESP=22826>odbc_foreignkeys </FONT>  </P>
      <P DESIGNTIMESP=22827><FONT face=Tahoma size=2 DESIGNTIMESP=22828>Получение списка внешних
      ключей </FONT>     </P>
      <P DESIGNTIMESP=22829><FONT face=Tahoma size=2 DESIGNTIMESP=22830>int odbc_foreignkeys (int
      connection_id, string pk_qualifier, string pk_owner, string pk_table,
      string fk_qualifier, string fk_owner, string fk_table) </FONT>

         </P>
      <P DESIGNTIMESP=22831><FONT face=Tahoma size=2 DESIGNTIMESP=22832>Если pk_table содержит
      имя таблицы, то функция возвращает набор записей, содержащий первичный
      ключ этой таблицы и все внешние ключи (foreign keys), которые на него
      ссылаются. </FONT>

            </P>
      <P DESIGNTIMESP=22833><FONT face=Tahoma size=2 DESIGNTIMESP=22834>Если fk_tab!e содержит
      имя таблицы, то функция возвратцает набор записей, содержащий все внешние
      ключи этой таблицы и корреспондирующие первичные ключи в других таблицах.
      </FONT>

            </P>
      <P DESIGNTIMESP=22835><FONT face=Tahoma size=2 DESIGNTIMESP=22836>Если и pk_table и
      fk_table содержат имена таблиц, функция возвращает внешний ключ таблицы
      fk_table, который указывает на первичный ключ в таблице pk_table.
      </FONT>

         </P>
      <P DESIGNTIMESP=22837><FONT face=Tahoma size=2 DESIGNTIMESP=22838>В возвращаемом наборе
      записей содержатся следующие поля: </FONT>        </P>
      <ul designtimesp=22839>
        <li designtimesp=22840><FONT face=Tahoma size=2 DESIGNTIMESP=22841>PKTABLE_QUALIFIER;
        </FONT>
        <li designtimesp=22842><FONT face=Tahoma size=2 DESIGNTIMESP=22843>PKTABLE_OWNER; </FONT>
        <li designtimesp=22844><FONT face=Tahoma size=2 DESIGNTIMESP=22845>PKTABLEJJAME; </FONT>
        <li designtimesp=22846><FONT face=Tahoma size=2 DESIGNTIMESP=22847>PKCOLUMN_NAME; </FONT>
        <li designtimesp=22848><FONT face=Tahoma size=2 DESIGNTIMESP=22849>FKTABLE_QUALIFIER;
        </FONT>
        <li designtimesp=22850><FONT face=Tahoma size=2 DESIGNTIMESP=22851>FKTABLE_OWNER; </FONT>
        <li designtimesp=22852><FONT face=Tahoma size=2 DESIGNTIMESP=22853>FKTABLE_NAME; </FONT>
        <li designtimesp=22854><FONT face=Tahoma size=2 DESIGNTIMESP=22855>FKCOLUMN_NAME; </FONT>
        <li designtimesp=22856><FONT face=Tahoma size=2 DESIGNTIMESP=22857>KEYJEQ; </FONT>
        <li designtimesp=22858><FONT face=Tahoma size=2 DESIGNTIMESP=22859>UPDATE_RULE; </FONT>
        <li designtimesp=22860><FONT face=Tahoma size=2 DESIGNTIMESP=22861>DELETE_RULE; </FONT>
        <li designtimesp=22862><FONT face=Tahoma size=2 DESIGNTIMESP=22863>FK_NAME; . PKJWME.
        </FONT>    </li>
      </ul>
      <P class="Text_Bold" DESIGNTIMESP=22864><FONT face=Tahoma
      size=2 DESIGNTIMESP=22865>odbc_procedures </FONT>  </P>
      <P DESIGNTIMESP=22866><FONT face=Tahoma size=2 DESIGNTIMESP=22867>Получение списка хранимых
      процедур </FONT>     </P>
      <P DESIGNTIMESP=22868><FONT face=Tahoma size=2 DESIGNTIMESP=22869>int odbc_procedures (int
      connection_id [, string qualifier [, string owner [, string name]]])
      </FONT>
            </P>
      <P DESIGNTIMESP=22870><FONT face=Tahoma size=2 DESIGNTIMESP=22871>Возвращает список
      хранимых процедур name в наборе записей, содержащем следующие поля:
      </FONT>
          </P>
      <ul designtimesp=22872>
        <li designtimesp=22873><FONT face=Tahoma size=2 DESIGNTIMESP=22874>PROCEDURE_QUALIFIER;
        </FONT>
        <li designtimesp=22875><FONT face=Tahoma size=2 DESIGNTIMESP=22876>PROCEDUREJMER; </FONT>
        <li designtimesp=22877><FONT face=Tahoma size=2 DESIGNTIMESP=22878>PROCEDURE_NAME;
</FONT>
        <li designtimesp=22879><FONT face=Tahoma size=2 DESIGNTIMESP=22880>NUMJNPUTJ» ARAMS;
        </FONT>
        <li designtimesp=22881><FONT face=Tahoma size=2 DESIGNTIMESP=22882>NUM_OUTPUT_PARAMS;
        </FONT>
        <li designtimesp=22883><FONT face=Tahoma size=2 DESIGNTIMESP=22884>• NUM_RESULT_SETS;
        </FONT>
        <li designtimesp=22885><FONT face=Tahoma size=2 DESIGNTIMESP=22886>REMARKS; </FONT>
        <li designtimesp=22887><FONT face=Tahoma size=2 DESIGNTIMESP=22888>PROCEDURE_TYPE.
        </FONT>  </li>
      </ul>
      <P DESIGNTIMESP=22889><FONT face=Tahoma size=2 DESIGNTIMESP=22890>Аргументы owner и name
      могут содержать шаблоны («%» заменяет ноль и более символов, а «_» — один
      символ). </FONT>
                 </P>
      <P class="Text_Bold" DESIGNTIMESP=22891><FONT face=Tahoma
      size=2 DESIGNTIMESP=22892>odbc_procedurecolumns </FONT>  </P>
      <P DESIGNTIMESP=22893><FONT face=Tahoma size=2 DESIGNTIMESP=22894>Получение списка
      параметров хранимых процедур </FONT>      </P>
      <P DESIGNTIMESP=22895><FONT face=Tahoma size=2 DESIGNTIMESP=22896>int odbc_procedurecolumns
      (int connection_id [, string qualifier [, string owner [, string proc [,
      string column&gt;) </FONT>
                </P>
      <P DESIGNTIMESP=22897><FONT face=Tahoma size=2 DESIGNTIMESP=22898>Возвращает список
      хранимых процедур (с их входными и выходными параметрами и описанием
      возвращаемых ими полей) в наборе записей, содержащем следующие поля:
      </FONT>

         </P>
      <ul designtimesp=22899>
        <li designtimesp=22900><FONT face=Tahoma size=2 DESIGNTIMESP=22901>PROCEDURE_QUALIFIER;
        </FONT>
        <li designtimesp=22902><FONT face=Tahoma size=2 DESIGNTIMESP=22903>PROCEDURE J1WNER;
        </FONT>
        <li designtimesp=22904><FONT face=Tahoma size=2 DESIGNTIMESP=22905>PROCEDUREJAME; </FONT>
        <li designtimesp=22906><FONT face=Tahoma size=2 DESIGNTIMESP=22907>COLUMN_NAME; </FONT>
        <li designtimesp=22908><FONT face=Tahoma size=2 DESIGNTIMESP=22909>COLUMN_TYPE; </FONT>
        <li designtimesp=22910><FONT face=Tahoma size=2 DESIGNTIMESP=22911>DATATYPE; </FONT>
        <li designtimesp=22912><FONT face=Tahoma size=2 DESIGNTIMESP=22913>TYPEJAME; </FONT>
        <li designtimesp=22914><FONT face=Tahoma size=2 DESIGNTIMESP=22915>PRECISION; </FONT>
        <li designtimesp=22916><FONT face=Tahoma size=2 DESIGNTIMESP=22917>LENGTH; </FONT>
        <li designtimesp=22918><FONT face=Tahoma size=2 DESIGNTIMESP=22919>SCALE; </FONT>
        <li designtimesp=22920><FONT face=Tahoma size=2 DESIGNTIMESP=22921>RADIX; </FONT>
        <li designtimesp=22922><FONT face=Tahoma size=2 DESIGNTIMESP=22923>NULLABLt; </FONT>
        <li designtimesp=22924><FONT face=Tahoma size=2 DESIGNTIMESP=22925>REMARKS.
      </FONT>  </li>
      </ul>
      <P DESIGNTIMESP=22926><FONT face=Tahoma size=2 DESIGNTIMESP=22927>Записи сортируются по
      полям PROCEDURE_QUALIFIER, PROCEDURE_OWNER, PROCEDURE_NAME и COLUMNJYPE.
      </FONT>
          </P>
      <P DESIGNTIMESP=22928><FONT face=Tahoma size=2 DESIGNTIMESP=22929>Аргументы owner, ргос и
      column могут содержать шаблоны («%» заменяет ноль и более символов, а «_»
      — один символ). </FONT>
                  </P>
      <P class="Text_Bold" DESIGNTIMESP=22930><FONT face=Tahoma
      size=2 DESIGNTIMESP=22931>odbc_specialcolumns </FONT>  </P>
      <P DESIGNTIMESP=22932><FONT face=Tahoma size=2 DESIGNTIMESP=22933>Получение списка
      специальных полей </FONT>     </P>
      <P DESIGNTIMESP=22934><FONT face=Tahoma size=2 DESIGNTIMESP=22935>int odbc_specialcolumns
      (int connectionjd, int type. string qualifier, string owner, string table,
      int scope, int nullable) </FONT>
                </P>
      <P DESIGNTIMESP=22936><FONT face=Tahoma size=2 DESIGNTIMESP=22937>Если в аргументе type
      указано значение SQL_BEST_ROWID, возвращаются поля, уникально
      идентифицирующие каждую запись в таблице. </FONT>
               </P>
      <P DESIGNTIMESP=22938><FONT face=Tahoma size=2 DESIGNTIMESP=22939>Если в аргументе type
      указано значение SQLJ!OWVER, возвращаются оптимальные ноля, извлекая
      значения которых, можно уникально идентифицировать любую запись указанной
      таблицы (вне зависимости от изменений, производимых в таблице).
</FONT>

         </P>
      <P DESIGNTIMESP=22940><FONT face=Tahoma size=2 DESIGNTIMESP=22941>Поля возвращаются в
      наборе записей (сортируемом по полю SCOPE), содержащем следующие ноля:
      </FONT>
          </P>
      <ul designtimesp=22942>
        <li designtimesp=22943><FONT face=Tahoma size=2 DESIGNTIMESP=22944>SCOPE; </FONT>
        <li designtimesp=22945><FONT face=Tahoma size=2 DESIGNTIMESP=22946>COLUMN_NAME; </FONT>
        <li designtimesp=22947><FONT face=Tahoma size=2 DESIGNTIMESP=22948>DATAJYPE; </FONT>
        <li designtimesp=22949><FONT face=Tahoma size=2 DESIGNTIMESP=22950>TYPE_NAME; </FONT>
        <li designtimesp=22951><FONT face=Tahoma size=2 DESIGNTIMESP=22952>PRECISION; </FONT>
        <li designtimesp=22953><FONT face=Tahoma size=2 DESIGNTIMESP=22954>LENGTH; </FONT>
        <li designtimesp=22955><FONT face=Tahoma size=2 DESIGNTIMESP=22956>SCALE; </FONT>
        <li designtimesp=22957><FONT face=Tahoma size=2 DESIGNTIMESP=22958>PSEUDO_COLUMN.
        </FONT>  </li>
      </ul>
      <P class="Title_2" DESIGNTIMESP=22959> <a name="2" designtimesp=22960></a><FONT face=Tahoma size=2 DESIGNTIMESP=22961>MySQL </FONT> </P>
      <P DESIGNTIMESP=22962><FONT face=Tahoma size=2 DESIGNTIMESP=22963>Эти функции позволяют
      работать с серверами БД MySQL.</FONT>        </P>
      <P DESIGNTIMESP=22964><FONT face=Tahoma size=2 DESIGNTIMESP=22965>См. также документацию но
      адресу: http://www.mysql.com/documentation/. </FONT>
      </P>
      <P class="Text_Bold" DESIGNTIMESP=22966><FONT face=Tahoma
      size=2 DESIGNTIMESP=22967>mysql_connect </FONT> </P>
      <P DESIGNTIMESP=22968><FONT face=Tahoma size=2 DESIGNTIMESP=22969>Подключение к серверу
      MySQL </FONT>     </P>
      <P DESIGNTIMESP=22970><FONT face=Tahoma size=2 DESIGNTIMESP=22971>int mysql_connect
      ([string hostname[:port][:/path/to/socket] [, string username [, string
      password]]]) </FONT>
            </P>
      <P DESIGNTIMESP=22972><FONT face=Tahoma size=2 DESIGNTIMESP=22973>Возвращает дескриптор
      подключения к БД или FALSE — при ошибке. Обычно следующим шагом янляется
      выбор БД на сервере функцией mysql_selectjJb(). </FONT>

      </P>
      <P DESIGNTIMESP=22974><FONT face=Tahoma size=2 DESIGNTIMESP=22975>Для неуказанных
      аргументов используются следующие умолчания: host:port = 'localhost:3306',
      username = имя пользователя запустившего текущий процесс сервера password
      =    ""; либо значения из
         файла конфигурации. <
         /FONT >
      </P>
      <P DESIGNTIMESP=22976><FONT face=Tahoma size=2 DESIGNTIMESP=22977>Строка hostname может
      также включать номер порта (в виде "hostname: port") или путь к соксту для
      локальной машины в системах Unix":/path/to/socket". </FONT>

      </P>
      <P DESIGNTIMESP=22978><FONT face=Tahoma size=2 DESIGNTIMESP=22979>При ошибке также выдается
      предупреждение. Выдачу предуиреждения можно блокировать, указав перед
      именем функции оператор «@». </FONT>
               </P>
      <P DESIGNTIMESP=22980><FONT face=Tahoma size=2 DESIGNTIMESP=22981>Если функция повторно
      вызывается с теми же аргументами, новое подключение не создается, а
      возвращается идентификатор имеющегося. </FONT>
              </P>
      <P DESIGNTIMESP=22982><FONT face=Tahoma size=2 DESIGNTIMESP=22983>В конце сценария принято
      закрывать подключение функцией mysql_ close(), но это можно не делать,
      поскольку РHР автоматически закрывает все (неустойчивые) подключения при
      завершении сценария. </FONT>

            </P>
      <P class="list" DESIGNTIMESP=22984><FONT face=Tahoma size=2 DESIGNTIMESP=22985> &lt;?php <br designtimesp=22986>
        Slink = @mysql_connect ("serve"", "user", "passed")
        <br designtimesp=22987>
        or die ("Невозможно подключиться"); <br designtimesp=22988>
        print ("Подключение к MySQL успешно"): <br designtimesp=22989>
        mysql_close ($link); ?&gt; </FONT>
           </P>
      <P DESIGNTIMESP=22990><FONT face=Tahoma size=2 DESIGNTIMESP=22991>См. также:
      mysql_pconnect() и mysql_close(). </FONT>      </P>
      <P class="Text_Bold" DESIGNTIMESP=22992><FONT face=Tahoma
      size=2 DESIGNTIMESP=22993>mysql_pconnect </FONT>  </P>
      <P DESIGNTIMESP=22994><FONT face=Tahoma size=2 DESIGNTIMESP=22995>Создание устойчивого
      подключения к серверу MySQL </FONT>       </P>
      <P DESIGNTIMESP=22996><FONT face=Tahoma size=2 DESIGNTIMESP=22997>int mysql pconnect
      ([string hostname[ port][:/path/to/socket] [, string username [, string
      password]]]) </FONT>
            </P>
      <P DESIGNTIMESP=22998><FONT face=Tahoma size=2 DESIGNTIMESP=22999>Возвращает дескриптор
      подключения к БД или FALSE — при ошибке (также выдается предупреждение).
      Обычно следующим шагом является выбор БД на сервере функцией
      mysql_select_db(). </FONT>

           </P>
      <P DESIGNTIMESP=23000><FONT face=Tahoma size=2 DESIGNTIMESP=23001>Для неуказанных
      аргументов используются следующие умолчания: host:port = 'localhost:3306',

      username = имя пользователя запустившего текущий процесс сервера password
      =    ""; либо значения из
         файла конфигурации. <
         /FONT >
      </P>
      <P DESIGNTIMESP=23002><FONT face=Tahoma size=2 DESIGNTIMESP=23003>Строка hostname может
      также включать номер порта (в виде "hostname: port") или путь к соксту для
      локальной машины в системах Unix ":/path/to/socket". </FONT>

      </P>
      <P DESIGNTIMESP=23004><FONT face=Tahoma size=2 DESIGNTIMESP=23005>mysql_pconnect()
      действует подобно mysql_connect() с двумя отличиями. </FONT>
      </P>
      <ul designtimesp=23006>
        <li designtimesp=23007><FONT face=Tahoma size=2 DESIGNTIMESP=23008>Перед подключением
        функция пытается проверить, имеется ли уже открытое (устойчивое)
        подключение с параметрами (имя сервера, пользователя и пароль),
        аналогичными указанным. Если такое подключение обнаруживается, то
        возвращается его идентификатор вместо создания нового подключения.
        </FONT>
        <li designtimesp=23009><FONT face=Tahoma size=2 DESIGNTIMESP=23010>При завершении
        сценария подключение не закрывается, а остается действительным для
        дальнейшего использования. (Функция mysql_ close() не может закрыть
        подключения, созданные с помощыо mysql_pconnect()). </FONT>

               </li>
      </ul>
      <P class="Text_Bold" DESIGNTIMESP=23011><FONT face=Tahoma
      size=2 DESIGNTIMESP=23012>mysql_close </FONT>  </P>
      <P DESIGNTIMESP=23013><FONT face=Tahoma size=2 DESIGNTIMESP=23014>Отключение от сервера
      MySQL </FONT>     </P>
      <P DESIGNTIMESP=23015><FONT face=Tahoma size=2 DESIGNTIMESP=23016>int mysql_close ([int
      1ink_identifier]) : </FONT>      </P>
      <P DESIGNTIMESP=23017><FONT face=Tahoma size=2 DESIGNTIMESP=23018>Возвращает TRUE или FALSE
      - при ошибке. </FONT>       </P>
      <P DESIGNTIMESP=23019><FONT face=Tahoma size=2 DESIGNTIMESP=23020>Идентификатор
      закрываемого подключения указывается в аргументе; если его не указывать,
      то закрывается последнее открытое данным сценарием подключение.
</FONT>

      </P>
      <P DESIGNTIMESP=23021><FONT face=Tahoma size=2 DESIGNTIMESP=23022>Фактически использование
      данной функции не является обязательным, так как РНР автоматически
      закрывает все незакрытые неустойчивые подключения при завершении сценария.
      </FONT>

           </P>
      <P DESIGNTIMESP=23023><FONT face=Tahoma size=2 DESIGNTIMESP=23024>Заметьте: устойчивые
      подключения, созданные функцией mysql_ pconnect(), не закрываются.
      </FONT>
          </P>
      <P DESIGNTIMESP=23025><FONT face=Tahoma size=2 DESIGNTIMESP=23026>См. также:
      mysql_connect() и mysql pconnect(). </FONT>       </P>
      <P class="Text_Bold" DESIGNTIMESP=23027><FONT face=Tahoma
      size=2 DESIGNTIMESP=23028>tmysql_change_user</FONT> </P>
      <P DESIGNTIMESP=23029><FONT face=Tahoma size=2 DESIGNTIMESP=23030>Изменение параметров
      подключения int mysql_change_user (string user, string password [. string
      database [, int linkjidentifier]]) </FONT>
                </P>
      <P DESIGNTIMESP=23031><FONT face=Tahoma size=2 DESIGNTIMESP=23032>Если не указываются БД
      или подключение, то используется последняя активная БД. Если авторизация
      проходит безуспешно, параметры подключения не изменяются. </FONT>

      </P>
      <P DESIGNTIMESP=23033><FONT face=Tahoma size=2 DESIGNTIMESP=23034>Работает с MySQL 3.23.3 и
      выше. </FONT>      </P>
      <P class="Text_Bold" DESIGNTIMESP=23035><FONT face=Tahoma size=2 DESIGNTIMESP=23036>mysq_l
      list_dbs </FONT>   </P>
      <P DESIGNTIMESP=23037><FONT face=Tahoma size=2 DESIGNTIMESP=23038>Получение списка БД на
      сервере MySQL </FONT>       </P>
      <P DESIGNTIMESP=23039><FONT face=Tahoma size=2 DESIGNTIMESP=23040>int mysql_list_dbs ([int
      link_identifier]) </FONT>     </P>
      <P DESIGNTIMESP=23041><FONT face=Tahoma size=2 DESIGNTIMESP=23042>Возвращает набор записей,
      содержащий список БД на сервере. </FONT>         </P>
      <P class="list" DESIGNTIMESP=23043><FONT face=Tahoma size=2 DESIGNTIMESP=23044>Slink =   mysql_connect<br designtimesp=23045>
        ('localhost'. 'myname'. 'secret').<br designtimesp=23046>
        $db_list = mysqljist_dbs($link) <br designtimesp=23047>
        while ($row = mysql_fetch_object<br designtimesp=23048>
        ($db_list)) { echo $row-&gt;Database . <br designtimesp=23049>
        "\n": } </FONT>
          </P>
      <P DESIGNTIMESP=23050><FONT face=Tahoma size=2 DESIGNTIMESP=23051>В данном примере также
      может использоваться функция mysql_ fetch_row() или ей подобная.
      </FONT>
           </P>
      <P DESIGNTIMESP=23052><FONT face=Tahoma size=2 DESIGNTIMESP=23053>Заметьте: список можно
      получить, не имея привилегий, то есть не указывая пароль доступа.
      </FONT>
          </P>
      <P DESIGNTIMESP=23054><FONT face=Tahoma size=2 DESIGNTIMESP=23055>Ранее функция называлась
      mysq'Mistdbs(). </FONT>     </P>
      <P class="Text_Bold" DESIGNTIMESP=23056><FONT face=Tahoma
      size=2 DESIGNTIMESP=23057>mysql_db_name </FONT>  </P>
      <P DESIGNTIMESP=23058><FONT face=Tahoma size=2 DESIGNTIMESP=23059>Получение имени БД из
      списка </FONT>      </P>
      <P DESIGNTIMESP=23060><FONT face=Tahoma size=2 DESIGNTIMESP=23061>int mysql_db_name (int
      result, int row [, mixed field]) </FONT>          </P>
      <P DESIGNTIMESP=23062><FONT face=Tahoma size=2 DESIGNTIMESP=23063>В аргументе result
      указывается дескриптор набора записей, полученный от функции
      mysql_list_dbs(). В аргументе row указывается номер записи. При ошибке
      возвращает FALSE. Фактически данная функция является излишней. </FONT>

      </P>
      <P class="list" DESIGNTIMESP=23064><FONT face=Tahoma size=2 DESIGNTIMESP=23065> &lt;?php error_reportirg(E_ALL); <br designtimesp=23066>
        mysq]_connect('dbhost'. 'username'. 'password'). <br designtimesp=23067>
        Sdbjist = mysql Jist_dbs(): <br designtimesp=23068>
        for ($1 = 0. $1
        &lt; ($cnt =     mysql_num_rows($cibjist)),<br designtimesp=23069>
        $1 + 1-)<br designtimesp=23070>
        { echo mysql_db_name($db_list. $i) .<br designtimesp=23071>
        "\n"; } ?&gt; </FONT>
           </P>
      <P DESIGNTIMESP=23072><FONT face=Tahoma size=2 DESIGNTIMESP=23073>Ранее функция называлась
      mysql_dbname(). </FONT>     </P>
      <P class="Text_Bold" DESIGNTIMESP=23074><FONT face=Tahoma
      size=2 DESIGNTIMESP=23075>mysql_select_db </FONT>  </P>
      <P DESIGNTIMESP=23076><FONT face=Tahoma size=2 DESIGNTIMESP=23077>Выбор БД MySQL
</FONT>    </P>
      <P DESIGNTIMESP=23078><FONT face=Tahoma size=2 DESIGNTIMESP=23079>int mysql_select_db
      (string database_name [, int link_identifier]) </FONT>        </P>
      <P DESIGNTIMESP=23080><FONT face=Tahoma size=2 DESIGNTIMESP=23081>Возвращает TRUE или FALSE
      — при ошибке. </FONT>       </P>
      <P DESIGNTIMESP=23082><FONT face=Tahoma size=2 DESIGNTIMESP=23083>Устанавливает БД с именем
      database_name, активной для текущего или указанного в link_identifier
      подключения. Если подключений не имеется, то косвенно вызывается функция
      mysql_connect() с параметрами по умолчанию. </FONT>

               </P>
      <P DESIGNTIMESP=23084><FONT face=Tahoma size=2 DESIGNTIMESP=23085>Последующие запросы,
      выполняемые функцией, будут адресованы данной БД. </FONT>
      </P>
      <P DESIGNTIMESP=23086><FONT face=Tahoma size=2 DESIGNTIMESP=23087>См. также:
      mysql_connect(), mysqlj&gt;connect() и mysql_query(). </FONT>       </P>
      <P DESIGNTIMESP=23088><FONT face=Tahoma size=2 DESIGNTIMESP=23089>Ранее функция называлась
      mysql_selectdb(). </FONT>    </P>
      <P class="Text_Bold" DESIGNTIMESP=23090><FONT face=Tahoma
      size=2 DESIGNTIMESP=23091>mysql_create_db </FONT> </P>
      <P DESIGNTIMESP=23092><FONT face=Tahoma size=2 DESIGNTIMESP=23093>Создание БД MySQL
      </FONT>    </P>
      <P DESIGNTIMESP=23094><FONT face=Tahoma size=2 DESIGNTIMESP=23095>int mysql_create_db
      (string dbnarae [, int link_identifier]) </FONT>        </P>
      <P DESIGNTIMESP=23096><FONT face=Tahoma size=2 DESIGNTIMESP=23097>Создаст БД dbname,
      используя подключение link_identifier. </FONT>       </P>
      <P class="list" DESIGNTIMESP=23098><FONT face=Tahoma size=2 DESIGNTIMESP=23099> &lt;?php / <br designtimesp=23100>
        Slink = mysql_pconnect<br designtimesp=23101>
        ("localhost". "me", "paswd"): / <br designtimesp=23102>
        if (mysql_create_db ("my_db")) <br designtimesp=23103>
        { print ("БД создана \n"); <br designtimesp=23104>
        } else { <br designtimesp=23105>
        printf ("Ошибка: Xs\n". mysql_error<br designtimesp=23106>
        ()). } ?&gt; </FONT>
           </P>
      <P DESIGNTIMESP=23107><FONT face=Tahoma size=2 DESIGNTIMESP=23108>Ранее функция называлась
      mysql_createdb(). </FONT>     </P>
      <P DESIGNTIMESP=23109><FONT face=Tahoma size=2 DESIGNTIMESP=23110>См. также
      mysql_drop_db(). </FONT>   </P>
      <P class="Text_Bold" DESIGNTIMESP=23111><FONT face=Tahoma
      size=2 DESIGNTIMESP=23112>mysql_drop_db </FONT>  </P>
      <P DESIGNTIMESP=23113><FONT face=Tahoma size=2 DESIGNTIMESP=23114>Удаление БД </FONT>   </P>
      <P DESIGNTIMESP=23115><FONT face=Tahoma size=2 DESIGNTIMESP=23116>int mysql_drop_db (string
      databasejname [, int link_identifier]) </FONT>        </P>
      <P DESIGNTIMESP=23117><FONT face=Tahoma size=2 DESIGNTIMESP=23118>Возвращает TRUE, если БД
      databasejiame успешно удалена, или FALSE — при ошибке. </FONT>
          </P>
      <P DESIGNTIMESP=23119><FONT face=Tahoma size=2 DESIGNTIMESP=23120>См. также
      mysql_create_db(). </FONT>    </P>
      <P DESIGNTIMESP=23121><FONT face=Tahoma size=2 DESIGNTIMESP=23122>Ранее функция называлась
      mysql_dropdb(). </FONT>     </P>
      <P class="Text_Bold" DESIGNTIMESP=23123><FONT face=Tahoma size=2 DESIGNTIMESP=23124>mysql_
      list_tables </FONT>   </P>
      <P DESIGNTIMESP=23125><FONT face=Tahoma size=2 DESIGNTIMESP=23126>Получение списка таблиц в
      БД </FONT>      </P>
      <P DESIGNTIMESP=23127><FONT face=Tahoma size=2 DESIGNTIMESP=23128>int mysql_list_tables
      (string database [. int linkjidentifier]) </FONT>        </P>
      <P DESIGNTIMESP=23129><FONT face=Tahoma size=2 DESIGNTIMESP=23130>Возвращает набор записей,
      из которого можно извлечь имена таблиц функцией mysql_tablename().
      Следующий пример распечатывает имена всех БД и таблиц, в них содержащихся.
      </FONT>

           </P>
      <P class="list" DESIGNTIMESP=23131><FONT face=Tahoma size=2 DESIGNTIMESP=23132> &lt;? <br designtimesp=23133>
        Slink = mysql_connect<br designtimesp=23134>
        ('127 0.0 Г. 'root1. '157984'). <br designtimesp=23135>
        Sdbjist =
          mysql_list_dbs($link). <br designtimesp=23136>
        while ($r_db =
           mysql_fetch_object(SdbJisU)<br designtimesp=23137>
        { echo $r_db-&gt;Database . "\n": <br designtimesp=23138>
        // распечатать список таблиц Stbljist = <br designtimesp=23139>
        mysql_lTst_tables(Sr_db-&gt;Database): <br designtimesp=23140>
        for($i =0: $i &lt; mysql_num_rows<br designtimesp=23141>
        ($tbl_list): Si++) { <br designtimesp=23142>
        echo " - ". mysql_tablename<br designtimesp=23143>
        ($tbl_list. $1). "\n": }
      ?&gt; </FONT>
             </P>
      <P DESIGNTIMESP=23144><FONT face=Tahoma size=2 DESIGNTIMESP=23145>Ранее функция называлась
      mysql_listtables(). </FONT>     </P>
      <P class="Text_Bold" DESIGNTIMESP=23146><FONT face=Tahoma
      size=2 DESIGNTIMESP=23147>mysql_tablename </FONT>  </P>
      <P DESIGNTIMESP=23148><FONT face=Tahoma size=2 DESIGNTIMESP=23149>Получение имени таблицы
      </FONT>    </P>
      <P DESIGNTIMESP=23150><FONT face=Tahoma size=2 DESIGNTIMESP=23151>string mysql_tablename
      (int result, int i) </FONT>       </P>
      <P DESIGNTIMESP=23152><FONT face=Tahoma size=2 DESIGNTIMESP=23153>Функция используется для
      получения имени таблицы (с номером i) из набора записей, возвращенного
      функцией mysql_list_tables(). </FONT>
            </P>
      <P class="list" DESIGNTIMESP=23154><FONT face=Tahoma size=2 DESIGNTIMESP=23155> &lt;?php <br designtimesp=23156>
        mysql_connect ("localhost:3306"): <br designtimesp=23157>
        Sresult = mysql_list_tables ("mydb"): <br designtimesp=23158>
        $1 = 0; while<br designtimesp=23159>
        (Si &lt; mysql_num_rows <br designtimesp=23160>
        (Sresult)) { $tb_names[$i] =<br designtimesp=23161>
        mysql_tablename (Sresult. Si): <br designtimesp=23162>
        echo Stb_names[Si] . "&lt;BR&gt;"; <br designtimesp=23163>
        $l++; } ?&gt; </FONT>
           </P>
      <P class="Text_Bold" DESIGNTIMESP=23164><FONT face=Tahoma
      size=2 DESIGNTIMESP=23165>mysql_query </FONT>  </P>
      <P DESIGNTIMESP=23166><FONT face=Tahoma size=2 DESIGNTIMESP=23167>Выполнение запроса к БД
      </FONT>     </P>
      <P DESIGNTIMESP=23168><FONT face=Tahoma size=2 DESIGNTIMESP=23169>int mysql_query (string
      query [, int linkjdentifier]) </FONT>        </P>
      <P DESIGNTIMESP=23170><FONT face=Tahoma size=2 DESIGNTIMESP=23171>Посылает запрос текущей
      БД, активной для текущего подключения или указанного в link_identifier.
      Если подключений не имеется, то косвенно вызывается функция
      mysql_connect() с параметрами по умолчанию. </FONT>

              </P>
      <P DESIGNTIMESP=23172><FONT face=Tahoma size=2 DESIGNTIMESP=23173>Заметьте: SQL-выражение,
      указанное в аргументе query, не должно оканчиваться точкой с запятой. Если
      выражение содержит ошибки </FONT>
               </P>
      <P DESIGNTIMESP=23174><FONT face=Tahoma size=2 DESIGNTIMESP=23175>или при его выполнении
      возникают ошибки (например, если текущие привилегии не позволяют выполнить
      запрос), то функция возвращает FALSE. </FONT>
                </P>
      <P DESIGNTIMESP=23176><FONT face=Tahoma size=2 DESIGNTIMESP=23177>Если запрос успешно
      выполнился, то возвращается набор записей (не забывайте, он также может
      содержать 0 записей), который может быть обработан функциями: </FONT>

      </P>
      <ul designtimesp=23178>
        <li designtimesp=23179><FONT face=Tahoma size=2 DESIGNTIMESP=23180>mysql_resul t() —
        получить элемент набора записей; </FONT>
        <li designtimesp=23181><FONT face=Tahoma size=2 DESIGNTIMESP=23182>mysql_fetch_array() —
        занести запись в массив; </FONT>
        <li designtimesp=23183><FONT face=Tahoma size=2 DESIGNTIMESP=23184>mysql_fetch_row() —
        занести запись в нумерованный массив; </FONT>
        <li designtimesp=23185><FONT face=Tahoma size=2 DESIGNTIMESP=23186>mysql_fetch_assoc() —
        занести запись в ассоциативный массив; </FONT>
        <li designtimesp=23187><FONT face=Tahoma size=2 DESIGNTIMESP=23188>mysql_fetch_object() —
        занести запись в объект. </FONT>       </li>
      </ul>
      <P DESIGNTIMESP=23189><FONT face=Tahoma size=2 DESIGNTIMESP=23190>Чтобы выяснить, сколько
      записей было возвращено командой SELECT, используйте функцию
      mysql_num_rows(); а чтобы выяснить, сколько записей было изменено в
      результате выполнения запросов DELETE, INSERT, REPLACE или UPDATE,
      используйте функцию mysql_affected_rows(). </FONT>

          </P>
      <P DESIGNTIMESP=23191><FONT face=Tahoma size=2 DESIGNTIMESP=23192>После обработки
      результатов запроса он может быть удален функцией mysql_free_result().
      Хотя в этом ист необходимости, так как ресурсы автоматически освобождаются
      при завершении сценария. </FONT></P>
      <P DESIGNTIMESP=23193><FONT face=Tahoma size=2 DESIGNTIMESP=23194>См. также:
      mysql_db_query(), mysql_select_db() и raysql_connect(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23195><FONT face=Tahoma
      size=2 DESIGNTIMESP=23196>mysql_db_query </FONT></P>
      <P DESIGNTIMESP=23197><FONT face=Tahoma size=2 DESIGNTIMESP=23198>Выполнение запроса к
      указанной БД </FONT></P>
      <P DESIGNTIMESP=23199><FONT face=Tahoma size=2 DESIGNTIMESP=23200>int mysql_db_query
      (string database, string query [, int linkjdentifier]) </FONT></P>
      <P DESIGNTIMESP=23201><FONT face=Tahoma size=2 DESIGNTIMESP=23202>Функция эквивалентна
      последовательному выполнению функций: </FONT></P>
      <P DESIGNTIMESP=23203><FONT face=Tahoma size=2 DESIGNTIMESP=23204>mysql_select_db (string
      database [. int linkjdentifier]); mysql_query (string query [. int
      link_identifier]}; </FONT></P>
      <P DESIGNTIMESP=23205><FONT face=Tahoma size=2 DESIGNTIMESP=23206>См. также:
      mysql_db_query(), mysql_connect(). Ранее функция называлась mysql().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23207><FONT face=Tahoma
      size=2 DESIGNTIMESP=23208>mysql_num_rows </FONT></P>
      <P DESIGNTIMESP=23209><FONT face=Tahoma size=2 DESIGNTIMESP=23210>Получение числа
      возвращенных записей </FONT></P>
      <P DESIGNTIMESP=23211><FONT face=Tahoma size=2 DESIGNTIMESP=23212>int mysql_num_rows (int
      result) </FONT></P>
      <P DESIGNTIMESP=23213><FONT face=Tahoma size=2 DESIGNTIMESP=23214>Функция возвращает число
      записей, возвращенных командами SELECT. Чтобы выяснить, сколько записей
      было изменено в результате выполнения запросов DELETE, INSERT, REPLACE или
      UPDATE, используйте функцию mysql_affected_rows(). </FONT></P>
      <P class=list DESIGNTIMESP=23215><FONT face=Tahoma size=2 DESIGNTIMESP=23216>&lt;?php <br
       designtimesp=23217>Sconn = mysql_connec<br
       designtimesp=23218>t("hostaddress". "username". "password"); <br
       designtimesp=23219>mysql_select_db("database".Sconn): <br
       designtimesp=23220>$rs = mysql_query("SELECT <br
       designtimesp=23221>FROM Accounts".$conn); <br designtimesp=23222>$N =
      mysql num_rows($rs), <br designtimesp=23223>echo "Всего записей: $N".
      ?&gt; </FONT>
      <P DESIGNTIMESP=23224><FONT face=Tahoma size=2 DESIGNTIMESP=23225>См. также:
      mysql_db_query(), mysql_query() и mysql_fetch_row(). </FONT></P>
      <P DESIGNTIMESP=23226><FONT face=Tahoma size=2 DESIGNTIMESP=23227>Ранее функция называлась
      mysql_numrows(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23228><FONT face=Tahoma
      size=2 DESIGNTIMESP=23229>mysql_affected_rows </FONT></P>
      <P DESIGNTIMESP=23230><FONT face=Tahoma size=2 DESIGNTIMESP=23231>Получение числа
      измененных записей в БД </FONT></P>
      <P DESIGNTIMESP=23232><FONT face=Tahoma size=2 DESIGNTIMESP=23233>int mysql_affected_rows
      ([int link_iidentifier]) </FONT></P>
      <P DESIGNTIMESP=23234><FONT face=Tahoma size=2 DESIGNTIMESP=23235>Возвращается число
      записей, измененных в результате выполнения запросов DELETE, INSERT,
      REPLACE или UPDATE. </FONT></P>
      <P DESIGNTIMESP=23236><FONT face=Tahoma size=2 DESIGNTIMESP=23237>Если последним запросом
      была команда DELETE без ограничения WHERE, то из таблицы будут удалены все
      записи, но эта функция возвратит 0. </FONT></P>
      <P DESIGNTIMESP=23238><FONT face=Tahoma size=2 DESIGNTIMESP=23239>Чтобы выяснить, сколько
      записей было возвращено командой SELECT, используйте функцию
      mysql_num_rows(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23240><FONT face=Tahoma
      size=2 DESIGNTIMESP=23241>mysql_insert_id </FONT></P>
      <P DESIGNTIMESP=23242><FONT face=Tahoma size=2 DESIGNTIMESP=23243>Получение значения
      последнего автоинкремента </FONT></P>
      <P DESIGNTIMESP=23244><FONT face=Tahoma size=2 DESIGNTIMESP=23245>int mysqi_insert_id ([int
      link_identifier]) </FONT></P>
      <P DESIGNTIMESP=23246><FONT face=Tahoma size=2 DESIGNTIMESP=23247>При добавлении записей в
      таблицу командой INSERT для поля, имеющего свойство AUTO_INCREMENT,
      значение генерируется автоматически (вне зависимости от того, было ли оно
      задано) и его можно получить с помощью этой функции. Это значение можно
      использовать для модификации последней добавленной записи. </FONT></P>
      <P DESIGNTIMESP=23248><FONT face=Tahoma size=2 DESIGNTIMESP=23249>Это значение также можно
      получить с помощью SQL запроса MySQL: "SELECT LASTJNSERTJDO". </FONT></P>
      <P DESIGNTIMESP=23250><FONT face=Tahoma size=2 DESIGNTIMESP=23251>Если последним запросом
      значение AUTO_INCREMENT сгенерировано не было, то функция возвратит 0.
      Заметьте также, что если тип автоин-крементируемого поля был BIGINT, то он
      будет преобразован к типу LONG, и результат может быть неверным.
      </FONT></P>
      <P DESIGNTIMESP=23252><FONT face=Tahoma size=2 DESIGNTIMESP=23253>Команда LAST_INSERT_ID()
      имеет два преимущества: она всегда хранит значение последнего
      автоинкремента (это значение не сбрасывается в 0 между запросами) и она
      всегда возвращает правильное значение. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23254><FONT face=Tahoma
      size=2 DESIGNTIMESP=23255>mysql_data_seek </FONT></P>
      <P DESIGNTIMESP=23256><FONT face=Tahoma size=2 DESIGNTIMESP=23257>Перемещение курсора
      набора записей </FONT></P>
      <P DESIGNTIMESP=23258><FONT face=Tahoma size=2 DESIGNTIMESP=23259>int mysql_data_seek (int
      result_identifier, int rowjiumber) </FONT></P>
      <P DESIGNTIMESP=23260><FONT face=Tahoma size=2 DESIGNTIMESP=23261>При каждом вызове функции
      mysql_fetch_row() (или подобной ей) внутренний курсор записи смешается на
      следующую запись. Данная функция позволяет свободно перемещать курсор в
      наборе записей result_identifier, так, чтобы он указывал на запись с
      номером row_ number (нумерация начинается с 0). </FONT></P>
      <P DESIGNTIMESP=23262><FONT face=Tahoma size=2 DESIGNTIMESP=23263>Функция возвращает TRUE
      или FALSE — при ошибке. </FONT></P>
      <P class=list DESIGNTIMESP=23264><FONT face=Tahoma size=2 DESIGNTIMESP=23265>&lt;?php <br
       designtimesp=23266>Slink = mysql_pconnect<br
       designtimesp=23267>("сервер", "имя", "пароль") <br
       designtimesp=23268>or die ("Нет коннекта"): <br
       designtimesp=23269>mysql_select_db ("samp_db")<br
       designtimesp=23270>or die ("Базу не выбрать"). <br
       designtimesp=23271>Squery = "SLLtCT lastjname. firstjname <br
       designtimesp=23272>FROM friends";<br designtimesp=23273>$result =
      mysql_query i$query) <br designtimesp=23274>or die ("Query failed"). <br
       designtimesp=23275># отобразить записи в обратном порядке <br
       designtimesp=23276>for ($i = mysql_num_rows ($re.sult) - 1<br
       designtimesp=23277>: $1 &gt;=0; $1--) { if (!mysql_data_seek <br
       designtimesp=23278>(Sresult. $1)) { <br designtimesp=23279>printf
      ("Cannot seek to row 5!d\n". $1);<br designtimesp=23280>continue: ) <br
       designtimesp=23281>if(!($row = mysql_fetch_object (SresulL))) <br
       designtimesp=23282>continue. <br designtimesp=23283>pnntf ("Is
      s&lt;BR&gt;\n". $row-&gt;labt_name. <br
       designtimesp=23284>$row-&gt;first_name): } <br
       designtimesp=23285>mysql free_result (Sresult). ?&gt; </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23286><FONT face=Tahoma
      size=2 DESIGNTIMESP=23287>mysql_free_result </FONT></P>
      <P DESIGNTIMESP=23288><FONT face=Tahoma size=2 DESIGNTIMESP=23289>Уничтожение набора
      записей </FONT></P>
      <P DESIGNTIMESP=23290><FONT face=Tahoma size=2 DESIGNTIMESP=23291>int mysql_free_result
      (int result) </FONT></P>
      <P DESIGNTIMESP=23292><FONT face=Tahoma size=2 DESIGNTIMESP=23293>Функция освобождает
      память, занимаемую набором записей result, возвращенным запросом. Ее
      следует использовать только в том случае, если приходится очень экономить
      память, так как память автоматически освобождается при завершении
      сценария. </FONT></P>
      <P DESIGNTIMESP=23294><FONT face=Tahoma size=2 DESIGNTIMESP=23295>Ранее функция называлась
      mysql_freeresult(). </FONT></P>
      <P class=Title_3 DESIGNTIMESP=23296><FONT face=Tahoma size=2 DESIGNTIMESP=23297>Обработка
      результатов запроса </FONT></P>
      <P DESIGNTIMESP=23298><FONT face=Tahoma size=2 DESIGNTIMESP=23299>mysql_result </FONT></P>
      <P DESIGNTIMESP=23300><FONT face=Tahoma size=2 DESIGNTIMESP=23301>Получение определенного
      элемента набора записей </FONT></P>
      <P DESIGNTIMESP=23302><FONT face=Tahoma size=2 DESIGNTIMESP=23303>mixed mysql_result (int
      result, int row [, mixed field]) </FONT></P>
      <P DESIGNTIMESP=23304><FONT face=Tahoma size=2 DESIGNTIMESP=23305>Возвращает содержимое
      ячейки из набора записей resul t. В аргументе row указывается номер записи
      (нумерация начинается с 0), в аргументе field можно указать индекс поля
      (число), имя поля или полное имя поля (вида: «имя_таблицы.имя_поля») или
      псевдоним поля (для запросов типа 'SELECT foo AS bar FROM...').
</FONT></P>
      <P DESIGNTIMESP=23306><FONT face=Tahoma size=2 DESIGNTIMESP=23307>При работе с большими
      наборами записей быстрее выполняются функции типа _fetch_ (см. ниже).
      Также заметьте, что численные индексы обрабатываются быстрее строковых.
      </FONT></P>
      <P DESIGNTIMESP=23308><FONT face=Tahoma size=2 DESIGNTIMESP=23309>Не следует вызывать
      функцию mysql_result() в сочетании с другими функциями обработки набора
      записей. </FONT></P>
      <P DESIGNTIMESP=23310><FONT face=Tahoma size=2 DESIGNTIMESP=23311>Рекомендуется
      использовать альтернативные функции: mysql_fetch_ row(),
      mysql_fetch_array() и mysql_fetch_object(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23312><FONT face=Tahoma
      size=2 DESIGNTIMESP=23313>mysql_fetch array </FONT></P>
      <P DESIGNTIMESP=23314><FONT face=Tahoma size=2 DESIGNTIMESP=23315>Занесение записи в массив
      </FONT></P>
      <P DESIGNTIMESP=23316><FONT face=Tahoma size=2 DESIGNTIMESP=23317>array mysql_fetch_array
      (int result [, int result_type]) </FONT></P>
      <P DESIGNTIMESP=23318><FONT face=Tahoma size=2 DESIGNTIMESP=23319>Возвращает массив,
      соответствующий текущей записи, из набора записей result, возвращенных
      запросом, или FALSE, если записей более не имеется. </FONT></P>
      <P DESIGNTIMESP=23320><FONT face=Tahoma size=2 DESIGNTIMESP=23321>Данная функция является
      расширением функции mysql_fetch_row(), и она может возвращать нумерованный
      или ассоциативный массив (а также объединенный). Вид возвращаемого массива
      может указываться в аргументе result_type одной из констант: MYSQL NUM,
      MYSQL_ ASSOC, MYSQL_BOTH (по умолчанию). </FONT></P>
      <P DESIGNTIMESP=23322><FONT face=Tahoma size=2 DESIGNTIMESP=23323>В ассоциативных массивах
      индексами служат имена нолей. Если имеются одноименные поля, используется
      последнее. Для доступа к одноименным полям также можно использовать
      числовые индексы (поля нумеруются в той последовательности, в которой
      указаны в запросе или в таблице) или псевдонимы. </FONT></P>
      <P class=list DESIGNTIMESP=23324><FONT face=Tahoma size=2 DESIGNTIMESP=23325>SELECT tl.fl
      AS tl_fl t2.fi AS t2_fl FROM tl. t2 </FONT></P>
      <P DESIGNTIMESP=23326><FONT face=Tahoma size=2 DESIGNTIMESP=23327>Заметьте, что функция
      работает лишь немного медленнее, чем mysql_ fetch_row(), но предоставляет
      дополнительную функциональность. </FONT></P>
      <P class=list DESIGNTIMESP=23328><FONT face=Tahoma size=2 DESIGNTIMESP=23329>&lt;?php <br
       designtimesp=23330>mysql_connect (Shost. $use&lt;\ Spassword).<br
       designtimesp=23331>Sresult = mysql_db_query ("database". <br
       designtimesp=23332>"select user_id. full name from tbl");<br
       designtimesp=23333>while ($row = mysql_fetch_array (Sresult))<br
       designtimesp=23334>{ echo "userjid- ".$row["user_id"].<br
       designtimesp=23335>"&lt;brn". echo "user_id: ".$row[0] "&lt;br&gt;\n";
      <br designtimesp=23336>echo "fullname:
      ",$row["fullnatne"]."&lt;br&gt;\n"; <br designtimesp=23337>echo
      "fullname: ".$row[l]."&lt;br&gt;\n"; }<br
       designtimesp=23338>mysql_free_result (Sresult). ?&gt; </FONT>
      <P DESIGNTIMESP=23339><FONT face=Tahoma size=2 DESIGNTIMESP=23340>См. также:
      mysql_fetch_row() и mysql_fetch_assoc(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23341><FONT face=Tahoma
      size=2 DESIGNTIMESP=23342>mysql_fetch_row </FONT></P>
      <P DESIGNTIMESP=23343><FONT face=Tahoma size=2 DESIGNTIMESP=23344>Занесение записи в
      нумерованный массив </FONT></P>
      <P DESIGNTIMESP=23345><FONT face=Tahoma size=2 DESIGNTIMESP=23346>array mysql_fetch_row
      (int result) </FONT></P>
      <P DESIGNTIMESP=23347><FONT face=Tahoma size=2 DESIGNTIMESP=23348>Возвращает массив,
      соответствующий текущей записи, из набора записей result, возвращенных
      запросом (последующий вызов функции возвращает следующую запись), или
      FALSE, если записей более не имеется. </FONT></P>
      <P DESIGNTIMESP=23349><FONT face=Tahoma size=2 DESIGNTIMESP=23350>Каждое поле записи
      сохраняется в нумерованном элементе массива (нумерация начинается с 0).
      </FONT></P>
      <P DESIGNTIMESP=23351><FONT face=Tahoma size=2 DESIGNTIMESP=23352>См. также:
      mysql_fetch_array(), mysql_fetch_object(), mysql_data_seek(),
      mysql_fetch_lengths() и mysql_result(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23353><FONT face=Tahoma
      size=2 DESIGNTIMESP=23354>mysql_fetch_assoc </FONT></P>
      <P DESIGNTIMESP=23355><FONT face=Tahoma size=2 DESIGNTIMESP=23356>Занесение записи в
      ассоциативный массив </FONT></P>
      <P DESIGNTIMESP=23357><FONT face=Tahoma size=2 DESIGNTIMESP=23358>array mysql_fetch_assoc
      (int result) </FONT></P>
      <P DESIGNTIMESP=23359><FONT face=Tahoma size=2 DESIGNTIMESP=23360>Возвращает массив,
      соответствующий текущей записи, из набора записей result, возвращенных
      запросом, или FALSE, если записей более не имеется. Вызов функции
      эквивалентен mysql_fetch_array (result, MYSQL_ASSOC). </FONT></P>
      <P DESIGNTIMESP=23361><FONT face=Tahoma size=2 DESIGNTIMESP=23362>В возвращаемом массиве
      индексами служат имена полей. Если имеются одноименные поля, используется
      последнее. Для доступа к остальным одноименным полям можно использовать
      псевдонимы или функцию raysql_fetch_array(). </FONT></P>
      <P DESIGNTIMESP=23363><FONT face=Tahoma size=2 DESIGNTIMESP=23364>Заметьте, что функция
      работает лишь немного медленнее, чем mysql_ fetch_row(), но предоставляет
      дополнительную функциональность. </FONT></P>
      <P class=list DESIGNTIMESP=23365><FONT face=Tahoma size=2 DESIGNTIMESP=23366>&lt;?php <br
       designtimesp=23367>mysql_connect ($host. $user. Spassword): <br
       designtimesp=23368>$result = mysql_db_query<br
       designtimesp=23369>("database"."select * from table"). <br
       designtimesp=23370>while ($row = mysql_fetch_assoc <br
       designtimesp=23371>(Sresult)) { echo $row["user_id"]; <br
       designtimesp=23372>echo $ro\4' fullname"] } <br
       designtimesp=23373>mysql_free_result (Sresult); ?&gt; </FONT></P>
      <P DESIGNTIMESP=23374><FONT face=Tahoma size=2 DESIGNTIMESP=23375>CM. также:
      mysql_fetch_row() и mysql_fetch_array(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23376><FONT face=Tahoma
      size=2 DESIGNTIMESP=23377>mysql_fetch_object </FONT></P>
      <P DESIGNTIMESP=23378><FONT face=Tahoma size=2 DESIGNTIMESP=23379>Получение записи в
      свойствах объекта object mysql_fetch_object (int result) </FONT></P>
      <P DESIGNTIMESP=23380><FONT face=Tahoma size=2 DESIGNTIMESP=23381>Возвращает объект, в
      свойствах которого находятся поля текущей записи, или FALSE, если записей
      более не имеется. </FONT></P>
      <P DESIGNTIMESP=23382><FONT face=Tahoma size=2 DESIGNTIMESP=23383>По скорости выполнения
      функция идентична mysql_fetch_array() и почти идентична mysql_fetch_row().
      </FONT></P>
      <P class=list DESIGNTIMESP=23384><FONT face=Tahoma size=2 DESIGNTIMESP=23385>&lt;?php<br
       designtimesp=23386>mysql_connect ($host. $user. $password). <br
       designtimesp=23387>Sresult = mysql_db_query<br
       designtimesp=23388>("database", "select * from table"): <br
       designtimesp=23389>while ($row = mysql_fetch_object <br
       designtimesp=23390>(Sresult)) {<br designtimesp=23391>echo
      $row-&gt;user_id. <br designtimesp=23392>echo $row-&gt;fullname: }<br
       designtimesp=23393>mysql_free_result (Sresult): ?&gt; </FONT></P>
      <P DESIGNTIMESP=23394><FONT face=Tahoma size=2 DESIGNTIMESP=23395>См. также:
      mysql_fetch_array() и mysql_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23396><FONT face=Tahoma
      size=2 DESIGNTIMESP=23397>ImysqI_fetch_lengths </FONT></P>
      <P DESIGNTIMESP=23398><FONT face=Tahoma size=2 DESIGNTIMESP=23399>Получение длины элементов
      записи array mysql_fetch_lengths (int result) После того как запись была
      обработана одной из функций: mysql_ fetch_row(), mysql_fetch_array() или
      mysql_fetch_object(), с помощью данной функции можно узнать размер
      полученного значения в каждом обработанном поле. </FONT></P>
      <P DESIGNTIMESP=23400><FONT face=Tahoma size=2 DESIGNTIMESP=23401>Например, в следующем
      фрагменте: </FONT></P>
      <P class=list DESIGNTIMESP=23402><FONT face=Tahoma size=2 DESIGNTIMESP=23403>Srs_arr =
      mysql_fetch_row($rs):<br designtimesp=23404>S'-sJen -
      mysql_fetch_lengths($rs). </FONT></P>
      <P DESIGNTIMESP=23405><FONT face=Tahoma size=2 DESIGNTIMESP=23406>массив $rs_len будет
      содержать длину соответствующих элементов массива $rs_arr, то есть
      $rsjen[0] = strlen($rs_arr[0]) и т. д. </FONT></P>
      <P DESIGNTIMESP=23407><FONT face=Tahoma size=2 DESIGNTIMESP=23408>См. также
      mysql_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23409><FONT face=Tahoma
      size=2 DESIGNTIMESP=23410>mysql_fetch_field </FONT></P>
      <P DESIGNTIMESP=23411><FONT face=Tahoma size=2 DESIGNTIMESP=23412>Получение информации о
      поле записи в свойствах объекта </FONT></P>
      <P DESIGNTIMESP=23413><FONT face=Tahoma size=2 DESIGNTIMESP=23414>object mysql_fetch_field
      (Int result [, int field_offset]) </FONT></P>
      <P DESIGNTIMESP=23415><FONT face=Tahoma size=2 DESIGNTIMESP=23416>Если номер поля
      field_offset не указан, при каждом вызове функции возвращаются свойства
      следующего поля из набора записей result. </FONT></P>
      <P DESIGNTIMESP=23417><FONT face=Tahoma size=2 DESIGNTIMESP=23418>Возвращаемый объект имеет
      следующие свойства (и содержит информацию): </FONT></P>
      <ul designtimesp=23419>
        <li designtimesp=23420><FONT face=Tahoma size=2 DESIGNTIMESP=23421>name — имя поля;
        </FONT>
        <li designtimesp=23422><FONT face=Tahoma size=2 DESIGNTIMESP=23423>table — имя таблицы,
        которой принадлежит поле; </FONT>
        <li designtimesp=23424><FONT face=Tahoma size=2 DESIGNTIMESP=23425>raax_length —
        максимальная длина поля; </FONT>
        <li designtimesp=23426><FONT face=Tahoma size=2 DESIGNTIMESP=23427>not_null — 1, если
        полю разрешено пустое значение; </FONT>
        <li designtimesp=23428><FONT face=Tahoma size=2 DESIGNTIMESP=23429>primary_key — 1, если
        поле является ключевым (primary key); </FONT>
        <li designtimesp=23430><FONT face=Tahoma size=2 DESIGNTIMESP=23431>unique_key — , если в
        ноле допускаются только уникальные значения (unique key); </FONT>
        <li designtimesp=23432><FONT face=Tahoma size=2 DESIGNTIMESP=23433>multiple_key — 1, если
        в поле допустимо иметь повторяющиеся значения; </FONT>
        <li designtimesp=23434><FONT face=Tahoma size=2 DESIGNTIMESP=23435>numeric — 1, если поле
        числовое; </FONT>
        <li designtimesp=23436><FONT face=Tahoma size=2 DESIGNTIMESP=23437>blob — 1, если поле
        имеет тип BLOB; </FONT>
        <li designtimesp=23438><FONT face=Tahoma size=2 DESIGNTIMESP=23439>type — чип поля;
        </FONT>
        <li designtimesp=23440><FONT face=Tahoma size=2 DESIGNTIMESP=23441>unsigned — 1, если
        поле числовое беззнаковое; </FONT>
        <li designtimesp=23442><FONT face=Tahoma size=2 DESIGNTIMESP=23443>zerofill — 1, если
        поле заполняется нулями (zero-filled). </FONT></LI></UL>
      <P class=list DESIGNTIMESP=23444><FONT face=Tahoma size=2 DESIGNTIMESP=23445>&lt;?php / <br
       designtimesp=23446>mysql_connect (Shost. $user. Spassword) <br
       designtimesp=23447>or die ("Could not connect"): <br
       designtimesp=23448>\ $result = mysql_db_query <br
       designtimesp=23449>("database", "select * from table") <br
       designtimesp=23450>or die ("Query failed"): \ \ <br
       designtimesp=23451>for($i =0: $1 &lt; mysqljium_fields <br
       designtimesp=23452>(Sresult): $i++)<br designtimesp=23453>{ echo
      "Метаданные поля $i:&lt;BR&gt;\n": <br designtimesp=23454>$meta =
      mysql_fetch_field <br designtimesp=23455>(Sresult): if (!$meta) { echo
      <br designtimesp=23456>"No information available&lt;BR&gt;\n"; <br
       designtimesp=23457>echo "&lt;PRE&gt; name $meta-&gt;<br
       designtimesp=23458>name table- $meta-&gt;table <br
       designtimesp=23459>type: $meta-&gt;type <br
       designtimesp=23460>roax_length: $meta-&gt;<br
       designtimesp=23461>max_length notjiull <br
       designtimesp=23462>$meta-&gt;not_pull <br designtimesp=23463>zerofill.
      $meta-&gt;zerof ill<br designtimesp=23464>umque_key. $meta-&gt;umque_key
      <br designtimesp=23465>pnmary_key: $meta-&gt;prTinary_key <br
       designtimesp=23466>|4ultiple_key $meta-&gt;multiple_key <br
       designtimesp=23467>numeric $meta-&gt;numeric <br
       designtimesp=23468>unsigned $meta-&gt;unsigned <br
       designtimesp=23469>blob $meta-&gt;blob &lt;/PRE&gt;". } <br
       designtimesp=23470>mysql_free_result (Sresult): ?&gt; </FONT></P>
      <P DESIGNTIMESP=23471><FONT face=Tahoma size=2 DESIGNTIMESP=23472>См. также
      mysql_field_seek(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23473><FONT face=Tahoma
      size=2 DESIGNTIMESP=23474>mysql_field_seek </FONT></P>
      <P DESIGNTIMESP=23475><FONT face=Tahoma size=2 DESIGNTIMESP=23476>Перемещение к указанному
      полю </FONT></P>
      <P DESIGNTIMESP=23477><FONT face=Tahoma size=2 DESIGNTIMESP=23478>int mysql_field_seek (int
      result, int field_offset) </FONT></P>
      <P DESIGNTIMESP=23479><FONT face=Tahoma size=2 DESIGNTIMESP=23480>Функция является
      излишней, и следующие фрагменты эквивалентны: </FONT></P>
      <P class=list DESIGNTIMESP=23481><FONT face=Tahoma size=2 DESIGNTIMESP=23482>$meta =
      mysql_fetch_field <br designtimesp=23483>(Sresult. field_offset): и
      mysql_fTeld_seek<br designtimesp=23484>(Sresult. field_offset) <br
       designtimesp=23485>imeta - mysql_fetch_field ($result). </FONT></P>
      <P DESIGNTIMESP=23486><FONT face=Tahoma size=2 DESIGNTIMESP=23487>Эта функция влияет только
      на mysql_fetch_field(), а остальные функции этого рода (см. ниже) требуют
      явного указания номера поля. </FONT></P>
      <P DESIGNTIMESP=23488><FONT face=Tahoma size=2 DESIGNTIMESP=23489>См. также
      mysql_fetch_field(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23490><FONT face=Tahoma
      size=2 DESIGNTIMESP=23491>mysql_field_name </FONT></P>
      <P DESIGNTIMESP=23492><FONT face=Tahoma size=2 DESIGNTIMESP=23493>Получение имени поля в
      наборе записей </FONT></P>
      <P DESIGNTIMESP=23494><FONT face=Tahoma size=2 DESIGNTIMESP=23495>string mysql_field_name
      (int result, int fie!d_index) </FONT></P>
      <P DESIGNTIMESP=23496><FONT face=Tahoma size=2 DESIGNTIMESP=23497>Функция возвращает имя
      поля с индексом field_offset (нумерация начинается с 0) в наборе записей
      result. </FONT></P>
      <P class=list DESIGNTIMESP=23498><FONT face=Tahoma size=2 DESIGNTIMESP=23499>$res =
      !nysql_db_query<br designtimesp=23500>( "users", "SELECT user_id.
      user-name<br designtimesp=23501>FROM users"): <br
       designtimesp=23502>echo mysql_field_name($res. !)<br
       designtimesp=23503>// выведет username </FONT></P>
      <P DESIGNTIMESP=23504><FONT face=Tahoma size=2 DESIGNTIMESP=23505>Ранее функция называлась
      mysql_fieldname(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23506><FONT face=Tahoma
      size=2 DESIGNTIMESP=23507>mysql_field_table </FONT></P>
      <P DESIGNTIMESP=23508><FONT face=Tahoma size=2 DESIGNTIMESP=23509>Получение имени таблицы,
      которой принадлежит поле из набора записей string mysql_field_table (int
      result, int field_offset) Ранее функция называлась mysqljfieldtable().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23510><FONT face=Tahoma
      size=2 DESIGNTIMESP=23511>mysql_field_len </FONT></P>
      <P DESIGNTIMESP=23512><FONT face=Tahoma size=2 DESIGNTIMESP=23513>Получение размера поля
      набора записей </FONT></P>
      <P DESIGNTIMESP=23514><FONT face=Tahoma size=2 DESIGNTIMESP=23515>int mysql_field_len (int
      result, int field_offset)</FONT></P>
      <P DESIGNTIMESP=23516><FONT face=Tahoma size=2 DESIGNTIMESP=23517>Ранее функция называлась
      mysql_fieldlen(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23518><FONT face=Tahoma
      size=2 DESIGNTIMESP=23519>mysql_field_type </FONT></P>
      <P DESIGNTIMESP=23520><FONT face=Tahoma size=2 DESIGNTIMESP=23521>Получение типа поля
      набора записей </FONT></P>
      <P DESIGNTIMESP=23522><FONT face=Tahoma size=2 DESIGNTIMESP=23523>string mysql _field_type
      (int result, int field_offset) Возвращаемая строка содержит название типа
      ноля: «int», «real», «string», «blob» или другого, описанного в
      документации по MySQL. </FONT></P>
      <P class=list DESIGNTIMESP=23524><FONT face=Tahoma size=2 DESIGNTIMESP=23525>&lt;?php <br
       designtimesp=23526>mysql_ccnnect (" local host.3306"). <br
       designtimesp=23527>mysql_select_db ("mydbl"): <br
       designtimesp=23528>$result = mysql_query ("SELECT * FROM tbll"); <br
       designtimesp=23529>Sfields = mysql_num_fields (Sresult): <br
       designtimesp=23530>Srows mysql nurn_rows ($result); <br
       designtimesp=23531>Si = 0; <br designtimesp=23532>Stable =
      mysql_field_table <br designtimesp=23533>(Sresult. $1). <br
       designtimesp=23534>echo "Таблица 'Stable' имеет<br
       designtimesp=23535>Sfields полей и Srows записей&lt;ВК&gt;": <br
       designtimesp=23536>echo "Структура таблицы: &lt;BR&gt;": <br
       designtimesp=23537>while ($1 &lt; Sfields) { <br
       designtimesp=23538>Stype = mysql_field_type <br
       designtimesp=23539>(Sresult. Si): <br designtimesp=23540>$name =
      mysql_field_name<br designtimesp=23541>(Sresult. Si): <br
       designtimesp=23542>Slen = mysql_field_len <br
       designtimesp=23543>(Sresult. Si): <br designtimesp=23544>Sflags -
      mysql_field_flags <br designtimesp=23545>(Sresult. Si): <br
       designtimesp=23546>echo Stype." ".$name." ".Slen."<br
       designtimesp=23547>".Sflags."<br designtimesp=23548>&lt;BR&gt;": Si++:
      mysql_close(): ?&gt; </FONT></P>
      <P DESIGNTIMESP=23549><FONT face=Tahoma size=2 DESIGNTIMESP=23550>Ранее функция называлась
      mysql_fieldtype(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23551><FONT face=Tahoma
      size=2 DESIGNTIMESP=23552>mysql_field_flags </FONT></P>
      <P DESIGNTIMESP=23553><FONT face=Tahoma size=2 DESIGNTIMESP=23554>Получение флагов поля
      записи </FONT></P>
      <P DESIGNTIMESP=23555><FONT face=Tahoma size=2 DESIGNTIMESP=23556>string mysql_field_flags
      (int result, int field_offset) </FONT></P>
      <P DESIGNTIMESP=23557><FONT face=Tahoma size=2 DESIGNTIMESP=23558>Поля записей в MySQL
      могут иметь следующие свойства-флаги: "notjiull", "pr1mary_key",
      "unique_key", "multiple_key", "blob", "unsigned", "zerofill", "binary",
      "enum", "auto_increment", "timestamp". </FONT></P>
      <P DESIGNTIMESP=23559><FONT face=Tahoma size=2 DESIGNTIMESP=23560>Функция возвращает
      перечисление через пробел флагов, имеющихся у поля с индексом field_offset
      (нумерация начинается с 0) в наборе записей result (разделить полученную
      строку на составляющие можно функцией exptode()). </FONT></P>
      <P DESIGNTIMESP=23561><FONT face=Tahoma size=2 DESIGNTIMESP=23562>Ранее функция называлась
      mysql_fieldflags(). </FONT></P>

      <P class=Text_Bold DESIGNTIMESP=23563><FONT face=Tahoma
      size=2 DESIGNTIMESP=23564>mysql_list_fields </FONT></P>
      <P DESIGNTIMESP=23565><FONT face=Tahoma size=2 DESIGNTIMESP=23566>Получение списка полей
      таблицы </FONT></P>
      <P DESIGNTIMESP=23567><FONT face=Tahoma size=2 DESIGNTIMESP=23568>int mysql_list_fields
      (string database_name, string table_name [, int linkjidentifier])
      </FONT></P>
      <P DESIGNTIMESP=23569><FONT face=Tahoma size=2 DESIGNTIMESP=23570>Функция возвращает пустой
      набор записей таблицы table_name из БД database_name, который можно
      использовать для получения информации о всех полях, имеющихся в таблице, с
      помощью функций </FONT></P>
      <P DESIGNTIMESP=23571><FONT face=Tahoma size=2 DESIGNTIMESP=23572>mysql_fetch_field(),
      mysql_field_flags(), mysql_fieldjen(), mysql_field_ name() и
      mysql_field_type(). </FONT></P>
      <P DESIGNTIMESP=23573><FONT face=Tahoma size=2 DESIGNTIMESP=23574>Заметьте: при ошибке
      возвращается -1, а в переменной Sphperrmsg сохраняется сообщение об ошибке
      и (если функция не была вызвана с оператором @) распечатывается сообщение
      об ошибке. </FONT></P>
      <P class=list DESIGNTIMESP=23575><FONT face=Tahoma size=2 DESIGNTIMESP=23576>$link =
      mysql_cornect<br designtimesp=23577>('localhost'. 'myname'. 'secret');
      <br designtimesp=23578>Sfields = mysql_list_fields<br
       designtimesp=23579>("databasel", "tablel", $link):<br
       designtimesp=23580>Scolumns = mysql_num_fields($fields); <br
       designtimesp=23581>// число полей в таблице <br designtimesp=23582>//
      распечатать имена всех полей <br designtimesp=23583>таблицы for ($1 = 0:
      $1 &lt; Scolumns; $i++)<br designtimesp=23584>{ <br
       designtimesp=23585>echo mysql_field_name<br
       designtimesp=23586>($fields. $1) . "\n".; } </FONT></P>
      <P DESIGNTIMESP=23587><FONT face=Tahoma size=2 DESIGNTIMESP=23588>Ранее функция называлась
      mysql_listfields(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23589><FONT face=Tahoma
      size=2 DESIGNTIMESP=23590>mysql_num_fields </FONT></P>
      <P DESIGNTIMESP=23591><FONT face=Tahoma size=2 DESIGNTIMESP=23592>Получение числа полей в
      наборе записей </FONT></P>
      <P DESIGNTIMESP=23593><FONT face=Tahoma size=2 DESIGNTIMESP=23594>int mysq"ljium_fields
      (int result) </FONT></P>
      <P DESIGNTIMESP=23595><FONT face=Tahoma size=2 DESIGNTIMESP=23596>См. также:
      mysql_db_query(), mysql_query(), mysql_fetch_field(), mysql_ num_rows().
      </FONT></P>
      <P DESIGNTIMESP=23597><FONT face=Tahoma size=2 DESIGNTIMESP=23598>Ранее функция называлась
      mysqljiumfields(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23599><FONT face=Tahoma
      size=2 DESIGNTIMESP=23600>mysql_errno</FONT></P>
      <P DESIGNTIMESP=23601><FONT face=Tahoma size=2 DESIGNTIMESP=23602>Получение кода ошибки
      MySQL </FONT></P>
      <P DESIGNTIMESP=23603><FONT face=Tahoma size=2 DESIGNTIMESP=23604>int mysql_errno ([int
      link_identifier]) </FONT></P>
      <P DESIGNTIMESP=23605><FONT face=Tahoma size=2 DESIGNTIMESP=23606>Возвращает номер ошибки,
      произошедшей в ходе выполнения последней функции MySQL, или 0, если ошибки
      не произошло. </FONT></P>
      <P DESIGNTIMESP=23607><FONT face=Tahoma size=2 DESIGNTIMESP=23608>Ранее ошибки,
      происходящие при операциях с MySQL, выдавались в виде предупреждений, но
      сейчас возникновение ошибок нужно выявлять самостоятельно. </FONT></P>
      <P DESIGNTIMESP=23609><FONT face=Tahoma size=2 DESIGNTIMESP=23610>Предупреждения выводятся
      только при неудачных подключениях или при попытке использования
      несуществующего ресурса (например, набора записей). </FONT></P>
      <P class=list DESIGNTIMESP=23611><FONT face=Tahoma size=2 DESIGNTIMESP=23612>&lt;?php <br
       designtimesp=23613>mysql_connect(); <br
       designtimesp=23614>mysql_select_db("non_exi stent_db"): <br
       designtimesp=23615>echo mysql_errno().":<br
       designtimesp=23616>".mysql_error()."&lt;BR&gt;"<br
       designtimesp=23617>mysql_query("SELECT *<br designtimesp=23618>FROM
      non_existent_table"): <br designtimesp=23619>echo mysql_errno() ";<br
       designtimesp=23620>".mysql_error().<br
       designtimesp=23621>"&lt;BR&gt;"; ?&gt; </FONT></P>
      <P DESIGNTIMESP=23622><FONT face=Tahoma size=2 DESIGNTIMESP=23623>См. также mysql_error().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23624><FONT face=Tahoma
      size=2 DESIGNTIMESP=23625>mysql_error </FONT></P>
      <P DESIGNTIMESP=23626><FONT face=Tahoma size=2 DESIGNTIMESP=23627>Получение сообщения об
      ошибке MySQL </FONT></P>
      <P DESIGNTIMESP=23628><FONT face=Tahoma size=2 DESIGNTIMESP=23629>string mysql_error ([int
      link_identifier]) </FONT></P>
      <P DESIGNTIMESP=23630><FONT face=Tahoma size=2 DESIGNTIMESP=23631>Возвращает сообщение об
      ошибке, произошедшей в ходе выполнения последней функции MySQL, или пустую
      строку, если ошибки не произошло. </FONT></P>
      <P class=list DESIGNTIMESP=23632><FONT face=Tahoma size=2 DESIGNTIMESP=23633>&lt;?php <br
       designtimesp=23634>mysql_ccnnect(). <br
       designtimesp=23635>mysql_select_db("non_existent_db"); <br
       designtimesp=23636>echo mysql_errno().":<br designtimesp=23637>"
      mysql_error() "&lt;BR&gt;".<br designtimesp=23638>$conn =
      mysql_query("SELECT *<br designtimesp=23639>FROM
      non_exibtent_table");<br designtimesp=23640>echo mysql_errno() ":
      ",mysql_error()<br designtimesp=23641>"&lt;BR&gt;"; ?&gt; </FONT></P>
      <P DESIGNTIMESP=23642><FONT face=Tahoma size=2 DESIGNTIMESP=23643>См. также mysql_errno().
      </FONT></P>
      <P class=Title_2 DESIGNTIMESP=23644><a name=3
       designtimesp=23645></A><FONT face=Tahoma size=2 DESIGNTIMESP=23646>mSQL </FONT></P>
      <P DESIGNTIMESP=23647><FONT face=Tahoma size=2 DESIGNTIMESP=23648>Данная группа функций
      позволяет работать с серверами БД mSQL. Для того чтобы их можно было
      использовать, РНР нужно скомпилировать с параметром —with-msql[=dir], где
      можно указать каталог размещения mSQL (по умолчанию это
      /usr/local/Hughes). </FONT></P>
      <P DESIGNTIMESP=23649><FONT face=Tahoma size=2 DESIGNTIMESP=23650>Документацию но mSQL
      можно найти по адресу http://www.hughes. \ com.au/. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23651><FONT face=Tahoma
      size=2 DESIGNTIMESP=23652>msql_connect </FONT></P>
      <P DESIGNTIMESP=23653><FONT face=Tahoma size=2 DESIGNTIMESP=23654>Подключение к серверу
      mSQL </FONT></P>
      <P DESIGNTIMESP=23655><FONT face=Tahoma size=2 DESIGNTIMESP=23656>int msql_connect ([string
      hostname [, string hostname[:port] [, string user-name [, string
      passworo&gt;] </FONT></P>
      <P DESIGNTIMESP=23657><FONT face=Tahoma size=2 DESIGNTIMESP=23658>Возвращает дескриптор
      подключения к БД или FALSE — при ошибке. </FONT></P>
      <P DESIGNTIMESP=23659><FONT face=Tahoma size=2 DESIGNTIMESP=23660>Если не указывается имя
      хоста, то производится локальное подключение. </FONT></P>
      <P DESIGNTIMESP=23661><FONT face=Tahoma size=2 DESIGNTIMESP=23662>Если функция повторно
      вызывается с теми же аргументами, новое подключение не создается, а
      возвращается идентификатор уже имеющегося. </FONT></P>
      <P DESIGNTIMESP=23663><FONT face=Tahoma size=2 DESIGNTIMESP=23664>В конце сценария принято
      закрывать подключение функцией msql_ close(), но этого можно и не делать,
      поскольку РНР автоматически закрывает все (неустойчивые) подключения при
      завершении сценария. </FONT></P>
      <P DESIGNTIMESP=23665><FONT face=Tahoma size=2 DESIGNTIMESP=23666>См. также:
      msql_pconnect(), msql_close(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23667><FONT face=Tahoma
      size=2 DESIGNTIMESP=23668>msql_pconnect </FONT></P>
      <P DESIGNTIMESP=23669><FONT face=Tahoma size=2 DESIGNTIMESP=23670>Создание устойчивого
      подключения к серверу mSQL </FONT></P>
      <P DESIGNTIMESP=23671><FONT face=Tahoma size=2 DESIGNTIMESP=23672>int msqlj&gt;connect
      ([string hostname [, string hostname[:port] [, string username [, string
      password&gt;) </FONT></P>
      <P DESIGNTIMESP=23673><FONT face=Tahoma size=2 DESIGNTIMESP=23674>Возвращает дескриптор
      подключения к БД или FALSE — при ошибке. msql_pconnect() действует подобно
      msql_connect() с двумя отличиями: </FONT></P>
      <P DESIGNTIMESP=23675><FONT face=Tahoma size=2 DESIGNTIMESP=23676>Перед подключением
      функция пытается проверить, имеется ли уже открытое (устойчивое)
      подключение с параметрами (имя сервера, пользователя и пароль),
      аналогичными указанным. Если такое подключение обнаруживается, то
      возвращается его идентификатор вместо создания нового подключения.
      </FONT></P>
      <P DESIGNTIMESP=23677><FONT face=Tahoma size=2 DESIGNTIMESP=23678>При завершении сценария
      подключение не закрывается, а остается действительным для дальнейшего
      использования. (Функция msql_ close() не может закрыть подключения,
      созданные с помощью msql_ pconnect().) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23679><FONT face=Tahoma
      size=2 DESIGNTIMESP=23680>msql_close </FONT></P>
      <P DESIGNTIMESP=23681><FONT face=Tahoma size=2 DESIGNTIMESP=23682>Отключение от сервера
      mSQL int msq]_close (int link_identifier)</FONT></P>
      <P DESIGNTIMESP=23683><FONT face=Tahoma size=2 DESIGNTIMESP=23684>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=23685><FONT face=Tahoma size=2 DESIGNTIMESP=23686>Идентификатор
      закрываемого подключения указывается в аргументе link_identifier; если его
      не указывать, то закрывается последнее открытое данным сценарием
      подключение. </FONT></P>
      <P DESIGNTIMESP=23687><FONT face=Tahoma size=2 DESIGNTIMESP=23688>Фактически использование
      данной функции не является обязательным, так как РНР автоматически
      закрывает все незакрытые неустойчивые подключения при завершении сценария.
      </FONT></P>
      <P DESIGNTIMESP=23689><FONT face=Tahoma size=2 DESIGNTIMESP=23690>Обратите внимание, что
      устойчивые подключения, созданные функцией msql_pconnect(), не
      закрываются. </FONT></P>
      <P DESIGNTIMESP=23691><FONT face=Tahoma size=2 DESIGNTIMESP=23692>См. также: msql_connect()
      и msql_pconnect(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23693><FONT face=Tahoma
      size=2 DESIGNTIMESP=23694>msql_list_dbs </FONT></P>
      <P DESIGNTIMESP=23695><FONT face=Tahoma size=2 DESIGNTIMESP=23696>Получение списка БД на
      сервере mSQL </FONT></P>
      <P DESIGNTIMESP=23697><FONT face=Tahoma size=2 DESIGNTIMESP=23698>int msq"Mist_dbs(void);
      </FONT></P>
      <P DESIGNTIMESP=23699><FONT face=Tahoma size=2 DESIGNTIMESP=23700>Возвращает набор записей,
      содержащий список имеющихся БД на сервере. Используйте функцию
      msql_dbname(), чтобы получить элементы этого списка. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23701><FONT face=Tahoma
      size=2 DESIGNTIMESP=23702>msql_dbname </FONT></P>
      <P DESIGNTIMESP=23703><FONT face=Tahoma size=2 DESIGNTIMESP=23704>Получение имени БД mSQL
      </FONT></P>
      <P DESIGNTIMESP=23705><FONT face=Tahoma size=2 DESIGNTIMESP=23706>string msql_dbname (int
      query_identifier. int i) </FONT></P>
      <P DESIGNTIMESP=23707><FONT face=Tahoma size=2 DESIGNTIMESP=23708>Функция используется для
      обработки набора записей query_identifier, возвращенного msqlJIistdbs(); в
      аргументе указывается номер записи. Возвращается имя БД или FALSE — при
      ошибке. </FONT></P>
      <P DESIGNTIMESP=23709><FONT face=Tahoma size=2 DESIGNTIMESP=23710>Число записей можно
      определить функцией msql_numrows(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23711><FONT face=Tahoma
      size=2 DESIGNTIMESP=23712>msql_create_db </FONT></P>
      <P DESIGNTIMESP=23713><FONT face=Tahoma size=2 DESIGNTIMESP=23714>Создание БД mSQL
      </FONT></P>
      <P DESIGNTIMESP=23715><FONT face=Tahoma size=2 DESIGNTIMESP=23716>int msql_create_db
      (string database name [, int link_identifier]) </FONT></P>
      <P DESIGNTIMESP=23717><FONT face=Tahoma size=2 DESIGNTIMESP=23718>Создает БД dbname,
      используя подключение link_identifier. </FONT></P>
      <P DESIGNTIMESP=23719><FONT face=Tahoma size=2 DESIGNTIMESP=23720>Функция имеет синоним
      msql_createdb(). </FONT></P>
      <P DESIGNTIMESP=23721><FONT face=Tahoma size=2 DESIGNTIMESP=23722>См. также msql_drop_db().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23723><FONT face=Tahoma
      size=2 DESIGNTIMESP=23724>msql_drop_db </FONT></P>
      <P DESIGNTIMESP=23725><FONT face=Tahoma size=2 DESIGNTIMESP=23726>Удаление БД mSQL
      </FONT></P>
      <P DESIGNTIMESP=23727><FONT face=Tahoma size=2 DESIGNTIMESP=23728>int msql_drop_db (string
      database_name, int link identifier) </FONT></P>
      <P DESIGNTIMESP=23729><FONT face=Tahoma size=2 DESIGNTIMESP=23730>Возвращает TRUE, если БД
      databasejiame успешно удалена, или FALSE при ошибке. </FONT></P>
      <P DESIGNTIMESP=23731><FONT face=Tahoma size=2 DESIGNTIMESP=23732>Функция имеет синоним
      msql_dropdb(). </FONT></P>
      <P DESIGNTIMESP=23733><FONT face=Tahoma size=2 DESIGNTIMESP=23734>См. также
      msql_create_db(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23735><FONT face=Tahoma
      size=2 DESIGNTIMESP=23736>msql_list_tables </FONT></P>
      <P DESIGNTIMESP=23737><FONT face=Tahoma size=2 DESIGNTIMESP=23738>Получение списка таблиц в
      БД </FONT></P>
      <P DESIGNTIMESP=23739><FONT face=Tahoma size=2 DESIGNTIMESP=23740>int msql_list_tables
      (string database) </FONT></P>
      <P DESIGNTIMESP=23741><FONT face=Tahoma size=2 DESIGNTIMESP=23742>Возвращает набор записей,
      содержащий список БД на сервере. Для извлечения отдельных записей
      используется функция msql_tablename(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23743><FONT face=Tahoma
      size=2 DESIGNTIMESP=23744>msql_tablename </FONT></P>
      <P DESIGNTIMESP=23745><FONT face=Tahoma size=2 DESIGNTIMESP=23746>Получение имени таблицы
      </FONT></P>
      <P DESIGNTIMESP=23747><FONT face=Tahoma size=2 DESIGNTIMESP=23748>string msql_tablename
      (int query_identifier, int i) </FONT></P>
      <P DESIGNTIMESP=23749><FONT face=Tahoma size=2 DESIGNTIMESP=23750>Функция используется для
      получения имени таблицы (с номером ) из набора записей query_identifier,
      возвращенного функцией mysql_ Hst_tables(). </FONT></P>
      <P class=list DESIGNTIMESP=23751><FONT face=Tahoma size=2 DESIGNTIMESP=23752>&lt;?php <br
       designtimesp=23753>msql_connect ("localhost")<br
       designtimesp=23754>$result = msql_list_tables ("myDB"): <br
       designtimesp=23755>$1 = 0. <br designtimesp=23756>while ($1 &lt;
      msqljiumrovvs <br designtimesp=23757>($result)) { <br
       designtimesp=23758>$tb_names[$i] = <br
       designtimesp=23759>msql_tablename (Sresult. $i): <br
       designtimesp=23760>echo $tb_names[$i] .<br
       designtimesp=23761>"&lt;BR&gt;":1T++; } ?&gt; </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23762><FONT face=Tahoma
      size=2 DESIGNTIMESP=23763>msql_select_db </FONT></P>
      <P DESIGNTIMESP=23764><FONT face=Tahoma size=2 DESIGNTIMESP=23765>Выбор БД mSQL </FONT></P>
      <P DESIGNTIMESP=23766><FONT face=Tahoma size=2 DESIGNTIMESP=23767>int msql_selectjjb
      (string database_name, int linkjdentifier) Возвращает TRUE или FALSE - при
      ошибке. </FONT></P>
      <P DESIGNTIMESP=23768><FONT face=Tahoma size=2 DESIGNTIMESP=23769>Делает БД с именем
      databasejiame активной для текущего подключения или указанного в
      linkjdentifier. Если подключений не имеется, то косвенно вызывается
      функция mysql_connect() с параметрами по умолчанию. </FONT></P>
      <P DESIGNTIMESP=23770><FONT face=Tahoma size=2 DESIGNTIMESP=23771>Последующие запросы,
      выполняемые функцией, будут адресованы данной БД. </FONT></P>
      <P DESIGNTIMESP=23772><FONT face=Tahoma size=2 DESIGNTIMESP=23773>Функция имеет синоним
      msql_selectdb(). </FONT></P>
      <P DESIGNTIMESP=23774><FONT face=Tahoma size=2 DESIGNTIMESP=23775>См. также:
      msql_connect(), msql_pconnect() и msql_query(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23776><FONT face=Tahoma
      size=2 DESIGNTIMESP=23777>msql_regcase </FONT></P>
      <P DESIGNTIMESP=23778><FONT face=Tahoma size=2 DESIGNTIMESP=23779>Создание регулярного
      выражения для поиска, нечувствительного к регистру </FONT></P>
      <P DESIGNTIMESP=23780><FONT face=Tahoma size=2 DESIGNTIMESP=23781>См. также: sql_regcase().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23782><FONT face=Tahoma
      size=2 DESIGNTIMESP=23783>msql_query </FONT></P>
      <P DESIGNTIMESP=23784><FONT face=Tahoma size=2 DESIGNTIMESP=23785>Выполнение запроса к БД
      </FONT></P>
      <P DESIGNTIMESP=23786><FONT face=Tahoma size=2 DESIGNTIMESP=23787>int rasql_query (string
      query, [int linkjdentifier]).</FONT></P>
      <P DESIGNTIMESP=23788><FONT face=Tahoma size=2 DESIGNTIMESP=23789>Посылает запрос текущей
      БД, активной для текущего подключения или указанного в linkjdentifier.
      Если подключений не имеется, то косвенно вызывается функция msql_connect()
      с параметрами по умолчанию. </FONT></P>
      <P DESIGNTIMESP=23790><FONT face=Tahoma size=2 DESIGNTIMESP=23791>Если выражение содержит
      ошибки или при его выполнении возникают ошибки (например, если текущие
      привилегии не позволяют выполнить запрос), то функция возвращает FALSE.
      Если запрос успешно выполнился, то возвращается набор записей (не
      забывайте, Он также может содержать 0 записей), который может быть
      обработан функциями: </FONT></P>
      <ul designtimesp=23792>
        <li designtimesp=23793><FONT face=Tahoma size=2 DESIGNTIMESP=23794>msql_result() —
        получить элемент набора записей: </FONT>
        <li designtimesp=23795><FONT face=Tahoma size=2 DESIGNTIMESP=23796>msqljretch_array() -
        занести запись в массив; </FONT>
        <li designtimesp=23797><FONT face=Tahoma size=2 DESIGNTIMESP=23798>msql _fetdn_ra* () -
        занести запись в нумерованный массив; </FONT>
        <li designtimesp=23799><FONT face=Tahoma size=2 DESIGNTIMESP=23800>msql_fetch_object() -
        занести запись в объект. </FONT></LI></UL>
      <P DESIGNTIMESP=23801><FONT face=Tahoma size=2 DESIGNTIMESP=23802>Чтобы выяснить, сколько
      записей было возвращено командой SELECT, </FONT></P>
      <P DESIGNTIMESP=23803><FONT face=Tahoma size=2 DESIGNTIMESP=23804>используйте функцию
      msql_num_rows(); а чтобы выяснить, сколько описей было изменено в
      результате выполнения запросов DELETE, PLACE или UPDATE, используйте
      функцию msql_affected_rows(). </FONT></P>
      <P DESIGNTIMESP=23805><FONT face=Tahoma size=2 DESIGNTIMESP=23806>После обработки
      результатов запроса он может быть удален функцией mysql_free_result().
      </FONT></P>
      <P DESIGNTIMESP=23807><FONT face=Tahoma size=2 DESIGNTIMESP=23808>См. также: rasq(),
      msql_select_db() и msql_connect(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23809><FONT face=Tahoma size=2 DESIGNTIMESP=23810>msql
      </FONT></P>
      <P DESIGNTIMESP=23811><FONT face=Tahoma size=2 DESIGNTIMESP=23812>Выполнение запроса к
      указанной БД </FONT></P>
      <P DESIGNTIMESP=23813><FONT face=Tahoma size=2 DESIGNTIMESP=23814>int msql (string
      database, string query, int link_identifier) </FONT></P>
      <P DESIGNTIMESP=23815><FONT face=Tahoma size=2 DESIGNTIMESP=23816>Функция подобна
      msql_query() с тем отличием, что БД database, которой посылается запрос,
      здесь указывается явно. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23817><FONT face=Tahoma
      size=2 DESIGNTIMESP=23818>msql_num_rows </FONT></P>
      <P DESIGNTIMESP=23819><FONT face=Tahoma size=2 DESIGNTIMESP=23820>Получение числа
      возвращенных записей </FONT></P>
      <P DESIGNTIMESP=23821><FONT face=Tahoma size=2 DESIGNTIMESP=23822>int msql_num_rows (int
      queryjidentifier) </FONT></P>
      <P DESIGNTIMESP=23823><FONT face=Tahoma size=2 DESIGNTIMESP=23824>Функция возвращает число
      записей, возвращенных запросом. </FONT></P>
      <P DESIGNTIMESP=23825><FONT face=Tahoma size=2 DESIGNTIMESP=23826>См. также: msql(),
      msql_query() и msql_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23827><FONT face=Tahoma
      size=2 DESIGNTIMESP=23828>msql_affected_rows </FONT></P>
      <P DESIGNTIMESP=23829><FONT face=Tahoma size=2 DESIGNTIMESP=23830>Получение числа
      измененных записей в БД </FONT></P>
      <P DESIGNTIMESP=23831><FONT face=Tahoma size=2 DESIGNTIMESP=23832>int msql_affected_rows
      (int query_identifier) </FONT></P>
      <P DESIGNTIMESP=23833><FONT face=Tahoma size=2 DESIGNTIMESP=23834>Функция возвращает число
      записей, которых «коснулся» запрос (при выборке, удалении, обновлении).
      </FONT></P>
      <P DESIGNTIMESP=23835><FONT face=Tahoma size=2 DESIGNTIMESP=23836>См. также msql query().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23837><FONT face=Tahoma
      size=2 DESIGNTIMESP=23838>msql_result </FONT></P>
      <P DESIGNTIMESP=23839><FONT face=Tahoma size=2 DESIGNTIMESP=23840>Получение элемента набора
      записей </FONT></P>
      <P DESIGNTIMESP=23841><FONT face=Tahoma size=2 DESIGNTIMESP=23842>int msql_result (int
      query_identifier, int row, mixed field) </FONT></P>
      <P DESIGNTIMESP=23843><FONT face=Tahoma size=2 DESIGNTIMESP=23844>Возвращает содержимое
      ячейки из набора записей query_identifier. В аргументе row указывается
      номер записи (нумерация начинается с 0), в аргументе field можно указать
      индекс поля (число), имя поля, полное имя поля (вида:
      «имя_таблицы.имя_поля») или псевдоним поля. </FONT></P>
      <P DESIGNTIMESP=23845><FONT face=Tahoma size=2 DESIGNTIMESP=23846>При работе с большими
      наборами записей быстрее выполняются функции типа _fetch_ (см. ниже).
      Также заметьте, что численные индексы обрабатываются быстрее строковых.
      </FONT></P>
      <P DESIGNTIMESP=23847><FONT face=Tahoma size=2 DESIGNTIMESP=23848>Не следует вызывать
      функцию msql_result() в сочетании с другими функциями обработки набора
      записей. </FONT></P>
      <P DESIGNTIMESP=23849><FONT face=Tahoma size=2 DESIGNTIMESP=23850>Рекомендуется
      использовать альтернативные функции: msql_fetch_ row(), msql_fetch_array()
      и msql_fetch_object(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23851><FONT face=Tahoma
      size=2 DESIGNTIMESP=23852>msql_data_seek </FONT></P>
      <P DESIGNTIMESP=23853><FONT face=Tahoma size=2 DESIGNTIMESP=23854>Перемещение курсора
      набора записей </FONT></P>
      <P DESIGNTIMESP=23855><FONT face=Tahoma size=2 DESIGNTIMESP=23856>int msql_data_seek (int
      query_identifier. int rowjnumber) </FONT></P>
      <P DESIGNTIMESP=23857><FONT face=Tahoma size=2 DESIGNTIMESP=23858>При каждом вызове функции
      msql_fetch_row() (или подобной ей) внутренний курсор записи смещается на
      следующую запись. Данная функция позволяет свободно переметать курсор в
      наборе записей query_identifier так, чтобы он указывал на запись с номером
      row_ number (нумерация начинается с 0). </FONT></P>
      <P DESIGNTIMESP=23859><FONT face=Tahoma size=2 DESIGNTIMESP=23860>Функция возвращает TRUE
      пли FALSE — при ошибке. </FONT></P>
      <P DESIGNTIMESP=23861><FONT face=Tahoma size=2 DESIGNTIMESP=23862>См. также
      msql_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23863><FONT face=Tahoma
      size=2 DESIGNTIMESP=23864>msql_fetch_array </FONT></P>
      <P DESIGNTIMESP=23865><FONT face=Tahoma size=2 DESIGNTIMESP=23866>Занесение записи в массив
      </FONT></P>
      <P DESIGNTIMESP=23867><FONT face=Tahoma size=2 DESIGNTIMESP=23868>int msql_fetch_array (int
      query_identifier [, int result_type]) </FONT></P>
      <P DESIGNTIMESP=23869><FONT face=Tahoma size=2 DESIGNTIMESP=23870>Возвращает
      соответствующий текущей записи массив из набора записей query_identifier,
      возвращенных запросом, или FALSE, если записей более не имеется.
      </FONT></P>
      <P DESIGNTIMESP=23871><FONT face=Tahoma size=2 DESIGNTIMESP=23872>Данная функция является
      расширением функции msql_fetch_row(); она может возвращать нумерованный
      или ассоциативный массив (или объединенный). Вид возвращаемого массива
      может указываться в аргументе resultjtype одной из констант: MYSQL_NUM,
      MYSQL_ASSOC, MYSQL_BOTH (по умолчанию). </FONT></P>
      <P DESIGNTIMESP=23873><FONT face=Tahoma size=2 DESIGNTIMESP=23874>В ассоциативных массивах
      индексами служат имена нолей. Если имеются одноименные поля, используется
      последнее. Для доступа к одноименным полям также можно использовать
      числовые индек-т сы (поля нумеруются в той последовательности, в которой
      указаны в запросе или в таблице) или псевдонимы. </FONT></P>
      <P DESIGNTIMESP=23875><FONT face=Tahoma size=2 DESIGNTIMESP=23876>Заметьте, что функция
      работает лишь немного медленнее, чем mysql_ fetch_row(), но предоставляет
      дополнительную функциональность. </FONT></P>
      <P DESIGNTIMESP=23877><FONT face=Tahoma size=2 DESIGNTIMESP=23878>Будьте внимательны с
      обработкой записей, которые содержат единственное поле, имеющее значение 0
      (или пустую строку, или NULL). </FONT></P>
      <P DESIGNTIMESP=23879><FONT face=Tahoma size=2 DESIGNTIMESP=23880>См. также
      msql_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23881><FONT face=Tahoma
      size=2 DESIGNTIMESP=23882>msql_fetch_row </FONT></P>
      <P DESIGNTIMESP=23883><FONT face=Tahoma size=2 DESIGNTIMESP=23884>Занесение записи в
      нумерованный массив </FONT></P>
      <P DESIGNTIMESP=23885><FONT face=Tahoma size=2 DESIGNTIMESP=23886>array msql_fetch_row (int
      query_identifier) </FONT></P>
      <P DESIGNTIMESP=23887><FONT face=Tahoma size=2 DESIGNTIMESP=23888>Возвращает
      соответствующий текущей записи массив из набора записей query_identifier,
      возвращенных запросом (последующий вызов функции возвращает следующую
      запись), или FALSE, если записей более не имеется. </FONT></P>
      <P DESIGNTIMESP=23889><FONT face=Tahoma size=2 DESIGNTIMESP=23890>Каждое поле записи
      сохраняется в нумерованном элементе массива (нумерация начинается с 0).
      </FONT></P>

      <P DESIGNTIMESP=23891><FONT face=Tahoma size=2 DESIGNTIMESP=23892>См. также:
      msql_fetch_array(), msq()_fetch_object(), msql_data_seek() и
      msql_result(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23893><FONT face=Tahoma
      size=2 DESIGNTIMESP=23894>msql_fetch_object </FONT></P>
      <P DESIGNTIMESP=23895><FONT face=Tahoma size=2 DESIGNTIMESP=23896>Получение записи в
      свойствах объекта </FONT></P>
      <P DESIGNTIMESP=23897><FONT face=Tahoma size=2 DESIGNTIMESP=23898>int msql_fetch_object
      (int query_identifier [, int resul t_type]) </FONT></P>
      <P DESIGNTIMESP=23899><FONT face=Tahoma size=2 DESIGNTIMESP=23900>Возвращает объект, в
      свойствах которого находятся поля текущей записи, или FALSE, если записей
      более не имеется. </FONT></P>
      <P DESIGNTIMESP=23901><FONT face=Tahoma size=2 DESIGNTIMESP=23902>По скорости выполнения
      функция идентична mysql_fetch_array() и почти идентична mysql_fetch_row().
      </FONT></P>
      <P DESIGNTIMESP=23903><FONT face=Tahoma size=2 DESIGNTIMESP=23904>См. также:
      msql_fetch_array() и msq"l_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23905><FONT face=Tahoma
      size=2 DESIGNTIMESP=23906>msql_fetch_field </FONT></P>
      <P DESIGNTIMESP=23907><FONT face=Tahoma size=2 DESIGNTIMESP=23908>Получение информации о
      поле записи в свойствах объекта </FONT></P>
      <P DESIGNTIMESP=23909><FONT face=Tahoma size=2 DESIGNTIMESP=23910>object msql_fetch_field
      (int query_identifier, Int field_offset) </FONT></P>
      <P DESIGNTIMESP=23911><FONT face=Tahoma size=2 DESIGNTIMESP=23912>Если номер поля fi el
      d_offset не указан, при каждом вызове функции возвращаются свойства
      следующего поля из набора записей query_ identifier. </FONT></P>
      <P DESIGNTIMESP=23913><FONT face=Tahoma size=2 DESIGNTIMESP=23914>Возвращаемый объект имеет
      следующие свойства (и содержит информацию): </FONT></P>
      <ul designtimesp=23915>
        <li designtimesp=23916><FONT face=Tahoma size=2 DESIGNTIMESP=23917>name — имя поля;
        </FONT>
        <li designtimesp=23918><FONT face=Tahoma size=2 DESIGNTIMESP=23919>table — имя таблицы,
        которой принадлежит поле; </FONT>
        <li designtimesp=23920><FONT face=Tahoma size=2 DESIGNTIMESP=23921>notjiull — 1, если
        полю разрешено пустое значение; </FONT>
        <li designtimesp=23922><FONT face=Tahoma size=2 DESIGNTIMESP=23923>primary_key — 1, если
        поле является ключевым; </FONT>
        <li designtimesp=23924><FONT face=Tahoma size=2 DESIGNTIMESP=23925>unique_key -- 1, если
        в поле допускаются только уникальные значения; </FONT>
        <li designtimesp=23926><FONT face=Tahoma size=2 DESIGNTIMESP=23927>type — тип поля.
        </FONT></LI></UL>
      <P DESIGNTIMESP=23928><FONT face=Tahoma size=2 DESIGNTIMESP=23929>См. также
      msql_field_seek(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23930><FONT face=Tahoma
      size=2 DESIGNTIMESP=23931>msql_field_seek </FONT></P>
      <P DESIGNTIMESP=23932><FONT face=Tahoma size=2 DESIGNTIMESP=23933>Перемещение к указанному
      полю </FONT></P>
      <P DESIGNTIMESP=23934><FONT face=Tahoma size=2 DESIGNTIMESP=23935>int msql_field_seek (int
      query_identifier, int field_offset) </FONT></P>
      <P DESIGNTIMESP=23936><FONT face=Tahoma size=2 DESIGNTIMESP=23937>Последующий вызов
      msql_fetch_field() (если в нем не указан номер поля) будет возвращать
      информацию о поле с указанным номером field_offset. </FONT></P>
      <P DESIGNTIMESP=23938><FONT face=Tahoma size=2 DESIGNTIMESP=23939>См. также
      msql_fetch_field(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23940><FONT face=Tahoma
      size=2 DESIGNTIMESP=23941>msql_fieldname </FONT></P>
      <P DESIGNTIMESP=23942><FONT face=Tahoma size=2 DESIGNTIMESP=23943>Получение имени поля в
      наборе записей </FONT></P>
      <P DESIGNTIMESP=23944><FONT face=Tahoma size=2 DESIGNTIMESP=23945>string msql_fieldname
      (int query_identifier, int field) </FONT>
      <P DESIGNTIMESP=23946><FONT face=Tahoma size=2 DESIGNTIMESP=23947>Функция возвращает имя
      ноля с индексом field в наборе записей query_identifier. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23948><FONT face=Tahoma
      size=2 DESIGNTIMESP=23949>msql_fieldtable </FONT></P>
      <P DESIGNTIMESP=23950><FONT face=Tahoma size=2 DESIGNTIMESP=23951>Получение имени таблицы,
      которой принадлежит поле из набора записей </FONT></P>
      <P DESIGNTIMESP=23952><FONT face=Tahoma size=2 DESIGNTIMESP=23953>int msql_fieldtable (int
      query_identifier, int field) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23954><FONT face=Tahoma
      size=2 DESIGNTIMESP=23955>msql_fieldtype </FONT></P>
      <P DESIGNTIMESP=23956><FONT face=Tahoma size=2 DESIGNTIMESP=23957>Получение типа поля
      набора записей </FONT></P>
      <P DESIGNTIMESP=23958><FONT face=Tahoma size=2 DESIGNTIMESP=23959>string rasql_fieldtype
      (int query_identifier, int i) </FONT></P>
      <P DESIGNTIMESP=23960><FONT face=Tahoma size=2 DESIGNTIMESP=23961>Возвращаемая строка
      содержит название тина поля: «int», «real», «string», «blob» или другого,
      описанного в документации. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23962><FONT face=Tahoma
      size=2 DESIGNTIMESP=23963>msql_fieldflags </FONT></P>
      <P DESIGNTIMESP=23964><FONT face=Tahoma size=2 DESIGNTIMESP=23965>Получение флага поля
      записи </FONT></P>
      <P DESIGNTIMESP=23966><FONT face=Tahoma size=2 DESIGNTIMESP=23967>string msql_fieldflags
      (int query_identifier, int i) </FONT></P>
      <P DESIGNTIMESP=23968><FONT face=Tahoma size=2 DESIGNTIMESP=23969>Поля записей в mSQL Moiyr
      иметь два флага: «notjiull», «primary_key». </FONT></P>
      <P DESIGNTIMESP=23970><FONT face=Tahoma size=2 DESIGNTIMESP=23971>Функция возвращает
      перечисление через пробел флагов, имеющихся у поля с индексом i (нумерация
      начинается с 0) в наборе записей query_identifier (разделить полученную
      строку на составляющие можj но функцией explode()). </FONT></P>
      <P DESIGNTIMESP=23972><FONT face=Tahoma size=2 DESIGNTIMESP=23973>Если поле флагов не
      имеет, возвращается пустая строка. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23974><FONT face=Tahoma
      size=2 DESIGNTIMESP=23975>msql_fieldlen </FONT></P>
      <P DESIGNTIMESP=23976><FONT face=Tahoma size=2 DESIGNTIMESP=23977>Получение размера поля
      набора записей </FONT></P>
      <P DESIGNTIMESP=23978><FONT face=Tahoma size=2 DESIGNTIMESP=23979>int msql_fieldlen (int
      query_identifier, int i) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23980><FONT face=Tahoma
      size=2 DESIGNTIMESP=23981>msql_free_result </FONT></P>
      <P DESIGNTIMESP=23982><FONT face=Tahoma size=2 DESIGNTIMESP=23983>Уничтожение набора
      записей </FONT></P>
      <P DESIGNTIMESP=23984><FONT face=Tahoma size=2 DESIGNTIMESP=23985>int msql_free_result (int
      query_identifier) </FONT></P>
      <P DESIGNTIMESP=23986><FONT face=Tahoma size=2 DESIGNTIMESP=23987>Функция освобождает
      память, занимаемую набором записей query_ identifier, возвращенным
      запросом. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=23988><FONT face=Tahoma size=2 DESIGNTIMESP=23989>msql_fist
      fields </FONT></P>
      <P DESIGNTIMESP=23990><FONT face=Tahoma size=2 DESIGNTIMESP=23991>Получение перечисления
      полей в результате запроса </FONT></P>
      <P DESIGNTIMESP=23992><FONT face=Tahoma size=2 DESIGNTIMESP=23993>int msql_list_fields
      (string database, string tablename) </FONT></P>
      <P DESIGNTIMESP=23994><FONT face=Tahoma size=2 DESIGNTIMESP=23995>Функция возвращает пустой
      набор записей таблицы tablename из БД database, который можно использовать
      для получения информации о всех полях, имеющихся в таблице, с помощью
      функций: msql_ fetch_field(), msql_field_flags(), mysql_field_len(),
      mysql_field_name() и mysql_field_type(). </FONT></P>
      <P DESIGNTIMESP=23996><FONT face=Tahoma size=2 DESIGNTIMESP=23997>Заметьте: при ошибке
      возвращается -1, а в переменной Sphperrmsg сохраняется сообщение об ошибке
      и (если функция не была вызвана с оператором «@») распечатывается
      сообщение об ошибке.</FONT></P>
      <P DESIGNTIMESP=23998><FONT face=Tahoma size=2 DESIGNTIMESP=23999>См. также msql_error().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24000><FONT face=Tahoma
      size=2 DESIGNTIMESP=24001>msql_num_fields </FONT></P>
      <P DESIGNTIMESP=24002><FONT face=Tahoma size=2 DESIGNTIMESP=24003>Получение числа полей в
      наборе записей </FONT></P>
      <P DESIGNTIMESP=24004><FONT face=Tahoma size=2 DESIGNTIMESP=24005>int msql_num_fields (int
      queryjidentifier) </FONT></P>
      <P DESIGNTIMESP=24006><FONT face=Tahoma size=2 DESIGNTIMESP=24007>См. также: msq(),
      msqljjuery(), msql_fetch_field() и msql_num_rows(). </FONT></P>
      <P DESIGNTIMESP=24008><FONT face=Tahoma size=2 DESIGNTIMESP=24009>Ранее функция называлась
      msqljiumfields(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24010><FONT face=Tahoma
      size=2 DESIGNTIMESP=24011>msql_error </FONT></P>
      <P DESIGNTIMESP=24012><FONT face=Tahoma size=2 DESIGNTIMESP=24013>Получение сообщения об
      ошибке последней функции msql </FONT></P>
      <P class=Text DESIGNTIMESP=24014><FONT face=Tahoma
      size=2 DESIGNTIMESP=24015>string_msql_error () </FONT></P>
      <P DESIGNTIMESP=24016><FONT face=Tahoma size=2 DESIGNTIMESP=24017>Возвращает сообщение об
      ошибке, произошедшей в ходе выполнения последней функции mSQL, или пустую
      строку, если ошибки не произошло. Раисе ошибки, происходящие при операциях
      с MySQL, выдавались в виде предупреждений, но сейчас возникновение ошибок
      нужно выявлять самостоятельно. </FONT></P>
      <P class=Title_2 DESIGNTIMESP=24018><a name=4
       designtimesp=24019></A><FONT face=Tahoma size=2 DESIGNTIMESP=24020>PostgreSQL </FONT></P>
      <P DESIGNTIMESP=24021><FONT face=Tahoma size=2 DESIGNTIMESP=24022>Postgres, изначально
      разработанная в UC Berkeley Computer Science Department, явилась одной из
      первых БД, использующих объектно-реляционные принципы, доступные теперь в
      некоторых коммерческих БД. Она поддерживает язык SQL92/SQL3, транзакции и
      расширение типов. PostgreSQL распространяется бесплатно и с открытым
      кодом. См.: http://www.postgresql.org/. </FONT></P>
      <P DESIGNTIMESP=24023><FONT face=Tahoma size=2 DESIGNTIMESP=24024>Начиная с версии 6.3
      (03/02/1998). PostgreSQL использует соксты unix-доменов (адрес сокета
      записывается в файл /tmp/.s.PGSQL5432). Чтобы к серверу можно было
      подключиться через TCP/IP, postmaster необходимо запускать с ключом -i
      (дословно означающим: "listen on TCP/IP sockets as well as Unix domain
      sockets"). </FONT></P>
      <P DESIGNTIMESP=24025><FONT face=Tahoma size=2 DESIGNTIMESP=24026>Ранее в функции
      подключения параметры указывались в отдельных аргументах, но сейчас они
      заключаются в одну строку: </FONT></P>
      <P class=list DESIGNTIMESP=24027><FONT face=Tahoma size=2 DESIGNTIMESP=24028>Scorn =
      pg_Connect<br designtimesp=24029>("host=myHost port=myPort tty=my<br
       designtimesp=24030>TTY opfons--myOptions user-myUser<br
       designtimesp=24031>password=myPassword dbname=myDB"); </FONT></P>
      <P DESIGNTIMESP=24032><FONT face=Tahoma size=2 DESIGNTIMESP=24033>Для использования функций
      интерфейса больших объектов их необходимо помещать внутрь блоков
      транзакций. Блок транзакции начинается с команды begin и завершается
      командами commit или end. Отмена транзакций выполняется командами rollback
      или abort. </FONT></P>
      <P class=list DESIGNTIMESP=24034><FONT face=Tahoma size=2 DESIGNTIMESP=24035>&lt;?php <br
       designtimesp=24036>$database = pg_Connect <br
       designtimesp=24037>("dbname=jacarta");<br designtimesp=24038>pg_exec
      (Sdatabase, "begin"): <br designtimesp=24039>$oid = pgjocreate
      (Sdatabase):<br designtimesp=24040>echo ("$oid\n"); <br
       designtimesp=24041>$handle = pg_loopen ($database, $01d. "w"): <br
       designtimesp=24042>echo ("$handle\n"): pgjownte (Shandle. "gaga"):<br
       designtimesp=24043>pg_loclose ($handle): pg_exec<br
       designtimesp=24044>($database. "commit"): ?&gt; </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24045><FONT face=Tahoma
      size=2 DESIGNTIMESP=24046>pg_connect </FONT></P>
      <P DESIGNTIMESP=24047><FONT face=Tahoma size=2 DESIGNTIMESP=24048>Подключение к серверу
      PostgreSQL </FONT></P>
      <P DESIGNTIMESP=24049><FONT face=Tahoma size=2 DESIGNTIMESP=24050>int pg_connect (string
      conn_string) </FONT></P>
      <P DESIGNTIMESP=24051><FONT face=Tahoma size=2 DESIGNTIMESP=24052>Возвращает дескриптор
      подключения к БД (используемый последующими функциями) пли FALSE — при
      ошибке. В аргументе указываются параметры подключения: host, port, tty,
      options, user, password, dbname. </FONT></P>
      <P class=list DESIGNTIMESP=24053><FONT face=Tahoma size=2 DESIGNTIMESP=24054>&lt;?php <br
       designtimesp=24055>Sdbconn = pg_Connect<br
       designtimesp=24056>("dbname=mary"); <br designtimesp=24057>Sdbconn2 =
      pg_Connect <br designtimesp=24058>("host=localhost port=5432
      dbnamemary"):<br designtimesp=24059>$dbconn3 = pg_Connect <br
       designtimesp=24060>("user=mb password=baaaa dbname=mary "):<br
       designtimesp=24061>?&gt; </FONT></P>
      <P DESIGNTIMESP=24062><FONT face=Tahoma size=2 DESIGNTIMESP=24063>Устаревший синтаксис:
      </FONT></P>
      <P class=list DESIGNTIMESP=24064><FONT face=Tahoma size=2 DESIGNTIMESP=24065>Sconn =
      pg_connect <br designtimesp=24066>("host", "port", "options", "tty".
      "dbname"). </FONT></P>
      <P DESIGNTIMESP=24067><FONT face=Tahoma size=2 DESIGNTIMESP=24068>См. также pg_pconnect().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24069><FONT face=Tahoma size=2 DESIGNTIMESP=24070>pg_close
      </FONT></P>
      <P DESIGNTIMESP=24071><FONT face=Tahoma size=2 DESIGNTIMESP=24072>Закрытие подключения
      </FONT></P>
      <P DESIGNTIMESP=24073><FONT face=Tahoma size=2 DESIGNTIMESP=24074>bool pg_close (int
      connection) </FONT></P>
      <P DESIGNTIMESP=24075><FONT face=Tahoma size=2 DESIGNTIMESP=24076>Закрывает указанное
      подключение и возвращает TRUE (или FALSE при ошибке). </FONT></P>
      <P DESIGNTIMESP=24077><FONT face=Tahoma size=2 DESIGNTIMESP=24078>Фактически использование
      данной функции не является обязательным, так как РНР автоматически
      закрывает все незакрытые неустойчивые подключения при завершении сценария.
      </FONT></P>
      <P DESIGNTIMESP=24079><FONT face=Tahoma size=2 DESIGNTIMESP=24080>Заметьте, что устойчивые
      подключения, созданные функцией рд_ pconnect(), не закрываются.
</FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24081><FONT face=Tahoma
      size=2 DESIGNTIMESP=24082>pg_pconnect </FONT></P>
      <P DESIGNTIMESP=24083><FONT face=Tahoma size=2 DESIGNTIMESP=24084>Создание устойчивого
      подключения к серверу PostgreSQL </FONT></P>
      <P DESIGNTIMESP=24085><FONT face=Tahoma size=2 DESIGNTIMESP=24086>int pg_pconnect (string
      conn_string) </FONT></P>
      <P DESIGNTIMESP=24087><FONT face=Tahoma size=2 DESIGNTIMESP=24088>Возвращает дескриптор
      устойчивого подключения к БД (используемый последующими функциями) или
      FALSE — при ошибке. В аргументе указываются параметры подключения: host,
      port, tty, options, user, password, dbname. </FONT></P>
      <P DESIGNTIMESP=24089><FONT face=Tahoma size=2 DESIGNTIMESP=24090>Заметьте: устойчивые
      подключения не закрываются при завершении сценария и остаются
      действительными, пока РНР остается в памяти (так, что при повторной
      попытке создать идентичное устойчивое подключение используется уже
      имеющееся). </FONT></P>
      <P DESIGNTIMESP=24091><FONT face=Tahoma size=2 DESIGNTIMESP=24092>Устаревший синтаксис:
      </FONT></P>
      <P class=list DESIGNTIMESP=24093><FONT face=Tahoma size=2 DESIGNTIMESP=24094>Sconn =
      pg_pconnect <br designtimesp=24095>("host", "port", "options", "tty".
      "dbname") </FONT></P>
      <P DESIGNTIMESP=24096><FONT face=Tahoma size=2 DESIGNTIMESP=24097>См. также pg_connect().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24098><FONT face=Tahoma size=2 DESIGNTIMESP=24099>pg_host
      </FONT></P>
      <P DESIGNTIMESP=24100><FONT face=Tahoma size=2 DESIGNTIMESP=24101>Получение имени сервера,
      к которому осуществлено подключение </FONT></P>
      <P DESIGNTIMESP=24102><FONT face=Tahoma size=2 DESIGNTIMESP=24103>String pg_host (int
      connection_id) </FONT></P>
      <P DESIGNTIMESP=24104><FONT face=Tahoma size=2 DESIGNTIMESP=24105>Возвращает значение
      параметра host, указанного при подключении. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24106><FONT face=Tahoma size=2 DESIGNTIMESP=24107>pg_port
      </FONT></P>
      <P DESIGNTIMESP=24108><FONT face=Tahoma size=2 DESIGNTIMESP=24109>Получение номера порта,
      используемого подключением int pg_port (int connectionjid) </FONT></P>
      <P DESIGNTIMESP=24110><FONT face=Tahoma size=2 DESIGNTIMESP=24111>Возвращает значение
      параметра port, указанного при подключении (или «5432»). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24112><FONT face=Tahoma size=2 DESIGNTIMESP=24113>pg_tty
      </FONT></P>
      <P DESIGNTIMESP=24114><FONT face=Tahoma size=2 DESIGNTIMESP=24115>Получение имени терминала
      TTY, назначенного подключению string pgjtty (int connection_id)
</FONT></P>
      <P DESIGNTIMESP=24116><FONT face=Tahoma size=2 DESIGNTIMESP=24117>Возвращает имя потока
      вывода, в который сервер записывает отладочную информацию для указанного
      подключения. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24118><FONT face=Tahoma
      size=2 DESIGNTIMESP=24119>pg_options </FONT></P>
      <P DESIGNTIMESP=24120><FONT face=Tahoma size=2 DESIGNTIMESP=24121>Получение параметра
      подключения </FONT></P>
      <P DESIGNTIMESP=24122><FONT face=Tahoma size=2 DESIGNTIMESP=24123>string pg_options (int
      connection_id) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24124><FONT face=Tahoma size=2 DESIGNTIMESP=24125>pg_dbname
      </FONT></P>
      <P DESIGNTIMESP=24126><FONT face=Tahoma size=2 DESIGNTIMESP=24127>Получение имени
      используемой БД </FONT></P>
      <P DESIGNTIMESP=24128><FONT face=Tahoma size=2 DESIGNTIMESP=24129>string pg_dbname (int
      connection) При ошибке возвращает FALSE. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24130><FONT face=Tahoma
      size=2 DESIGNTIMESP=24131>pg_set_client_encoding </FONT></P>
      <P DESIGNTIMESP=24132><FONT face=Tahoma size=2 DESIGNTIMESP=24133>Установка кодировки,
      используемой клиентом </FONT></P>
      <P DESIGNTIMESP=24134><FONT face=Tahoma size=2 DESIGNTIMESP=24135>int
      pg_set_client_encoding ([int connection, string encoding]) </FONT></P>
      <P DESIGNTIMESP=24136><FONT face=Tahoma size=2 DESIGNTIMESP=24137>Возвращает 0 или -1 — при
      ошибке, encoding может принимать значения: SQL_ASCII, EUC_JP, EUC_CN,
      EUC_KR, EUC_TW, UNICODE, MULE_INTERNAL, LATINX (X=l.. .9), KOI8, WIN, ALT,
      SJIS, BIGS, WIN1250. </FONT></P>
      <P DESIGNTIMESP=24138><FONT face=Tahoma size=2 DESIGNTIMESP=24139>Функция требует
      PostgreSQL 7.0 или старше.</FONT></P>
      <P DESIGNTIMESP=24140><FONT face=Tahoma size=2 DESIGNTIMESP=24141>Ранее функция называлась
      pg_setclientencoding(). </FONT></P>
      <P DESIGNTIMESP=24142><FONT face=Tahoma size=2 DESIGNTIMESP=24143>См. также
      pg_client_encoding(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24144><FONT face=Tahoma
      size=2 DESIGNTIMESP=24145>pg_client_encoding </FONT></P>
      <P DESIGNTIMESP=24146><FONT face=Tahoma size=2 DESIGNTIMESP=24147>Получение кодировки,
      используемой клиентом </FONT></P>
      <P DESIGNTIMESP=24148><FONT face=Tahoma size=2 DESIGNTIMESP=24149>string pg_client_encoding
      ([int connection]) </FONT></P>
      <P DESIGNTIMESP=24150><FONT face=Tahoma size=2 DESIGNTIMESP=24151>Возвращается одно из
      значений: SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE,
      MULEJNTERNAL, LATINX (X=l.. .9), KOI8, WIN, ALT, SJIS, 6165, WIN1250.
      </FONT></P>
      <P DESIGNTIMESP=24152><FONT face=Tahoma size=2 DESIGNTIMESP=24153>Функция требует
      PostgreSQL 7.0 или старше. </FONT></P>
      <P DESIGNTIMESP=24154><FONT face=Tahoma size=2 DESIGNTIMESP=24155>Ранее функция называлась
      pg_clientencoding().</FONT></P>
      <P DESIGNTIMESP=24156><FONT face=Tahoma size=2 DESIGNTIMESP=24157>См. также
      pg_set_client_encoding(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24158><FONT face=Tahoma size=2 DESIGNTIMESP=24159>pg_trace
      </FONT></P>
      <P DESIGNTIMESP=24160><FONT face=Tahoma size=2 DESIGNTIMESP=24161>Разрешение трассировки
      подключения </FONT></P>
      <P DESIGNTIMESP=24162><FONT face=Tahoma size=2 DESIGNTIMESP=24163>bool pgjtrace (string
      filename [, string mode [, int connection]]) </FONT></P>
      <P DESIGNTIMESP=24164><FONT face=Tahoma size=2 DESIGNTIMESP=24165>Функция разрешает
      автоматическую запись обмена сообщениями между сервером PostgreSQL и его
      клиентской частью в файл отладки filename. Чтобы использовать эту
      возможность, необходимо понимать внутренний протокол коммуникации
      PostgreSQL. В простейшем случае причины ошибок, записанные в этом файле,
      могут быть найдены с помощью команды: backend trace.log. </FONT></P>
      <P DESIGNTIMESP=24166><FONT face=Tahoma size=2 DESIGNTIMESP=24167>Аргументы filename и mode
      те же, что и в функции fopen() (mode no умолчанию: «w»), connection
      указывает, какое подключение следует трассировать (если не указано, то
      используется последнее открытое). </FONT></P>
      <P DESIGNTIMESP=24168><FONT face=Tahoma size=2 DESIGNTIMESP=24169>Возвращает TRUE, если
      filename успешно открыт, или FALSE — при ошибке. </FONT></P>
      <P DESIGNTIMESP=24170><FONT face=Tahoma size=2 DESIGNTIMESP=24171>См. также: fopen() и
      pg_untrace(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24172><FONT face=Tahoma
      size=2 DESIGNTIMESP=24173>pg_untrace </FONT></P>
      <P DESIGNTIMESP=24174><FONT face=Tahoma size=2 DESIGNTIMESP=24175>Запрет трассировки
      подключения </FONT></P>
      <P DESIGNTIMESP=24176><FONT face=Tahoma size=2 DESIGNTIMESP=24177>bool pg_untrace ([int
      connection]) </FONT></P>
      <P DESIGNTIMESP=24178><FONT face=Tahoma size=2 DESIGNTIMESP=24179>Останавливает отладку,
      начатую функцией pg_trace(). Аргумент connection указывает, какое
      подключение следует трассировать (если не указано, то используется
      последнее открытое). Всегда возвращает TRUE. </FONT></P>
      <P DESIGNTIMESP=24180><FONT face=Tahoma size=2 DESIGNTIMESP=24181>См. также pgjtrace().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24182><FONT face=Tahoma size=2 DESIGNTIMESP=24183>pg_exec
      </FONT></P>
      <P DESIGNTIMESP=24184><FONT face=Tahoma size=2 DESIGNTIMESP=24185>Выполнение запроса
      </FONT></P>
      <P DESIGNTIMESP=24186><FONT face=Tahoma size=2 DESIGNTIMESP=24187>int pg_exec (int
      connection, string query)</FONT></P>
      <P DESIGNTIMESP=24188><FONT face=Tahoma size=2 DESIGNTIMESP=24189>Посылает запрос query для
      подключения connection. </FONT></P>
      <P DESIGNTIMESP=24190><FONT face=Tahoma size=2 DESIGNTIMESP=24191>Если при выполнении
      запроса возникают ошибки, то функция возвращает FALSE. Получить
      комментарий ошибки можно функцией рд_ errormessage(). </FONT></P>
      <P DESIGNTIMESP=24192><FONT face=Tahoma size=2 DESIGNTIMESP=24193>Если запрос успешно
      выполнился, то возвращается набор записей, который может быть обработан
      функциями: </FONT></P>
      <ul designtimesp=24194>
        <li designtimesp=24195><FONT face=Tahoma size=2 DESIGNTIMESP=24196>pg_result() — получить
        элемент набора записей; </FONT>
        <li designtimesp=24197><FONT face=Tahoma size=2 DESIGNTIMESP=24198>pg_fetch_array() —
        занести запись в массив; </FONT>
        <li designtimesp=24199><FONT face=Tahoma size=2 DESIGNTIMESP=24200>pg_fetch_row() —
        занести запись в нумерованный массив; </FONT>
        <li designtimesp=24201><FONT face=Tahoma size=2 DESIGNTIMESP=24202>pg_fetch_object() —
        занести запись в объект. </FONT></LI></UL>
      <P DESIGNTIMESP=24203><FONT face=Tahoma size=2 DESIGNTIMESP=24204>Чтобы выяснить, сколько
      записей было возвращено командой SELECT, используйте функцию
      pg_num_rows(); а чтобы выяснить, сколько записей было изменено в
      результате выполнения запросов DELETE, INSERT, REPLACE или UPDATE,
      используйте функцию pg_cmdtuples(). </FONT></P>
      <P DESIGNTIMESP=24205><FONT face=Tahoma size=2 DESIGNTIMESP=24206>После обработки
      результатов запроса он может быть удален функцией pg_free_result(). Хотя в
      этом нет необходимости, так как ресурсы автоматически освобождаются при
      завершении сценария. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24207><FONT face=Tahoma
      size=2 DESIGNTIMESP=24208>pg_put_line </FONT></P>
      <P DESIGNTIMESP=24209><FONT face=Tahoma size=2 DESIGNTIMESP=24210>Пересылка серверу строки
      </FONT></P>
      <P DESIGNTIMESP=24211><FONT face=Tahoma size=2 DESIGNTIMESP=24212>boo! pg_put_line
      ([resource connection_id. string data]) </FONT></P>
      <P DESIGNTIMESP=24213><FONT face=Tahoma size=2 DESIGNTIMESP=24214>Для ускорения процедуры
      занесения информации в БД PostgreSQL позволяет метод непосредственной
      пересылки строк через поток ввода-вывода. Возвращает TRUE или FALSE — при
      ошибке. </FONT></P>
      <P DESIGNTIMESP=24215><FONT face=Tahoma size=2 DESIGNTIMESP=24216>Конец строки (записи БД)
      маркируется символом «\n», а поля разделяются знаком табуляции «\t».
      Приложение должно явно послать пару символов «\.» для указания, что клиент
      закончил отсылать данные. </FONT></P>
      <P class=list DESIGNTIMESP=24217><FONT face=Tahoma size=2 DESIGNTIMESP=24218>&lt;?php //
      скоростное добавление <br designtimesp=24219>строк в таблицу $conn =
      pg_pconnect<br designtimesp=24220>("dbname=foo");<br
       designtimesp=24221>pg_exec($conn. "create table tbl <br
       designtimesp=24222>(a int4. b char(16). d floats)"): <br
       designtimesp=24223>pg_exec($conn. "copy tbl from stdin"):<br
       designtimesp=24224>// начать запись pg_put_line<br
       designtimesp=24225>($conn. "3\thello world\t4.5\n"). <br
       designtimesp=24226>pg_put_line<br designtimesp=24227>($conn.
      "4\tgoodbye world\t/.ll\n")<br designtimesp=24228>, pg_put_line($copn.
      "\\.\n"): <br designtimesp=24229>pg_end_copy($conn), ?&gt; </FONT></P>
      <P DESIGNTIMESP=24230><FONT face=Tahoma size=2 DESIGNTIMESP=24231>См. также pg_end_copy().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24232><FONT face=Tahoma
      size=2 DESIGNTIMESP=24233>pg_end_copy </FONT></P>
      <P DESIGNTIMESP=24234><FONT face=Tahoma size=2 DESIGNTIMESP=24235>Синхронизация операции
      вставки </FONT></P>
      <P DESIGNTIMESP=24236><FONT face=Tahoma size=2 DESIGNTIMESP=24237>boo! pg_end_copy
      ([resource connection]) </FONT></P>
      <P DESIGNTIMESP=24238><FONT face=Tahoma size=2 DESIGNTIMESP=24239>Функцию следует вызывать
      после того, как функцией pg_put_line() завершена передача данных серверу
      PostgreSQJL (для того, чтобы зафиксировать полученные данные). Возвращает
      TRUE или FALSE — при ошибке. </FONT></P>
      <P DESIGNTIMESP=24240><FONT face=Tahoma size=2 DESIGNTIMESP=24241>См. также pg_put_line().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24242><FONT face=Tahoma
      size=2 DESIGNTIMESP=24243>pg_numrows </FONT></P>
      <P DESIGNTIMESP=24244><FONT face=Tahoma size=2 DESIGNTIMESP=24245>Получение числа
      возвращенных записей </FONT></P>
      <P DESIGNTIMESP=24246><FONT face=Tahoma size=2 DESIGNTIMESP=24247>int pg_numrows (int
      result_id) </FONT></P>
      <P DESIGNTIMESP=24248><FONT face=Tahoma size=2 DESIGNTIMESP=24249>Возвращает число записей,
      возвращенных запросами SELECT. Дескриптор набора возвращенных записей
      (аргумент result_id) должен быть у получен от функции рд_ехес().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24250><FONT face=Tahoma
      size=2 DESIGNTIMESP=24251>pg_numfields </FONT></P>
      <P DESIGNTIMESP=24252><FONT face=Tahoma size=2 DESIGNTIMESP=24253>Получение числа полей в
      наборе записей </FONT></P>
      <P DESIGNTIMESP=24254><FONT face=Tahoma size=2 DESIGNTIMESP=24255>int pgjiumfields (int
      result_id) </FONT></P>
      <P DESIGNTIMESP=24256><FONT face=Tahoma size=2 DESIGNTIMESP=24257>Возвращает число полей
      (столбцов) в наборе записей, возвращенном функцией рд_ехес(), или -1 — при
      ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24258><FONT face=Tahoma
      size=2 DESIGNTIMESP=24259>pg_cmdtuples </FONT></P>
      <P DESIGNTIMESP=24260><FONT face=Tahoma size=2 DESIGNTIMESP=24261>Получение числа
      измененных записей в БД </FONT></P>
      <P DESIGNTIMESP=24262><FONT face=Tahoma size=2 DESIGNTIMESP=24263>int pg_cmdtuples (int
      result_id) </FONT></P>
      <P DESIGNTIMESP=24264><FONT face=Tahoma size=2 DESIGNTIMESP=24265>Возвращается число
      записей (сущностей), измененных в результате выполнения запросов DELETE,
      INSERT, REPLACE или UPDATE. Если изменений произведено не было, возвращает
      0. </FONT></P>
      <P class=list DESIGNTIMESP=24266><FONT face=Tahoma size=2 DESIGNTIMESP=24267>&lt;?php <br
       designtimesp=24268>Sresult = pg_exec ($conn. <br
       designtimesp=24269>"INSERT INTO publisher VALUES <br
       designtimesp=24270>('Author')"): $rows_affected = <br
       designtimesp=24271>pg_ondtuples ($result): <br designtimesp=24272>echo
      "Число выполненных изменений:<br designtimesp=24273>". $rows_affected:
      ?&gt; </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24274><FONT face=Tahoma
      size=2 DESIGNTIMESP=24275>pg_freeresult </FONT></P>
      <P DESIGNTIMESP=24276><FONT face=Tahoma size=2 DESIGNTIMESP=24277>Уничтожение набора
      записей </FONT></P>
      <P DESIGNTIMESP=24278><FONT face=Tahoma size=2 DESIGNTIMESP=24279>Int pg_freeresult (int
      result_id) </FONT></P>
      <P DESIGNTIMESP=24280><FONT face=Tahoma size=2 DESIGNTIMESP=24281>Функция освобождает
      память, занимаемую набором записей resultjid, возвращенным запросом. Ее
      следует использовать только в случае, если требуется экономить память, так
      как память автоматически освобождается при завершении сценария.
</FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24282><FONT face=Tahoma size=2 DESIGNTIMESP=24283>pg_result
      </FONT></P>
      <P DESIGNTIMESP=24284><FONT face=Tahoma size=2 DESIGNTIMESP=24285>Получение определенного
      элемента набора записей </FONT></P>
      <P DESIGNTIMESP=24286><FONT face=Tahoma size=2 DESIGNTIMESP=24287>mixed pg_result (int
      result_id. int rowjiumber, mixed fieldname) </FONT></P>
      <P DESIGNTIMESP=24288><FONT face=Tahoma size=2 DESIGNTIMESP=24289>Функция возвращает
      значение из набора записей, возвращенного функцией рд_Ехес(). Аргументы
      row_number и fieldname указывают соответственно номер строки (записи) и
      ноле (столбец). Нумерация начинается от 0. Поле можно указывать его именем
      или номером. </FONT></P>
      <P DESIGNTIMESP=24290><FONT face=Tahoma size=2 DESIGNTIMESP=24291>PostgreSQL имеет много
      встроенных типов данных, и РНР поддерживаются только основные. Тины
      integer, boolean и old возвращаются как целочисленные значения. Все формы
      float и real типов возвращаются как дробные значения. Все остальные типы
      (включая массивы) возвращаются в виде строк в том же формате, что и в
      программе psql. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24292><FONT face=Tahoma
      size=2 DESIGNTIMESP=24293>pg_fetch_array </FONT></P>
      <P DESIGNTIMESP=24294><FONT face=Tahoma size=2 DESIGNTIMESP=24295>Занесение записи в массив
      </FONT></P>
      <P DESIGNTIMESP=24296><FONT face=Tahoma size=2 DESIGNTIMESP=24297>array pg_fetch_array (int
      result, int row [.int result_type]) </FONT></P>
      <P DESIGNTIMESP=24298><FONT face=Tahoma size=2 DESIGNTIMESP=24299>Возвращает массив,
      соответствующий записи с номером row, из набора записей result,
      возвращенных запросом, или FALSE, если такой записи не имеется (также
      выдается предупреждение). </FONT></P>
      <P DESIGNTIMESP=24300><FONT face=Tahoma size=2 DESIGNTIMESP=24301>Данная функция является
      расширением функции pg_fetch_row(), она может возвращать нумерованный или
      ассоциативный массив (а также объединенный). Вид возвращаемого массива
      может указываться в аргументе resu1t_type одной из констант: PGSQL_NUM,
      PGSQL_ASSOC, PGSQL_BOTH (по умолчанию). </FONT></P>
      <P DESIGNTIMESP=24302><FONT face=Tahoma size=2 DESIGNTIMESP=24303>В ассоциативных массивах
      индексами служат имена полей (они всегда в нижнем регистре). </FONT></P>
      <P DESIGNTIMESP=24304><FONT face=Tahoma size=2 DESIGNTIMESP=24305>Заметьте, что функция
      выполняется лишь немного медленнее, чем pg_fetch_row(), но предоставляет
      дополнительную функциональность. </FONT></P>
      <P class=list DESIGNTIMESP=24306><FONT face=Tahoma size=2 DESIGNTIMESP=24307>&lt;?php <br
       designtimesp=24308>Jconn = pg_pconnect<br
       designtimesp=24309>("dbname=publisher"); <br designtimesp=24310>if
      CSconn) { <br designtimesp=24311>echo "An error occured.\n"; exit; } <br
       designtimesp=24312>Sresult -= pgjxec<br designtimesp=24313>(Sconn.
      "SELECT * FROM Authors");<br designtimesp=24314>if (!$result) { <br
       designtimesp=24315>echo "An error occured.\n"; <br
       designtimesp=24316>exit: } <br designtimesp=24317>$arr =
      pg_fetch_array <br designtimesp=24318>(Sresult. 0); echo $arr[0] .<br
       designtimesp=24319>" или ". $arr["author"] : <br designtimesp=24320>//
      можно и так <br designtimesp=24321>for($i=0; $row = @pg_fetch_array<br
       designtimesp=24322>(Sresult.Si); $i++) <br designtimesp=24323>{ echo
      $row["author"]; } ?&gt; </FONT></P>
      <P DESIGNTIMESP=24324><FONT face=Tahoma size=2 DESIGNTIMESP=24325>См. также pg_fetch_row().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24326><FONT face=Tahoma
      size=2 DESIGNTIMESP=24327>pg_fetch_row </FONT></P>
      <P DESIGNTIMESP=24328><FONT face=Tahoma size=2 DESIGNTIMESP=24329>Занесение записи в
      нумерованный массив </FONT></P>
      <P DESIGNTIMESP=24330><FONT face=Tahoma size=2 DESIGNTIMESP=24331>array pg_fetch_row (int
      result, int row) </FONT></P>
      <P DESIGNTIMESP=24332><FONT face=Tahoma size=2 DESIGNTIMESP=24333>Возвращает массив,
      соответствующий записи с номером row, из набора записей result,
      возвращенных запросом, или FALSE, если такой записи не имеется.
</FONT></P>
      <P class=list DESIGNTIMESP=24334><FONT face=Tahoma size=2 DESIGNTIMESP=24335>&lt;?php <br
       designtimesp=24336>if (!($conn = pg_pconnect <br
       designtimesp=24337>("dbname=publisher"))) { <br
       designtimesp=24338>echo "An error occured.\n"; <br
       designtimesp=24339>exit. } <br designtimesp=24340>if (! (Sresult =
      pgjxec <br designtimesp=24341>($conn. "SELECT * FROM authors"))) <br
       designtimesp=24342>{ <br designtimesp=24343>echo "An error
      occured.\n"; <br designtimesp=24344>exit: } $num = pg_numrows<br
       designtimesp=24345>(Sresult); <br designtimesp=24346>for ($i=0:
      Si&lt;$num: Si++)<br designtimesp=24347>{ $r = pg_fetch_row(Sresult.
      Si).<br designtimesp=24348>for ($j=0: $j&lt;count($r): Sj++) { <br
       designtimesp=24349>echo "SrLSj]&amp;nbsp,"; } <br
       designtimesp=24350>echo <br designtimesp=24351>"&lt;BR&gt;"; } ?&gt;
      </FONT></P>
      <P DESIGNTIMESP=24352><FONT face=Tahoma size=2 DESIGNTIMESP=24353>См. также:
      pg_fetch_array(), pg_fetch_object(), pg_result(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24354><FONT face=Tahoma
      size=2 DESIGNTIMESP=24355>pg_fetch_object </FONT></P>
      <P DESIGNTIMESP=24356><FONT face=Tahoma size=2 DESIGNTIMESP=24357>Получение записи в
      свойствах объекта </FONT></P>
      <P DESIGNTIMESP=24358><FONT face=Tahoma size=2 DESIGNTIMESP=24359>object pg_fetch_object
      (int result, int row [, int resultjtype]) </FONT></P>
      <P DESIGNTIMESP=24360><FONT face=Tahoma size=2 DESIGNTIMESP=24361>Возвращает объект, в
      свойствах которого находятся поля текущей записи, или FALSE, если записей
      более не имеется. </FONT></P>
      <P DESIGNTIMESP=24362><FONT face=Tahoma size=2 DESIGNTIMESP=24363>По скорости выполнения
      функция идентична pg_fetch_array() и почти идентична pg_fetch_row().
      </FONT></P>
      <P class=list DESIGNTIMESP=24364><FONT face=Tahoma size=2 DESIGNTIMESP=24365>&lt;?php
      Sdatabase = "verlag". <br designtimesp=24366>$db_conn = pg_connect<br
       designtimesp=24367>("host-localhost port=5432<br
       designtimesp=24368>dbnameSdatabase"); <br designtimesp=24369>if
      (!$db_conn): <br designtimesp=24370>?&gt;&lt;Hl&gt;Failed connecting
      to<br designtimesp=24371>postgres database <br
       designtimesp=24372>&lt;?php echo $database ?&gt;<br
       designtimesp=24373>&lt;/Hl&gt; &lt;?php <br designtimesp=24374>exit:
      endlf: <br designtimesp=24375>$qu = pg_exec<br
       designtimesp=24376>($db_conn, "SELECT *<br designtimesp=24377>FROM
      verlag ORDER BY autor"); <br designtimesp=24378>for ($row = 0: Sdata
      =<br designtimesp=24379>@pg_fetch_object ($qu. $row).<br
       designtimesp=24380>$row++){ echo $data-&gt;autor."<br
       designtimesp=24381>("; \ echo Sdata-&gt;jahr ."):<br
       designtimesp=24382>": echo $data-&gt;titel."&lt;BR&gt;": } ?&gt;<br
       designtimesp=24383>&lt;PRE&gt;&lt;?php <br
       designtimesp=24384>$fields[] = Array <br designtimesp=24385>("autor".
      "Author"), SfieldsL]<br designtimesp=24386>= Array ("jahr". " Year"),
      <br designtimesp=24387>Sfieldst] = Array ("titel". " Title"); <br
       designtimesp=24388>for ($row = 0: Sdata =<br
       designtimesp=24389>@pg_fetch_object (Jqu. $row); <br
       designtimesp=24390>$row++) : reset (Sfields); <br
       designtimesp=24391>while (list (,$item) = each (Sfields)):<br
       designtimesp=24392>echo $item[l].": ".$data-&gt;$item[0].<br
       designtimesp=24393>"\n", endwhile: endfor; <br designtimesp=24394>echo
      "&lt;/PRE&gt;"; <br designtimesp=24395>pg_freeResult ($qu); <br
       designtimesp=24396>pg_close ($db_conn): ?&gt; </FONT></P>
      <P DESIGNTIMESP=24397><FONT face=Tahoma size=2 DESIGNTIMESP=24398>См. также:
      pg_fetch_array() и pg_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24399><FONT face=Tahoma
      size=2 DESIGNTIMESP=24400>pg-fieldname </FONT></P>
      <P DESIGNTIMESP=24401><FONT face=Tahoma size=2 DESIGNTIMESP=24402>Определение имени поля
      </FONT></P>
      <P DESIGNTIMESP=24403><FONT face=Tahoma size=2 DESIGNTIMESP=24404>string pg_fieldname (int
      resulted, int field_number) </FONT></P>
      <P DESIGNTIMESP=24405><FONT face=Tahoma size=2 DESIGNTIMESP=24406>Возвращает имя поля по
      его номеру в наборе записей. Нумерация начинается с 0. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24407><FONT face=Tahoma
      size=2 DESIGNTIMESP=24408>pg_fieldnum </FONT></P>
      <P DESIGNTIMESP=24409><FONT face=Tahoma size=2 DESIGNTIMESP=24410>Определение номера поля
      </FONT></P>
      <P DESIGNTIMESP=24411><FONT face=Tahoma size=2 DESIGNTIMESP=24412>int pg_fieldnum (int
      result_id, string fieldjiame) </FONT></P>
      <P DESIGNTIMESP=24413><FONT face=Tahoma size=2 DESIGNTIMESP=24414>Возвращает номер поля в
      наборе записей по его имени или -1 — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24415><FONT face=Tahoma
      size=2 DESIGNTIMESP=24416>pg_fieldtype </FONT></P>
      <P DESIGNTIMESP=24417><FONT face=Tahoma size=2 DESIGNTIMESP=24418>Определение типа поля
      </FONT></P>
      <P DESIGNTIMESP=24419><FONT face=Tahoma size=2 DESIGNTIMESP=24420>string pg_fieldtype (int
      resu1t_id, ijit field_number) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24421><FONT face=Tahoma
      size=2 DESIGNTIMESP=24422>pg_fieldprtlen </FONT></P>
      <P DESIGNTIMESP=24423><FONT face=Tahoma size=2 DESIGNTIMESP=24424>Определение длины
      значения в поле </FONT></P>
      <P DESIGNTIMESP=24425><FONT face=Tahoma size=2 DESIGNTIMESP=24426>int pg_fie!dprtlen (int
      result_id, int row_number, string field_name) </FONT></P>
      <P DESIGNTIMESP=24427><FONT face=Tahoma size=2 DESIGNTIMESP=24428>Возвращает фактическую
      длину содержащегося в поле значения в байтах (число символов). Возвращает
      -1 при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24429><FONT face=Tahoma
      size=2 DESIGNTIMESP=24430>pg_fieldsize </FONT></P>
      <P DESIGNTIMESP=24431><FONT face=Tahoma size=2 DESIGNTIMESP=24432>Определение внутреннего
      размера поля</FONT></P>
      <P DESIGNTIMESP=24433><FONT face=Tahoma size=2 DESIGNTIMESP=24434>int pg_fieldsize (int
      result_id, int field_number) </FONT></P>
      <P DESIGNTIMESP=24435><FONT face=Tahoma size=2 DESIGNTIMESP=24436>Возвращает размер в
      байтах или значение -1 для полей переменной длины. При ошибке возвращается
      FALSE. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24437><FONT face=Tahoma
      size=2 DESIGNTIMESP=24438>pg_fieldisnull </FONT></P>
      <P DESIGNTIMESP=24439><FONT face=Tahoma size=2 DESIGNTIMESP=24440>Определение равенства
      значения поля NULL </FONT></P>
      <P DESIGNTIMESP=24441><FONT face=Tahoma size=2 DESIGNTIMESP=24442>int pg_fieldisnull (int
      resultjid, int row, mixed field) </FONT></P>
      <P DESIGNTIMESP=24443><FONT face=Tahoma size=2 DESIGNTIMESP=24444>Возвращает О, если поле
      field в записи row не содержит значение NULL, или 1 в противном случае.
      Поле может быть указано именем или номером. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24445><FONT face=Tahoma
      size=2 DESIGNTIMESP=24446>pg_getlastoid </FONT></P>
      <P DESIGNTIMESP=24447><FONT face=Tahoma size=2 DESIGNTIMESP=24448>Получение идентификатора
      последнего объекта</FONT></P>
      <P DESIGNTIMESP=24449><FONT face=Tahoma size=2 DESIGNTIMESP=24450>int pg_getlastoid (int
      result_id) </FONT></P>
      <P DESIGNTIMESP=24451><FONT face=Tahoma size=2 DESIGNTIMESP=24452>Используется для
      получения идентификатора (oid) назначенному объекту, вставленному
      последней SQL-командой INSERT в функции рд_ехес(). Возвращает
      положительное значение oid или -1, если последней командой в рд_ехес() не
      была INSERT. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24453><FONT face=Tahoma
      size=2 DESIGNTIMESP=24454>pg_locreate </FONT></P>
      <P DESIGNTIMESP=24455><FONT face=Tahoma size=2 DESIGNTIMESP=24456>Создание большого объекта
      </FONT></P>
      <P DESIGNTIMESP=24457><FONT face=Tahoma size=2 DESIGNTIMESP=24458>int pgjocreate (int conn)
      </FONT></P>
      <P DESIGNTIMESP=24459><FONT face=Tahoma size=2 DESIGNTIMESP=24460>Создает «Inversion Large
      Object» и возвращает его oid. conn содержит дескриптор подключения. Режимы
      доступа PostgreSQL INV_READ, INV_WRITE и INV_ARCHIVE не поддерживаются,
      объект всегда создается с доступом для чтения и записи. INV_ARCHIVE был
      удален из самого PostgrcSQL (для версий 6.3 и старше). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24461><FONT face=Tahoma size=2 DESIGNTIMESP=24462>pg_loopen
      </FONT></P>
      <P DESIGNTIMESP=24463><FONT face=Tahoma size=2 DESIGNTIMESP=24464>Открытие большого объекта
      </FONT></P>
      <P DESIGNTIMESP=24465><FONT face=Tahoma size=2 DESIGNTIMESP=24466>int pgjoopen (int conn,
      int objoid, string mode) </FONT></P>
      <P DESIGNTIMESP=24467><FONT face=Tahoma size=2 DESIGNTIMESP=24468>Открывает большой объект
      БД «Inversion Large Object» и возвращает его файловый дескриптор. Аргумент
      objoid указывает действительный oid (идентификатор объекта), a mode —
      режим доступа, который может принимать значения «г», «w» или «rw».
      </FONT></P>
      <P DESIGNTIMESP=24469><FONT face=Tahoma size=2 DESIGNTIMESP=24470>Не закрывайте
      подключения, не закрыв предварительно большой объект. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24471><FONT face=Tahoma
      size=2 DESIGNTIMESP=24472>pg_loclose , </FONT></P>
      <P DESIGNTIMESP=24473><FONT face=Tahoma size=2 DESIGNTIMESP=24474>Закрытие большого объекта
      </FONT></P>
      <P DESIGNTIMESP=24475><FONT face=Tahoma size=2 DESIGNTIMESP=24476>void pgjoclose (int fd)'
      </FONT></P>
      <P DESIGNTIMESP=24477><FONT face=Tahoma size=2 DESIGNTIMESP=24478>В аргументе fd
      указывается дескриптор объекта, полученный от рд_ loopen(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24479><FONT face=Tahoma
      size=2 DESIGNTIMESP=24480>pg_loimport </FONT></P>
      <P DESIGNTIMESP=24481><FONT face=Tahoma size=2 DESIGNTIMESP=24482>Импорт большого объекта
      из файла </FONT></P>
      <P DESIGNTIMESP=24483><FONT face=Tahoma size=2 DESIGNTIMESP=24484>int pgjoimport (int file
      [, int connection_id]) </FONT></P>
      <P DESIGNTIMESP=24485><FONT face=Tahoma size=2 DESIGNTIMESP=24486>Имя импортируемого файла
      (путь) указывается в аргументе filename. Возвращает идентификатор
      созданного объекта (oid) или FALSE -при ошибке. Не забывайте, что работа с
      большими объектами должна проходить внутри транзакции. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24487><FONT face=Tahoma
      size=2 DESIGNTIMESP=24488>pg_loexport </FONT></P>
      <P DESIGNTIMESP=24489><FONT face=Tahoma size=2 DESIGNTIMESP=24490>Экспорт большого объекта
      в файл </FONT></P>
      <P DESIGNTIMESP=24491><FONT face=Tahoma size=2 DESIGNTIMESP=24492>boo! pgjoexport (int oid,
      int file [, int connectionjd]) </FONT></P>
      <P DESIGNTIMESP=24493><FONT face=Tahoma size=2 DESIGNTIMESP=24494>Имя файла (путь)
      указывается в аргументе filename, а идентификатор объекта — в oid.
      Возвращает TRUE или FALSE — при ошибке. Не забывайте, что работа с
      большими объектами должна проходить внутри транзакции. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24495><FONT face=Tahoma size=2 DESIGNTIMESP=24496>pg_loread
      </FONT></P>
      <P DESIGNTIMESP=24497><FONT face=Tahoma size=2 DESIGNTIMESP=24498>Чтение большого объекта
      </FONT></P>
      <P DESIGNTIMESP=24499><FONT face=Tahoma size=2 DESIGNTIMESP=24500>string pgjoread (int fd,
      int Ten) </FONT></P>
      <P DESIGNTIMESP=24501><FONT face=Tahoma size=2 DESIGNTIMESP=24502>Возвращает прочитанную из
      объекта строку, указанную его дескриптором fd. В аргументе 1еп указывается
      максимальная длина возвращаемой строки. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24503><FONT face=Tahoma
      size=2 DESIGNTIMESP=24504>pg_loreadall </FONT></P>
      <P DESIGNTIMESP=24505><FONT face=Tahoma size=2 DESIGNTIMESP=24506>Создание большого объекта
      и отсылка его содержимого непосредственно в поток вывода (браузеру)
      </FONT></P>
      <P DESIGNTIMESP=24507><FONT face=Tahoma size=2 DESIGNTIMESP=24508>void pgjoreadall (int fd)
      </FONT></P>
      <P DESIGNTIMESP=24509><FONT face=Tahoma size=2 DESIGNTIMESP=24510>Используется в основном
      для вывода двоичных данных (графики и звука). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24511><FONT face=Tahoma
      size=2 DESIGNTIMESP=24512>pg_lowrite </FONT></P>
      <P DESIGNTIMESP=24513><FONT face=Tahoma size=2 DESIGNTIMESP=24514>Запись большого объекта
      </FONT></P>
      <P DESIGNTIMESP=24515><FONT face=Tahoma size=2 DESIGNTIMESP=24516>int pgjowrite (int fd,
      string buf) </FONT></P>
      <P DESIGNTIMESP=24517><FONT face=Tahoma size=2 DESIGNTIMESP=24518>Записывает данные из
      буфера buf в объект, указанный дескриптором fd; возвращает число
      фактически записанных байтов или FALSE — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24519><FONT face=Tahoma
      size=2 DESIGNTIMESP=24520>pg_lounlink </FONT></P>
      <P DESIGNTIMESP=24521><FONT face=Tahoma size=2 DESIGNTIMESP=24522>Удаление большого объекта
      void pgjounlink (int conn, int lobjid) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24523><FONT face=Tahoma
      size=2 DESIGNTIMESP=24524>pg_errormessage </FONT></P>
      <P DESIGNTIMESP=24525><FONT face=Tahoma size=2 DESIGNTIMESP=24526>Получение последнего
      сообщения об ошибке </FONT></P>
      <P DESIGNTIMESP=24527><FONT face=Tahoma size=2 DESIGNTIMESP=24528>string pg_errormessage
      (int connection) </FONT></P>
      <P class=Title_2 DESIGNTIMESP=24529><a name=5
       designtimesp=24530></A><FONT face=Tahoma size=2 DESIGNTIMESP=24531>Microsoft SQL Server
      </FONT></P>
      <P DESIGNTIMESP=24532><FONT face=Tahoma size=2 DESIGNTIMESP=24533>Ранее для доступа к
      Microsoft SQL 6.5 и 7.0 использовались разные модули, но теперь они
      объединены в один. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24534><FONT face=Tahoma
      size=2 DESIGNTIMESP=24535>mssql_coonnect </FONT></P>
      <P DESIGNTIMESP=24536><FONT face=Tahoma size=2 DESIGNTIMESP=24537>Подключение к серверу MS
      SQL </FONT></P>
      <P DESIGNTIMESP=24538><FONT face=Tahoma size=2 DESIGNTIMESP=24539>int mssql_connect
      ([string servername [, string user-name [, string password]]]) </FONT></P>
      <P DESIGNTIMESP=24540><FONT face=Tahoma size=2 DESIGNTIMESP=24541>Возвращает дескриптор
      подключения к серверу MS SQL или FALSE — при ошибке. Аргумент servernane
      должен быть действительным именем, определенным в файле interfaces.
      </FONT></P>
      <P DESIGNTIMESP=24542><FONT face=Tahoma size=2 DESIGNTIMESP=24543>Если функция повторно
      вызывается с теми же аргументами, новое подключение не создается, а
      возвращается идентификатор имеющегося. </FONT></P>
      <P DESIGNTIMESP=24544><FONT face=Tahoma size=2 DESIGNTIMESP=24545>Подключение к серверу
      закрывается при завершении сценария или ранее, если явно вызывается
      функция mssql_close(). </FONT></P>
      <P DESIGNTIMESP=24546><FONT face=Tahoma size=2 DESIGNTIMESP=24547>См. также:
      mssql_pconnect(), mssql_close(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24548><FONT face=Tahoma
      size=2 DESIGNTIMESP=24549>mssql_close </FONT></P>
      <P DESIGNTIMESP=24550><FONT face=Tahoma size=2 DESIGNTIMESP=24551>Закрытие подключения к MS
      SQL Server </FONT></P>
      <P DESIGNTIMESP=24552><FONT face=Tahoma size=2 DESIGNTIMESP=24553>int mssql_close ([int
      link_identifier]) Возвращает TRUE или FALSE — при ошибке. </FONT></P>
      <P DESIGNTIMESP=24554><FONT face=Tahoma size=2 DESIGNTIMESP=24555>Идентификатор
      закрываемого подключения указывается в аргументе; если его не указывать,
      то закрывается последнее открытое данным сценарием подключение.
</FONT></P>
      <P DESIGNTIMESP=24556><FONT face=Tahoma size=2 DESIGNTIMESP=24557>Фактически использование
      данной функции не является обязательным, так как РНР автоматически
      закрывает все незакрытые неустойчивые подключения при завершении сценария.
      Заметьте: устойчивые подключения, созданные функцией mssql_pconnect(), не
      закрываются. </FONT></P>
      <P DESIGNTIMESP=24558><FONT face=Tahoma size=2 DESIGNTIMESP=24559>См. также:
      mssql_connect(), mssql_pconnect(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24560><FONT face=Tahoma
      size=2 DESIGNTIMESP=24561>mssql_pconnect </FONT></P>
      <P DESIGNTIMESP=24562><FONT face=Tahoma size=2 DESIGNTIMESP=24563>Создание устойчивого
      подключения к серверу MS SQL</FONT></P>
      <P DESIGNTIMESP=24564><FONT face=Tahoma size=2 DESIGNTIMESP=24565>int mssqljiconnect
      ([string server-name [, string username [. string password]]]) </FONT></P>
      <P DESIGNTIMESP=24566><FONT face=Tahoma size=2 DESIGNTIMESP=24567>Возвращает дескриптор
      устойчивого подключения или FALSE — при ошибке. Mssql_pconnect() действует
      подобно Mssql_connect() с двумя отличиями. </FONT></P>
      <P DESIGNTIMESP=24568><FONT face=Tahoma size=2 DESIGNTIMESP=24569>Перед подключением
      функция пытается проверить, имеется ли уже открытое (устойчивое)
      подключение с параметрами (имя сервера, пользователя и пароль),
      аналогичными указанным. Если такое подключение обнаруживается, то
      возвращается его идентификатор вместо создания нового подключения.
      </FONT></P>
      <P DESIGNTIMESP=24570><FONT face=Tahoma size=2 DESIGNTIMESP=24571>При завершении сценария
      подключение не закрывается, а остается действительным для дальнейшего
      использования. (Функция mssql_ close() не может закрыть подключения,
      созданные с помощью mssql_ pconnect().) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24572><FONT face=Tahoma
      size=2 DESIGNTIMESP=24573>mssql_select_db </FONT></P>
      <P DESIGNTIMESP=24574><FONT face=Tahoma size=2 DESIGNTIMESP=24575>Выбор БД MS SQL
      </FONT></P>
      <P DESIGNTIMESP=24576><FONT face=Tahoma size=2 DESIGNTIMESP=24577>int mssql_select_db
      (string databasejiame [. int linkjidentifier]) </FONT></P>
      <P DESIGNTIMESP=24578><FONT face=Tahoma size=2 DESIGNTIMESP=24579>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=24580><FONT face=Tahoma size=2 DESIGNTIMESP=24581>Устанавливает БД с именем
      database_name, активной для текущего подключения или указанного в
      link_iidentifier. Если подключений не имеется, то косвенно вызывается
      функция mssql_connect() с параметрами по умолчанию. </FONT></P>
      <P DESIGNTIMESP=24582><FONT face=Tahoma size=2 DESIGNTIMESP=24583>Последующие запросы,
      выполняемые функцией, будут адресованы данной БД. </FONT></P>
      <P DESIGNTIMESP=24584><FONT face=Tahoma size=2 DESIGNTIMESP=24585>См. также:
      mssql_connect(), mssql_pconnect() и mssql_query() </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24586><FONT face=Tahoma
      size=2 DESIGNTIMESP=24587>mssql_query </FONT></P>
      <P DESIGNTIMESP=24588><FONT face=Tahoma size=2 DESIGNTIMESP=24589>Выполнение запроса к БД
      </FONT></P>
      <P DESIGNTIMESP=24590><FONT face=Tahoma size=2 DESIGNTIMESP=24591>int rassql_query (string
      query [, int 1ink_identifier]) </FONT></P>
      <P DESIGNTIMESP=24592><FONT face=Tahoma size=2 DESIGNTIMESP=24593>Посылает запрос текущей
      БД, активной для текущего (последнего открытого) подключения пли
      указанного и link_identifier. Если подключений не имеется, то косвенно
      вызывается функция mssql_connect() с параметрами по умолчанию. </FONT></P>
      <P DESIGNTIMESP=24594><FONT face=Tahoma size=2 DESIGNTIMESP=24595>Возвращает дескриптор
      набора возвращенных записей или FALSE — при ошибке. </FONT></P>
      <P DESIGNTIMESP=24596><FONT face=Tahoma size=2 DESIGNTIMESP=24597>См. также:
      mssql_select_db() и mssql_connect(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24598><FONT face=Tahoma
      size=2 DESIGNTIMESP=24599>mssql_num_rows </FONT></P>
      <P DESIGNTIMESP=24600><FONT face=Tahoma size=2 DESIGNTIMESP=24601>Получение числа
      возвращенных записей </FONT></P>
      <P DESIGNTIMESP=24602><FONT face=Tahoma size=2 DESIGNTIMESP=24603>int mssql_num_rows
      (string result) </FONT></P>
      <P DESIGNTIMESP=24604><FONT face=Tahoma size=2 DESIGNTIMESP=24605>Возвращает число записей
      в наборе result, возвращенном функцией mssql_query(). </FONT></P>
      <P DESIGNTIMESP=24606><FONT face=Tahoma size=2 DESIGNTIMESP=24607>См. также: mssql_query()
      и mssql_fetch_row(). </FONT></P>
      <P DESIGNTIMESP=24608><FONT face=Tahoma size=2 DESIGNTIMESP=24609>В текущей реализации
      модуля отсутствует функция mssql _affected_ rows(), и для того, чтобы
      выяснить, сколько записей было изменено командами UPDATE, INSERT или
      DELETE, приходится использовать подобный следующему код: </FONT></P>
      <P class=list DESIGNTIMESP=24610><FONT face=Tahoma size=2 DESIGNTIMESP=24611>SrsRows =
      mssql_query<br designtimesp=24612>("select @@rowcount as rows". $db):<br
       designtimesp=24613>Srows = mssql_result<br
       designtimesp=24614>($rsRows. 0. "rows"): </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24615><FONT face=Tahoma
      size=2 DESIGNTIMESP=24616>mssql_free_result </FONT></P>
      <P DESIGNTIMESP=24617><FONT face=Tahoma size=2 DESIGNTIMESP=24618>Уничтожение набора
      записей </FONT></P>
      <P DESIGNTIMESP=24619><FONT face=Tahoma size=2 DESIGNTIMESP=24620>int mssql_free_result
      (int result) </FONT></P>
      <P DESIGNTIMESP=24621><FONT face=Tahoma size=2 DESIGNTIMESP=24622>Функция освобождает
      память, занимаемую возвращенным запросом, набором записей result. Ее
      следует использовать только в случае, если требуется экономить память, так
      как память автоматически освобождается при завершении сценария.
</FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24623><FONT face=Tahoma
      size=2 DESIGNTIMESP=24624>mssql_result </FONT></P>
      <P DESIGNTIMESP=24625><FONT face=Tahoma size=2 DESIGNTIMESP=24626>Получение определенного
      элемента набора записей </FONT></P>
      <P DESIGNTIMESP=24627><FONT face=Tahoma size=2 DESIGNTIMESP=24628>int mssql result (Int
      result, int l, mixed field) </FONT></P>
      <P DESIGNTIMESP=24629><FONT face=Tahoma size=2 DESIGNTIMESP=24630>Возвращает содержимое
      ячейки из набора записей result. В аргументе row указывается номер записи
      (нумерация начинается с 0), в аргументе field можно указать индекс поля
      (число), имя поля, полное имя поля (вида: «имя_таблицы.имя_поля») или
      псевдоним поля (для запросов типа 'SELECT foo AS bar FROM...').
</FONT></P>
      <P DESIGNTIMESP=24631><FONT face=Tahoma size=2 DESIGNTIMESP=24632>При работе с большими
      наборами записей быстрее выполняются функции типа _fetch_ (см. ниже).
      Также заметьте, что численные индексы обрабатываются быстрее строковых.
      </FONT></P>
      <P DESIGNTIMESP=24633><FONT face=Tahoma size=2 DESIGNTIMESP=24634>Не следует вызывать
      функцию mysqljresult() в сочетании с другими функциями обработки набора
      записей. </FONT></P>
      <P DESIGNTIMESP=24635><FONT face=Tahoma size=2 DESIGNTIMESP=24636>Рекомендуется
      использовать альтернативные функции: mssql_fetch_ row(),
      mssql_fetch_array() и mssql_fetch_object(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24637><FONT face=Tahoma
      size=2 DESIGNTIMESP=24638>mssql_data_seek </FONT></P>
      <P DESIGNTIMESP=24639><FONT face=Tahoma size=2 DESIGNTIMESP=24640>Перемещение внутреннего
      указателя записи </FONT></P>
      <P DESIGNTIMESP=24641><FONT face=Tahoma size=2 DESIGNTIMESP=24642>int mssql_data_seek (int
      resul ^identifier, int rowjnumber) </FONT></P>
      <P DESIGNTIMESP=24643><FONT face=Tahoma size=2 DESIGNTIMESP=24644>При каждом вызове функции
      mssql_fetch_row() (или подобной ей) внутренний курсор записи смещается на
      следующую запись. Данная функция позволяет свободно перемещать курсор в
      наборе записей result_identifier так, чтобы он указывал на запись с
      номером row_ number (нумерация начинается с 0). </FONT></P>
      <P DESIGNTIMESP=24645><FONT face=Tahoma size=2 DESIGNTIMESP=24646>Она возвращает TRUE или
      FALSE — при ошибке. </FONT></P>
      <P DESIGNTIMESP=24647><FONT face=Tahoma size=2 DESIGNTIMESP=24648>См. также
      mssql_data_seek(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24649><FONT face=Tahoma
      size=2 DESIGNTIMESP=24650>mssql_fetch_array </FONT></P>
      <P DESIGNTIMESP=24651><FONT face=Tahoma size=2 DESIGNTIMESP=24652>Занесение записи в массив
      </FONT></P>
      <P DESIGNTIMESP=24653><FONT face=Tahoma size=2 DESIGNTIMESP=24654>array mssql_fetch_array
      (int result) </FONT></P>
      <P DESIGNTIMESP=24655><FONT face=Tahoma size=2 DESIGNTIMESP=24656>Возвращает массив,
      соответствующий текущей записи из набора записей result, возвращенных
      запросом, или FALSE, если записей более не имеется (при этом курсор записи
      перемещается на следующую). </FONT></P>
      <P DESIGNTIMESP=24657><FONT face=Tahoma size=2 DESIGNTIMESP=24658>Данная функция является
      расширением функции mysql_fetch_row(), и она возвращает объединенный
      нумсрованно-ассоциативный массив. Доступ к элементам массива может
      осуществляться как через имена полей, так и по их номеру. </FONT></P>
      <P DESIGNTIMESP=24659><FONT face=Tahoma size=2 DESIGNTIMESP=24660>Заметьте, что функция
      выполняется немного медленнее, чем mysql_ fetch_row(), но предоставляет
      дополнительную функциональность. </FONT></P>
      <P DESIGNTIMESP=24661><FONT face=Tahoma size=2 DESIGNTIMESP=24662>См. также
      mssql_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24663><FONT face=Tahoma
      size=2 DESIGNTIMESP=24664>mssql_fetch_row </FONT></P>
      <P DESIGNTIMESP=24665><FONT face=Tahoma size=2 DESIGNTIMESP=24666>Занесение записи в
      нумерованный массив </FONT></P>
      <P DESIGNTIMESP=24667><FONT face=Tahoma size=2 DESIGNTIMESP=24668>array mssql_fetch_row
      (int result) </FONT></P>
      <P DESIGNTIMESP=24669><FONT face=Tahoma size=2 DESIGNTIMESP=24670>Возвращает
      соответствующий текущей записи массив из набора записей result,
      возвращенных запросом (последующий вызов функции возвращает следующую
      запись), или FALSE, если записей более не имеется. </FONT></P>
      <P DESIGNTIMESP=24671><FONT face=Tahoma size=2 DESIGNTIMESP=24672>Каждое поле записи
      сохраняется в нумерованном элементе массива (нумерация начинается с 0).
      </FONT></P>
      <P DESIGNTIMESP=24673><FONT face=Tahoma size=2 DESIGNTIMESP=24674>См. также:
      mssql_fetch_array(), mssql_fetch_object(), mssql_data_seek(),
      mssql_fetch_length() и mssql_result(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24675><FONT face=Tahoma
      size=2 DESIGNTIMESP=24676>mssql_fetch_object </FONT></P>
      <P DESIGNTIMESP=24677><FONT face=Tahoma size=2 DESIGNTIMESP=24678>Получение записи в
      свойствах объекта </FONT></P>
      <P DESIGNTIMESP=24679><FONT face=Tahoma size=2 DESIGNTIMESP=24680>int mssql_fetch_object
      (int result) </FONT></P>
      <P DESIGNTIMESP=24681><FONT face=Tahoma size=2 DESIGNTIMESP=24682>Возвращает объект, в
      свойствах которого находятся поля текущей записи, или FALSE, если записей
      более не имеется. </FONT></P>
      <P DESIGNTIMESP=24683><FONT face=Tahoma size=2 DESIGNTIMESP=24684>По скорости выполнения
      функция идентична mysql_fetch_array() и почти идентична mysql_fetch_row().
      </FONT></P>
      <P DESIGNTIMESP=24685><FONT face=Tahoma size=2 DESIGNTIMESP=24686>См. также:
      mssql_fetch_array() и mssql_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24687><FONT face=Tahoma
      size=2 DESIGNTIMESP=24688>mssql_num_fields </FONT></P>
      <P DESIGNTIMESP=24689><FONT face=Tahoma size=2 DESIGNTIMESP=24690>Получение числа полей в
      наборе записей </FONT></P>
      <P DESIGNTIMESP=24691><FONT face=Tahoma size=2 DESIGNTIMESP=24692>int mssql_num_fields (int
      result) </FONT></P>
      <P DESIGNTIMESP=24693><FONT face=Tahoma size=2 DESIGNTIMESP=24694>См. также: mssql_query(),
      mssql_fetch_field() и mssql_num_rows(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24695><FONT face=Tahoma
      size=2 DESIGNTIMESP=24696>mssql_fetch_field </FONT></P>
      <P DESIGNTIMESP=24697><FONT face=Tahoma size=2 DESIGNTIMESP=24698>Получение информации о
      поле записи в свойствах объекта </FONT></P>
      <P DESIGNTIMESP=24699><FONT face=Tahoma size=2 DESIGNTIMESP=24700>object mssql_fetch_field
      (int result [. int field_pffset]) </FONT></P>
      <P DESIGNTIMESP=24701><FONT face=Tahoma size=2 DESIGNTIMESP=24702>Если номер поля
      field_offset не указан, при каждом вызове функции возвращаются свойства
      следующего поля из набора записей result. </FONT></P>
      <P DESIGNTIMESP=24703><FONT face=Tahoma size=2 DESIGNTIMESP=24704>Возвращаемый объект имеет
      следующие свойства (и содержит информацию): </FONT></P>
      <ul designtimesp=24705>
        <li designtimesp=24706><FONT face=Tahoma size=2 DESIGNTIMESP=24707>name — имя поля. Если
        поле — результат выполнения функции, имя возвращается в виде computed$N,
        где #N — порядковый номер; </FONT>
        <li designtimesp=24708><FONT face=Tahoma size=2 DESIGNTIMESP=24709>column_source — имя
        таблицы, которой принадлежит поле; </FONT>
        <li designtimesp=24710><FONT face=Tahoma size=2 DESIGNTIMESP=24711>maxjlength —
        максимальная длина поля; </FONT>
        <li designtimesp=24712><FONT face=Tahoma size=2 DESIGNTIMESP=24713>numeric — 1, если поле
        числовое. </FONT></LI></UL>
      <P DESIGNTIMESP=24714><FONT face=Tahoma size=2 DESIGNTIMESP=24715>См. также
      mssql_field_seek(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24716><FONT face=Tahoma
      size=2 DESIGNTIMESP=24717>mssql_field_seek </FONT></P>
      <P DESIGNTIMESP=24718><FONT face=Tahoma size=2 DESIGNTIMESP=24719>Перемещение к указанному
      полю </FONT></P>
      <P DESIGNTIMESP=24720><FONT face=Tahoma size=2 DESIGNTIMESP=24721>int mssql_field_seek (int
      result, int field_offset) </FONT></P>
      <P DESIGNTIMESP=24722><FONT face=Tahoma size=2 DESIGNTIMESP=24723>Перемещается к указанному
      числом полю. И, если при следующем вызове mssql_fetch_field() не
      указывается номер поля, будет возвращено это поле. </FONT></P>
      <P DESIGNTIMESP=24724><FONT face=Tahoma size=2 DESIGNTIMESP=24725>См. также
      mssql_fetch_field(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24726><FONT face=Tahoma
      size=2 DESIGNTIMESP=24727>mssql_field_name </FONT></P>
      <P DESIGNTIMESP=24728><FONT face=Tahoma size=2 DESIGNTIMESP=24729>Получение имени поля в
      наборе записей </FONT></P>
      <P DESIGNTIMESP=24730><FONT face=Tahoma size=2 DESIGNTIMESP=24731>int mssql_field_name (int
      result [, int offset]) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24732><FONT face=Tahoma
      size=2 DESIGNTIMESP=24733>mssql_field_length </FONT></P>
      <P DESIGNTIMESP=24734><FONT face=Tahoma size=2 DESIGNTIMESP=24735>Получение размера поля
      набора записей </FONT></P>
      <P DESIGNTIMESP=24736><FONT face=Tahoma size=2 DESIGNTIMESP=24737>int mssql_fieldjength
      (int result [, int offset]) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24738><FONT face=Tahoma
      size=2 DESIGNTIMESP=24739>mssql_field_type </FONT></P>
      <P DESIGNTIMESP=24740><FONT face=Tahoma size=2 DESIGNTIMESP=24741>Получение типа поля
      набора записей </FONT></P>
      <P DESIGNTIMESP=24742><FONT face=Tahoma size=2 DESIGNTIMESP=24743>string mssql_field_type
      (int result [, int offset]) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24744><FONT face=Tahoma
      size=2 DESIGNTIMESP=24745>mssql_get_last_message </FONT></P>
      <P DESIGNTIMESP=24746><FONT face=Tahoma size=2 DESIGNTIMESP=24747>Получение последнего
      сообщения сервера </FONT></P>
      <P DESIGNTIMESP=24748><FONT face=Tahoma size=2 DESIGNTIMESP=24749>string
      mssql_getjast_message (void) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24750><FONT face=Tahoma
      size=2 DESIGNTIMESP=24751>mssql_min_error_severity </FONT></P>
      <P DESIGNTIMESP=24752><FONT face=Tahoma size=2 DESIGNTIMESP=24753>Установка минимального
      уровня сообщаемых ошибок </FONT></P>
      <P DESIGNTIMESP=24754><FONT face=Tahoma size=2 DESIGNTIMESP=24755>void
      rassql_min_error_severity (int severity) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24756><FONT face=Tahoma
      size=2 DESIGNTIMESP=24757>mssql_min_message_severity </FONT></P>
      <P DESIGNTIMESP=24758><FONT face=Tahoma size=2 DESIGNTIMESP=24759>Установка минимального
      уровня сообщений </FONT></P>
      <P DESIGNTIMESP=24760><FONT face=Tahoma size=2 DESIGNTIMESP=24761>void
      mssql_min_message_severity (int severity) </FONT></P>
      <P class=Title_2 DESIGNTIMESP=24762><a name=6
       designtimesp=24763></A><FONT face=Tahoma size=2 DESIGNTIMESP=24764>InterBase </FONT></P>
      <P DESIGNTIMESP=24765><FONT face=Tahoma size=2 DESIGNTIMESP=24766>InterBase
      (http://www.interbase.com/) — популярная БД, производимая Borland/Inprise.
      Последняя версия InterBase 6 распространяется бесплатно. </FONT></P>
      <P DESIGNTIMESP=24767><FONT face=Tahoma size=2 DESIGNTIMESP=24768>Эта БД использует
      одинарные кавычки (') для цитирования но аналогии с БД Sybase, если в файл
      php.ini добавить параметр: </FONT></P>
      <P class=list DESIGNTIMESP=24769><FONT face=Tahoma
      size=2 DESIGNTIMESP=24770>magic_quotes_sybase = On </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24771><FONT face=Tahoma
      size=2 DESIGNTIMESP=24772>ibase_connect </FONT></P>
      <P DESIGNTIMESP=24773><FONT face=Tahoma size=2 DESIGNTIMESP=24774>Подключение к серверу БД
      InterBase </FONT></P>
      <P DESIGNTIMESP=24775><FONT face=Tahoma size=2 DESIGNTIMESP=24776>int ibase_connect (string
      database [, string user-name [, string password [, string charset [, int
      buffers [, int dialect [. string role&gt;]]) </FONT></P>
      <P DESIGNTIMESP=24777><FONT face=Tahoma size=2 DESIGNTIMESP=24778>Аргумент database должен
      указывать путь к файлу БД на сервере. Если сервер не локальный, то должен
      присутствовать префикс: «hostname:» (TCP/IP), «//hostname/» (NetBEUI) или
      «hostname®» (IPX/SPX), в зависимости от используемого протокола, user-name
      и password также могут быть указаны параметрами конфигурации PHP ibase.
      default_user и ibase.default_password. charset определяет кодировку,
      используемую БД но умолчанию, buffers — число буферов, используемых для
      кэширования БД (при значении 0 или отсутствии указания сервер будет
      использовать собственное значение), dialect указывает используемый
      подключением диалект SQL (по умолчанию — самый старший, поддерживаемый
      клиентской частью). ibase_connect('local
      host:/usr/db/db.gdb'.'SYSDBA'.'masterkey'. ' IS08859J'. '100'. '1' ) ;
      </FONT></P>
      <P DESIGNTIMESP=24779><FONT face=Tahoma size=2 DESIGNTIMESP=24780>Если функция повторно
      вызывается с теми же аргументами, новое подключение не создается, а
      возвращается идентификатор имеющегося. </FONT></P>
      <P DESIGNTIMESP=24781><FONT face=Tahoma size=2 DESIGNTIMESP=24782>В конце сценария принято
      закрывать подключение функцией ibase_ close(), но этого можно не делать,
      поскольку РНР автоматически закрывает все (неустойчивые) подключения при
      завершении сценария. </FONT></P>
      <P class=list DESIGNTIMESP=24783><FONT face=Tahoma size=2 DESIGNTIMESP=24784>&lt;?php <br
       designtimesp=24785>$host="locdlhost:c:<br
       designtimesp=24786>\\IB6\\data\\db.gdb": // WinNT путь <br
       designtimesp=24787>$dbh = ibase_connect <br designtimesp=24788>($host.
      Susername, Spassword). <br designtimesp=24789>Sstmt = 'SELECT * FROM
      tblname'; <br designtimesp=24790>$sth = ibasejjuery (Jdbh, $stmt); <br
       designtimesp=24791>while ($row = ibase_fetch_object<br
       designtimesp=24792>($sth)) { print $row-&gt;email - "\n". } <br
       designtimesp=24793>ibase_close ($dbh); ?&gt; </FONT></P>
      <P DESIGNTIMESP=24794><FONT face=Tahoma size=2 DESIGNTIMESP=24795>См. также
      ibase_pconnect(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24796><FONT face=Tahoma
      size=2 DESIGNTIMESP=24797>ibase_close </FONT></P>
      <P DESIGNTIMESP=24798><FONT face=Tahoma size=2 DESIGNTIMESP=24799>Отключение от сервера БД
      InterBase </FONT></P>
      <P DESIGNTIMESP=24800><FONT face=Tahoma size=2 DESIGNTIMESP=24801>int ibase_close ([int
      connection_id]) </FONT></P>
      <P DESIGNTIMESP=24802><FONT face=Tahoma size=2 DESIGNTIMESP=24803>Возвращает TRUE или FALSE
      — при ошибке. Текущая транзакция (если имеется) завершается, а остальные
      отменяются. </FONT></P>
      <P DESIGNTIMESP=24804><FONT face=Tahoma size=2 DESIGNTIMESP=24805>Идентификатор
      закрываемого подключения указывается в .аргументе; если его не указывать,
      то закрывается последнее открытое данным сценарием подключение.
</FONT></P>
      <P DESIGNTIMESP=24806><FONT face=Tahoma size=2 DESIGNTIMESP=24807>фактически использование
      данной функции не является обязательным, так как РНР автоматически
      закрывает все незакрытые неустойчивые подключения при завершении сценария.
      </FONT></P>
      <P DESIGNTIMESP=24808><FONT face=Tahoma size=2 DESIGNTIMESP=24809>Заметьте: устойчивые
      подключения, созданные функцией mysql_ pconnect(), не закрываются.
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24810><FONT face=Tahoma
      size=2 DESIGNTIMESP=24811>ibase_pconnect </FONT></P>
      <P DESIGNTIMESP=24812><FONT face=Tahoma size=2 DESIGNTIMESP=24813>Создание устойчивого
      подключения к серверу БД InterBase </FONT></P>
      <P DESIGNTIMESP=24814><FONT face=Tahoma size=2 DESIGNTIMESP=24815>int ibase_pconnect
      (string database [, string username [, string password [, string charset
      [, int buffers [, int dialect [, string role&gt;]]) </FONT></P>
      <P DESIGNTIMESP=24816><FONT face=Tahoma size=2 DESIGNTIMESP=24817>ibase pconnect()
      действует подобно ibase_connect() с двумя отличиями. </FONT></P>
      <P DESIGNTIMESP=24818><FONT face=Tahoma size=2 DESIGNTIMESP=24819>Перед подключением
      функция пытается проверить, имеется ли уже , открытое (устойчивое)
      подключение с параметрами, аналогичными указанным. Если такое подключение
      обнаруживается, то возвратается его идентификатор вместо создания нового
      подключения. При завершении сценария подключение не закрывается, а
      остается действительным для дальнейшего использования. (Функция
      ibase_close() не может закрыть подключения, созданные с помощью
      ibase_pconnect().) </FONT></P>
      <P DESIGNTIMESP=24820><FONT face=Tahoma size=2 DESIGNTIMESP=24821>См. описание аргументов в
      ibase_connect(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24822><FONT face=Tahoma
      size=2 DESIGNTIMESP=24823>ibase_prepare </FONT></P>
      <P DESIGNTIMESP=24824><FONT face=Tahoma size=2 DESIGNTIMESP=24825>Подготовка запроса для
      последующего выполнения </FONT></P>
      <P DESIGNTIMESP=24826><FONT face=Tahoma size=2 DESIGNTIMESP=24827>int ibase_prepare ([int
      link_identifier, string query]) </FONT></P>
      <P DESIGNTIMESP=24828><FONT face=Tahoma size=2 DESIGNTIMESP=24829>В дальнейшей части
      сценария этот запрос можно выполнить функцией ibase_execute(), указав его
      параметры. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24830><FONT face=Tahoma
      size=2 DESIGNTIMESP=24831>ibase_execute </FONT></P>
      <P DESIGNTIMESP=24832><FONT face=Tahoma size=2 DESIGNTIMESP=24833>Выполнение
      подготовленного запроса </FONT></P>
      <P DESIGNTIMESP=24834><FONT face=Tahoma size=2 DESIGNTIMESP=24835>int ibase_execute (int
      query [, int bind_args ...]) </FONT></P>
      <P DESIGNTIMESP=24836><FONT face=Tahoma size=2 DESIGNTIMESP=24837>Выполняет запрос query,
      подготовленный функцией ibase_prepare(). Это более эффективно, чем
      использование для выполнения серии запросов функцией ibase_query(), если
      сами запросы различаются только указываемыми параметрами. </FONT></P>
      <P class=list DESIGNTIMESP=24838><FONT face=Tahoma size=2 DESIGNTIMESP=24839>&lt;?php <br
       designtimesp=24840>Supdates = array<br designtimesp=24841>( 1 =&gt;
      'Enc'. 5 =&gt; 'Filnp1. 7 =&gt; 'Larry1 ), <br designtimesp=24842>$query
      = ibase_prepare("UPDATE tbl <br designtimesp=24843>SET A = ? WHERE Z =
      ?"): <br designtimesp=24844>while (list($a. $r) = eachdupdates)) <br
       designtimesp=24845>{ ibase_execute($query. $r. $a). } ?&gt; </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24846><FONT face=Tahoma
      size=2 DESIGNTIMESP=24847>ibase_free_query </FONT></P>
      <P DESIGNTIMESP=24848><FONT face=Tahoma size=2 DESIGNTIMESP=24849>Уничтожение
      подготовленного запроса</FONT></P>
      <P DESIGNTIMESP=24850><FONT face=Tahoma size=2 DESIGNTIMESP=24851>int ibase_free_query (int
      query) </FONT></P>
      <P DESIGNTIMESP=24852><FONT face=Tahoma size=2 DESIGNTIMESP=24853>Уничтожает запрос,
      подготовленный функцией ibase_prepare(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24854><FONT face=Tahoma
      size=2 DESIGNTIMESP=24855>ibase_query </FONT></P>
      <P DESIGNTIMESP=24856><FONT face=Tahoma size=2 DESIGNTIMESP=24857>Выполнение запроса к БД
      InterBase </FONT></P>
      <P DESIGNTIMESP=24858><FONT face=Tahoma size=2 DESIGNTIMESP=24859>int ibase_query ([int
      link_identifier. string query [, int bind_args]]) </FONT></P>
      <P DESIGNTIMESP=24860><FONT face=Tahoma size=2 DESIGNTIMESP=24861>Возвращает дескриптор
      набора записей, обрабатываемый ibase_fetch_ row(), ibase fetch object(),
      ibase free result() и ibase free query(). </FONT></P>
      <P DESIGNTIMESP=24862><FONT face=Tahoma size=2 DESIGNTIMESP=24863>Хотя функция поддерживает
      возможность указания параметров запроса, целесообразнее использовать
      функции ibase_prepare() и ibase_ execute(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24864><FONT face=Tahoma
      size=2 DESIGNTIMESP=24865>ibase_trans </FONT></P>
      <P DESIGNTIMESP=24866><FONT face=Tahoma size=2 DESIGNTIMESP=24867>Начать транзакцию
      </FONT></P>
      <P DESIGNTIMESP=24868><FONT face=Tahoma size=2 DESIGNTIMESP=24869>int ibase_trans ([int
      trans_args [, int link_identifier]]) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24870><FONT face=Tahoma
      size=2 DESIGNTIMESP=24871>ibase_commit </FONT></P>
      <P DESIGNTIMESP=24872><FONT face=Tahoma size=2 DESIGNTIMESP=24873>Завершение транзакции
      </FONT></P>
      <P DESIGNTIMESP=24874><FONT face=Tahoma size=2 DESIGNTIMESP=24875>int ibase_commit ([int
      link identifier, int trans_number]) </FONT></P>
      <P DESIGNTIMESP=24876><FONT face=Tahoma size=2 DESIGNTIMESP=24877>Завершает транзакцию
      trans_number, созданную ibase_trans(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24878><FONT face=Tahoma
      size=2 DESIGNTIMESP=24879>ibase_rollback </FONT></P>
      <P DESIGNTIMESP=24880><FONT face=Tahoma size=2 DESIGNTIMESP=24881>Отмена транзакции
      </FONT></P>
      <P DESIGNTIMESP=24882><FONT face=Tahoma size=2 DESIGNTIMESP=24883>int ibase_rollback ([int
      link_identifier, int trans_number]) </FONT></P>
      <P DESIGNTIMESP=24884><FONT face=Tahoma size=2 DESIGNTIMESP=24885>Отменяет транзакцию
      trans_number, созданную ibase_trans(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24886><FONT face=Tahoma size=2 DESIGNTIMESP=24887>ibase
      free_result </FONT></P>
      <P DESIGNTIMESP=24888><FONT face=Tahoma size=2 DESIGNTIMESP=24889>Уничтожение набора
      записей </FONT></P>
      <P DESIGNTIMESP=24890><FONT face=Tahoma size=2 DESIGNTIMESP=24891>int ibase_free_resu1t
      (int result_identifier) </FONT></P>
      <P DESIGNTIMESP=24892><FONT face=Tahoma size=2 DESIGNTIMESP=24893>Освобождает память,
      занятую набором записей, возвращенным ibase_ query(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24894><FONT face=Tahoma
      size=2 DESIGNTIMESP=24895>ibase_fetch_row </FONT></P>
      <P DESIGNTIMESP=24896><FONT face=Tahoma size=2 DESIGNTIMESP=24897>Занесение записи в
      нумерованный массив </FONT></P>
      <P DESIGNTIMESP=24898><FONT face=Tahoma size=2 DESIGNTIMESP=24899>array ibase_fetch_row
      (Int result_ldentifler) </FONT></P>
      <P DESIGNTIMESP=24900><FONT face=Tahoma size=2 DESIGNTIMESP=24901>Возвращает в массиве
      следующую запись из набора, возвращенного ibase_query(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24902><FONT face=Tahoma
      size=2 DESIGNTIMESP=24903>ibase_fetch_object </FONT></P>
      <P DESIGNTIMESP=24904><FONT face=Tahoma size=2 DESIGNTIMESP=24905>Получение записи в
      свойствах объекта </FONT></P>
      <P DESIGNTIMESP=24906><FONT face=Tahoma size=2 DESIGNTIMESP=24907>object ibase_fetch_object
      (int resultjid) </FONT></P>
      <P DESIGNTIMESP=24908><FONT face=Tahoma size=2 DESIGNTIMESP=24909>Возвращает в свойствах
      псевдообъекта следующую запись из набора result_id, возвращенного
      ibase_query() или ibase_execute(). </FONT></P>
      <P class=list DESIGNTIMESP=24910><FONT face=Tahoma size=2 DESIGNTIMESP=24911>&lt;php <br
       designtimesp=24912>$dbh = ibase_connect<br designtimesp=24913>($host.
      Susername, Spassword);<br designtimesp=24914>$stmt = 'SELECT * FROM
      tblname1; <br designtimesp=24915>$sth = ibase_query ($dbh, $stmt). <br
       designtimesp=24916>while ($row = ibase_fetch_object ($sth))<br
       designtimesp=24917>{ i print $row-&gt;email . "\n": )<br
       designtimesp=24918>ibase_close ($dbh); I ?&gt; </FONT></P>
      <P DESIGNTIMESP=24919><FONT face=Tahoma size=2 DESIGNTIMESP=24920>См. также
      ibase_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24921><FONT face=Tahoma
      size=2 DESIGNTIMESP=24922>ibase_feld_info </FONT></P>
      <P DESIGNTIMESP=24923><FONT face=Tahoma size=2 DESIGNTIMESP=24924>Получение информации о
      поле записи в массиве </FONT></P>
      <P DESIGNTIMESP=24925><FONT face=Tahoma size=2 DESIGNTIMESP=24926>array ibase_field_info
      (int result, int field number) </FONT></P>
      <P DESIGNTIMESP=24927><FONT face=Tahoma size=2 DESIGNTIMESP=24928>Возвращает массив,
      содержащий элементы name, alias, relation, length, type. </FONT></P>
      <P class=list DESIGNTIMESP=24929><FONT face=Tahoma
      size=2 DESIGNTIMESP=24930>$rs=ibase_query<br designtimesp=24931>("Select * from
      something"):<br designtimesp=24932>$coln - ibase_num_fields($rs):<br
       designtimesp=24933>for ($i=0 ; $1 &lt; $coln : $i++)<br
       designtimesp=24934>{ $col_info = ibase_field_info<br
       designtimesp=24935>($rs. $1); echo "имя поля: <br
       designtimesp=24936>".$col_info['name']."\n";<br
       designtimesp=24937>echo "синоним: ".$col_info['alias']."\n": <br
       designtimesp=24938>echo "реляция: " $col_info['relation']."\n": <br
       designtimesp=24939>echo "размер: ".$col_info['length']."\n":<br
       designtimesp=24940>echo "тип:' ".$col_info['type']."\n": } </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24941><FONT face=Tahoma
      size=2 DESIGNTIMESP=24942>ibase_timefmt </FONT></P>
      <P DESIGNTIMESP=24943><FONT face=Tahoma size=2 DESIGNTIMESP=24944>Установка формата
      возвращаемых даты и времени </FONT></P>
      <P DESIGNTIMESP=24945><FONT face=Tahoma size=2 DESIGNTIMESP=24946>int ibasejtimefmt (string
      format [, Int columntype]) </FONT></P>
      <P DESIGNTIMESP=24947><FONT face=Tahoma size=2 DESIGNTIMESP=24948>Внутренне поля даты и
      времени форматируются функцией языка С strftime(), а с помощью данной
      функции можно установить вид форматирования возвращаемых запросами данных.
      В строке format, дается шаблон, по которому производится форматирование.
      Аргумент columntype указывает, формат каких именно полей устанавливается
      (только с InterBase версии 6 или выше), и может принимать константные
      значения IBASE_TIMESTAMP (по умолчанию), IBASE_DATE и IBASEJIME.
      </FONT></P>
      <P class=list DESIGNTIMESP=24949><FONT face=Tahoma size=2 DESIGNTIMESP=24950>&lt;?php <br
       designtimesp=24951>// формат вида '04 hours 54 minutes'. <br
       designtimesp=24952>ibase_timefmt("*H hours 2M minutes"<br
       designtimesp=24953>. !BASE_TIME) ?&gt; </FONT></P>
      <P DESIGNTIMESP=24954><FONT face=Tahoma size=2 DESIGNTIMESP=24955>Умолчания можно
      установить параметрами конфигурации (php.ini): ibase.timestampformat,
      ibase.dateformat и ibase.timeformat. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24956><FONT face=Tahoma
      size=2 DESIGNTIMESP=24957>ibase_num_fields </FONT></P>
      <P DESIGNTIMESP=24958><FONT face=Tahoma size=2 DESIGNTIMESP=24959>Получение числа полей в
      наборе записей </FONT></P>
      <P DESIGNTIMESP=24960><FONT face=Tahoma size=2 DESIGNTIMESP=24961>int ibase_num_fields (int
      result_id) </FONT></P>
      <P DESIGNTIMESP=24962><FONT face=Tahoma size=2 DESIGNTIMESP=24963>В настоящее время функция
      еще не работоспособна. </FONT></P>
      <P class=list DESIGNTIMESP=24964><FONT face=Tahoma size=2 DESIGNTIMESP=24965>&lt;?рhр <br
       designtimesp=24966>$dbh = ibase_connect <br designtimesp=24967>(Shost,
      Susername. Jpassword); <br designtimesp=24968>Sstmt = 'SELECT * FROM
      tblname': <br designtimesp=24969>$sth = ibasejquery ($dbh. Sstmt); <br
       designtimesp=24970>if dbase_num_fields($sth) &gt; 0) <br
       designtimesp=24971>{ while ($row = ibase_fetch_object <br
       designtimesp=24972>(Ssth)) { print $row-&gt;email "\n": } } <br
       designtimesp=24973>else { die ("No Results were<br
       designtimesp=24974>found for your query"); } <br
       designtimesp=24975>ibase_close ($dbh); ?&gt; </FONT></P>
      <P DESIGNTIMESP=24976><FONT face=Tahoma size=2 DESIGNTIMESP=24977>См. также
      ibase_field_info(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=24978><FONT face=Tahoma
      size=2 DESIGNTIMESP=24979>ibase_errmsg </FONT></P>
      <P DESIGNTIMESP=24980><FONT face=Tahoma size=2 DESIGNTIMESP=24981>Получение сообщения об
      ошибке string ibase_errmsg (void) </FONT></P>
      <P class=Title_3 DESIGNTIMESP=24982><FONT face=Tahoma size=2 DESIGNTIMESP=24983>Поля BLOB
      </FONT></P>
      <P DESIGNTIMESP=24984><FONT face=Tahoma size=2 DESIGNTIMESP=24985>В PHP имеются следующие
      функции для работы с полями BLOB БД InterBase (документация для них пока
      отсутствует): </FONT></P>
      <ul designtimesp=24986>
        <li designtimesp=24987><FONT face=Tahoma size=2 DESIGNTIMESP=24988>ibase_blob_create —
        создает поле BLOB, которое затем может быть сохранено запросом
        (возвращенный дескриптор передастся как параметр запроса); </FONT>
        <li designtimesp=24989><FONT face=Tahoma size=2 DESIGNTIMESP=24990>ibase_blob_open --
        открывает возвращенное запросом поле BLOB для операции; </FONT>
        <li designtimesp=24991><FONT face=Tahoma size=2 DESIGNTIMESP=24992>ibase_blob_close —
        закрывает поле BLOB; </FONT>
        <li designtimesp=24993><FONT face=Tahoma size=2 DESIGNTIMESP=24994>ibase_blob_add —
        добавляет в конец поля BLOB данные; </FONT>
        <li designtimesp=24995><FONT face=Tahoma size=2 DESIGNTIMESP=24996>ibase_blob_import —
        записывает содержимое открытого файла в поле BLOB; </FONT>
        <li designtimesp=24997><FONT face=Tahoma size=2 DESIGNTIMESP=24998>ibase_blob_get —
        читает содержимое поля BLOB; </FONT>
        <li designtimesp=24999><FONT face=Tahoma size=2 DESIGNTIMESP=25000>ibase_blob_echo —
        выводит содержимое поля BLOB; </FONT>
        <li designtimesp=25001><FONT face=Tahoma size=2 DESIGNTIMESP=25002>ibase_blob_info;
        </FONT>
        <li designtimesp=25003><FONT face=Tahoma size=2 DESIGNTIMESP=25004>ibase_blob_cancel.
        </FONT></LI></UL>
      <P DESIGNTIMESP=25005><FONT face=Tahoma size=2 DESIGNTIMESP=25006>Поскольку единственной
      информацией об этих функциях является j пример из исходных текстов, он
      приводится далее. </FONT></P>
      <P class=list DESIGNTIMESP=25007><FONT face=Tahoma
      size=2 DESIGNTIMESP=25008>$cnn=ibase_connect("localhost.F:<br
       designtimesp=25009>\interbase\data\aaa\iq.gdb". <br
       designtimesp=25010>"sysdba'V'masterkey") or die <br
       designtimesp=25011>("Can't connect"): ibase_query<br
       designtimesp=25012>("create table tbl <br
       designtimesp=25013>(v_integer integer. v_blob blob)"):<br
       designtimesp=25014>ibase_cominit(): <br designtimesp=25015>Sname =<br
       designtimesp=25016>"F:\\php_src\\ext\\interbase\\blob.tmp"; <br
       designtimesp=25017>$f = fopen($name."r"); <br designtimesp=25018>$bl_s
      - ibase_blob_import($f); <br designtimesp=25019>ibase_query("ir,sert
      into tbl<br designtimesp=25020>(v_integer. v_blob) values (1. ?)",
      $bl_s):<br designtimesp=25021>$bl_h = ibase_blob_create(),<br
       designtimesp=25022>Sfp = fopen($name."r"): while<br
       designtimesp=25023>($piece = fread($fp. 1024))<br designtimesp=25024>{
      <br designtimesp=25025>ibase_blob_add($bl_h. $piece):<br
       designtimesp=25026>} fclosedftmp); <br
       designtimesp=25027>ibase_blobadd<br designtimesp=25028>($bl_h.<br
       designtimesp=25029>"+-- -----.....----------------------<br
       designtimesp=25030>+\n"): <br designtimesp=25031>$bl_s =
      ibase_blob_close<br designtimesp=25032>($bl_h). <br
       designtimesp=25033>ibase_query("insert into tbl <br
       designtimesp=25034>(v_integer. v_blob) values<br
       designtimesp=25035>(2. ?)", $bl_s); <br designtimesp=25036>$q =
      ibase_query<br designtimesp=25037>("select v_blob from tbl where<br
       designtimesp=25038>vjnteger = 2"): <br designtimesp=25039>$row =
      ibase_fetch_object<br designtimesp=25040>($q.lBASE_TEXT): <br
       designtimesp=25041>echo $row-&gt;V_BLOB: <br designtimesp=25042>bi$q =
      ibase_query<br designtimesp=25043>("select v_blob from tbl <br
       designtimesp=25044>where v_integer = 2"):<br designtimesp=25045>$row =
      ibase_fetch_object($q):<br designtimesp=25046>i base_blob_echo<br
       designtimesp=25047>($ row-&gt;V_BLOB): <br designtimesp=25048>$q =
      ibase_query<br designtimesp=25049>("select v_blob from tbl where <br
       designtimesp=25050>v_integer = 2"). <br designtimesp=25051>$row =
      ibase_fetch_object($q); <br designtimesp=25052>$bl_h =
      ibase_blob_open<br designtimesp=25053>($row-&gt;V_BLOB); <br
       designtimesp=25054>while($piece = ibase_blob_get<br
       designtimesp=25055>($bl_h. 1024)) <br designtimesp=25056>$blob =
      $piece. ibase_blob_close<br designtimesp=25057>($bl_h): <br

       designtimesp=25058>ibase_free_result($q): ibase_close(), <br
       designtimesp=25059>?&gt; </FONT></P>
      <P class=Title_2 DESIGNTIMESP=25060><a name=7
       designtimesp=25061></A><FONT face=Tahoma size=2 DESIGNTIMESP=25062>Informix </FONT></P>
      <P DESIGNTIMESP=25063><FONT face=Tahoma size=2 DESIGNTIMESP=25064>Существующий модуль
      расширения Informix позволяет работать с БД Informix (IDS) 7.x, SE 7.x,
      Universal Server (IUS) 9.x и IDS 2000. IDS 7.x поддерживается полностью
      (включая ноля BYTE и TEXT), ] но для IUS 9.x еще не завершена поддержка
      типов SLOB и CLOB. </FONT></P>
      <P DESIGNTIMESP=25065><FONT face=Tahoma size=2 DESIGNTIMESP=25066>Для компиляции необходима
      ESQL/C (версия 7.2х или выше должна входить в Informix Client SDK) для
      компиляции драйвера Informix. Также должны быть установлены значения
      переменных системы INFORMIXDIR и добавлен каталог $INFORMIXDIR/bin в
      список путей PATH до запуска сценария configure (с ключом
      —with_informix=yes). Автоопределение каталогов файлов заголовков и
      библиотек может быть переопределено установкой системных переменных
      IFX_LIBDIR, IFXJJBS и IFXJNCDIR. </FONT></P>
      <P DESIGNTIMESP=25067><FONT face=Tahoma size=2 DESIGNTIMESP=25068>Во время выполнения
      переменные системы INFORMIXDIR, INFORMIXSERVER и PATH должны быть
      правильно инициализированы. </FONT></P>
      <P DESIGNTIMESP=25069><FONT face=Tahoma size=2 DESIGNTIMESP=25070>Для полей BLOB (TEXT и
      BYTE) запросом возвращаются их идентификаторы. Их содержимое можно
      получить в строковой переменной (если установлено ifx_blobinfile(0);)
      функцией ifx_get_blob($b1ob_id) или сохранить в файле (если установлено
      ifx_blobinfile(l);) функцией i fx_get_blob($bl ob_i d);. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25071><FONT face=Tahoma
      size=2 DESIGNTIMESP=25072>ifx_connect </FONT></P>
      <P DESIGNTIMESP=25073><FONT face=Tahoma size=2 DESIGNTIMESP=25074>Подключение к серверу БД
      Informix </FONT></P>
      <P DESIGNTIMESP=25075><FONT face=Tahoma size=2 DESIGNTIMESP=25076>int ifx_connect ([string
      database [, string user [, string password]]]) </FONT></P>
      <P DESIGNTIMESP=25077><FONT face=Tahoma size=2 DESIGNTIMESP=25078>Все аргументы
      необязательны, и если их не указывать, то используются значения из файла
      конфигурации: ifx.default_host (если не указано иное, библиотеки Informix
      используют значение системной переменной INFORMIXSERVER),
      ifx.default_user, ifx.default_password. Возвращается дескриптор
      подключения или FALSE — при ошибке. $conn_id = ifx_connect
      ("mydb@ol_srvl". "imyself". "mypassword"): </FONT></P>
      <P DESIGNTIMESP=25079><FONT face=Tahoma size=2 DESIGNTIMESP=25080>Если функция повторно
      вызывается с теми же аргументами, новое подключение не создается, а
      возвращается идентификатор имеющегося. </FONT></P>
      <P DESIGNTIMESP=25081><FONT face=Tahoma size=2 DESIGNTIMESP=25082>В конце сценария принято
      закрывать подключение функцией ifx_ close(), но этого можно не делать,
      поскольку РНР автоматически закрывает все (неустойчивые) подключения при
      завершении сценария. </FONT></P>
      <P DESIGNTIMESP=25083><FONT face=Tahoma size=2 DESIGNTIMESP=25084>См. также: ifx_pconnect()
      и ifx_close(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25085><FONT face=Tahoma
      size=2 DESIGNTIMESP=25086>ifx_pconnect </FONT></P>
      <P DESIGNTIMESP=25087><FONT face=Tahoma size=2 DESIGNTIMESP=25088>Создание устойчивого
      подключения к серверу БД Informix </FONT></P>
      <P DESIGNTIMESP=25089><FONT face=Tahoma size=2 DESIGNTIMESP=25090>int ifx_pconnect ([string
      database [, string userid [, string password]]]) </FONT></P>
      <P DESIGNTIMESP=25091><FONT face=Tahoma size=2 DESIGNTIMESP=25092>Возвращается дескриптор
      подключения или FALSE — при ошибке. ifx_pconnect() действует подобно
      ifx_connect() с двумя отличиями. </FONT></P>
      <P DESIGNTIMESP=25093><FONT face=Tahoma size=2 DESIGNTIMESP=25094>Перед подключением
      функция пытается проверить, имеется ли уже открытое (устойчивое)
      подключение с параметрами (БД, пользователь, пароль), аналогичными
      указанным. Если такое подключение обнаруживается, то возвращается его
      идентификатор вместо создания нового подключения. При завершении сценария
      подключение не закрывается, а остается действительным для дальнейшего
      использования. (Функция ifx_close() не может закрыть подключения,
      созданные с помощью ifx_pconnect().) </FONT></P>
      <P DESIGNTIMESP=25095><FONT face=Tahoma size=2 DESIGNTIMESP=25096>См. также ifx_connect().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25097><FONT face=Tahoma size=2 DESIGNTIMESP=25098>ifx_close
      </FONT></P>
      <P DESIGNTIMESP=25099><FONT face=Tahoma size=2 DESIGNTIMESP=25100>Закрытие подключения к
      Informix </FONT></P>
      <P DESIGNTIMESP=25101><FONT face=Tahoma size=2 DESIGNTIMESP=25102>int ifx_close ([int
      linkjdentifier]) Всегда возвращает TRUE. </FONT></P>
      <P DESIGNTIMESP=25103><FONT face=Tahoma size=2 DESIGNTIMESP=25104>Идентификатор
      закрываемого подключения указывается в аргументе; если сто не указывать,
      то закрывается последнее открытое данным сценарием подключение.
</FONT></P>
      <P DESIGNTIMESP=25105><FONT face=Tahoma size=2 DESIGNTIMESP=25106>Фактически использование
      данной функции не является обязательным, так как РНР автоматически
      закрывает все незакрытые неустойчивые подключения при завершении сценария.
      </FONT></P>
      <P DESIGNTIMESP=25107><FONT face=Tahoma size=2 DESIGNTIMESP=25108>Устойчивые подключения,
      созданные функцией ifx_pconnect(), не закрываются. </FONT></P>
      <P class=list DESIGNTIMESP=25109><FONT face=Tahoma size=2 DESIGNTIMESP=25110>$corn_id =
      ifx_connect<br designtimesp=25111>("mydb@ol_srv". "itsme".
      "mypassword"). <br designtimesp=25112>ifx__close($conn_id): </FONT>
      <P DESIGNTIMESP=25113><FONT face=Tahoma size=2 DESIGNTIMESP=25114>См. также: ifx_connect()
      и ifx_pconnect(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25115><FONT face=Tahoma size=2 DESIGNTIMESP=25116>ifx_query
      </FONT></P>
      <P DESIGNTIMESP=25117><FONT face=Tahoma size=2 DESIGNTIMESP=25118>Выполнение запроса к БД
      Informix </FONT></P>
      <P DESIGNTIMESP=25119><FONT face=Tahoma size=2 DESIGNTIMESP=25120>int ifx_query (string
      query [, int linkjdentifier [, int cursorjtype [, mixed blobidarray]]])
      </FONT></P>
      <P DESIGNTIMESP=25121><FONT face=Tahoma size=2 DESIGNTIMESP=25122>Посылает запрос текущей
      БД, активной для текущего (последнего открытого) подключения или
      указанного в linkjidentifier. Если подключений не имеется, то косвенно
      вызывается функция ifx_connect() с параметрами по умолчанию. </FONT></P>
      <P DESIGNTIMESP=25123><FONT face=Tahoma size=2 DESIGNTIMESP=25124>Возвращает дескриптор
      набора возвращенных записей или FALSE -при ошибке. </FONT></P>
      <P DESIGNTIMESP=25125><FONT face=Tahoma size=2 DESIGNTIMESP=25126>Для запросов SELECT
      необязательным аргументом cursorjtype можно указать специальный тип
      курсора (значение формируется бито-I вой маской из констант IFX_SCROLL,
      IFXjHOLD). </FONT></P>
      <P DESIGNTIMESP=25127><FONT face=Tahoma size=2 DESIGNTIMESP=25128>В зависимости от тина
      запроса число возвращенных (измененных) записей (приблизительное или
      фактическое) можно выяснить функцией ifx_affected_rows(). </FONT></P>
      <P DESIGNTIMESP=25129><FONT face=Tahoma size=2 DESIGNTIMESP=25130>Если в запросе передаются
      поля BLOB (BYTE или TEXT), то в аргументе (массиве) blobidarray
      указываются дескрипторы (blob ids), а в запросе вместо их значений
      ставится знак «?&gt;&gt;. </FONT></P>
      <P DESIGNTIMESP=25131><FONT face=Tahoma size=2 DESIGNTIMESP=25132>Если содержимое полей
      TEXT (или BYTE) допускает, можно использовать функции ifx_textasvarchar(l)
      и ifx_byteasvarchar(l), что позволяет работать с этими полями (получать их
      содержимое), как если бы они были обычными (но длинными) нолями VARCHAR,
      не заботясь о blob дескрипторах. В противном случае придется использовать
      дополнительные функции. </FONT></P>
      <P DESIGNTIMESP=25133><FONT face=Tahoma size=2 DESIGNTIMESP=25134>В ситуации
      ifx_textasvarchar(0) и ifx_byteasvarchar(0) (по умолчанию) запросы выборки
      возвращают для полей BLOB их дескрипторы (целые числа). Их содержимое
      можно получить специальными функциями. </FONT></P>
      <P class=list DESIGNTIMESP=25135><FONT face=Tahoma size=2 DESIGNTIMESP=25136>// Пример 1.
      распечатать всю таблицу <br designtimesp=25137>"orders" в виде html
      ifx_textasvarchar(l).<br designtimesp=25138>// use "text mode" for blobs
      $res_id = <br designtimesp=25139>ifx_query("select * from orders".
      Sconnjid).<br designtimesp=25140>if (! Sresjid) { pnntf( <br
       designtimesp=25141>"Can't select orders :
      lsn&lt;br&gt;ls&lt;br&gt;\n"<br designtimesp=25142>. ifx_error()).
      ifx_errormsg(). <br designtimesp=25143>dieT } ifx htmltbl_result<br
       designtimesp=25144>($res_id "border=\"l\""); <br
       designtimesp=25145>1Т~х_(тре_г_) <br designtimesp=25146>// Пример 2
      добавление записей<br designtimesp=25147>в таблицу "catalog" <br
       designtimesp=25148>// создать blob поля <br
       designtimesp=25149>$te&lt;tid - ifx_create_blcb(0, 0. <br
       designtimesp=25150>"Text column in memory"):<br
       designtimesp=25151>Sbyteid = ifxj:reate__blob<br
       designtimesp=25152>(l. 0. "Byte column in memory"): <br
       designtimesp=25153>// внести blob id в массив $blobidarray[]<br
       designtimesp=25154>= Stextid. $blobidarray[] = $byteid, <br
       designtimesp=25155>// выполнить запрос <br designtimesp=25156>$query =
      "insert into catalog <br designtimesp=25157>(stockjium, manu_code. " <br
       designtimesp=25158>. "cat_descr. cat_pictun;) val ues<br
       designtimesp=25159>(1.' HRO'.7. ?)": <br designtimesp=25160>$res_id =
      ifx_query($query. <br designtimesp=25161>$conn_id. Sblobidarray). <br
       designtimesp=25162>if (! $res_id)<br designtimesp=25163>{ .. error . .
      } <br designtimesp=25164>i fx_free_result($ resj d):</FONT></P>
      <P DESIGNTIMESP=25165><FONT face=Tahoma size=2 DESIGNTIMESP=25166>См. также ifx_connect().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25167><FONT face=Tahoma
      size=2 DESIGNTIMESP=25168>ifx_prepare </FONT></P>
      <P DESIGNTIMESP=25169><FONT face=Tahoma size=2 DESIGNTIMESP=25170>Подготовка SQL-запроса
      для последующего выполнения </FONT></P>
      <P DESIGNTIMESP=25171><FONT face=Tahoma size=2 DESIGNTIMESP=25172>int lfx_prepare (string
      query, int conrMd [, Int cursor_def. mixed blobidarray]) </FONT></P>
      <P DESIGNTIMESP=25173><FONT face=Tahoma size=2 DESIGNTIMESP=25174>Возвращает дескриптор,
      используемый в функции ifx_do(). Для запросов SELECT необязательным
      аргументом cursor_type можно указать тип курсора (значение формируется
      битовой маской из констант IFXJCROLU IFXJHOLD). </FONT></P>
      <P DESIGNTIMESP=25175><FONT face=Tahoma size=2 DESIGNTIMESP=25176>Если в запросе передаются
      поля BLOB (BYTE или TEXT), то в аргументе (массиве) blobidarray
      указываются дескрипторы (blob ids), а в запросе вместо их значении
      ставится знак «?&gt;&gt;. </FONT></P>
      <P DESIGNTIMESP=25177><FONT face=Tahoma size=2 DESIGNTIMESP=25178>Если содержимое полей
      TEXT (или BYTE) допускает, можно использовать функции ifx_textasvarchar(l)
      и ifx_byteasvarchar(l), что позволяет работать с этими полями (получать их
      содержимое), как если бы они были обычными (но длинными) полями VARCHAR,
      не заботясь о blob дескрипторах. В противном случае придется использовать
      дополнительные функции. </FONT></P>
      <P DESIGNTIMESP=25179><FONT face=Tahoma size=2 DESIGNTIMESP=25180>Подготовленные запросы
      позволяют сперва вычислить число подходящих запросу записей функцией
      ifx_affected_rows(). </FONT></P>
      <P DESIGNTIMESP=25181><FONT face=Tahoma size=2 DESIGNTIMESP=25182>См. также ifx_do().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25183><FONT face=Tahoma size=2 DESIGNTIMESP=25184>ifx_do
      </FONT></P>
      <P DESIGNTIMESP=25185><FONT face=Tahoma size=2 DESIGNTIMESP=25186>Выполнение
      подготовленного запроса </FONT></P>
      <P DESIGNTIMESP=25187><FONT face=Tahoma size=2 DESIGNTIMESP=25188>int ifx_do (int
      result_id) </FONT></P>
      <P DESIGNTIMESP=25189><FONT face=Tahoma size=2 DESIGNTIMESP=25190>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=25191><FONT face=Tahoma size=2 DESIGNTIMESP=25192>См. также: ifx_prepare(),
      ifx_affected_rows(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25193><FONT face=Tahoma size=2 DESIGNTIMESP=25194>ifx_error
      </FONT></P>
      <P DESIGNTIMESP=25195><FONT face=Tahoma size=2 DESIGNTIMESP=25196>Получение кода ошибки
      последней операции Informix string ifx_error(void); </FONT></P>
      <P DESIGNTIMESP=25197><FONT face=Tahoma size=2 DESIGNTIMESP=25198>Возвращаемая строка
      описания ошибки форматируется следующим </FONT></P>
      <P DESIGNTIMESP=25199><FONT face=Tahoma size=2 DESIGNTIMESP=25200>образом: </FONT></P>
      <P DESIGNTIMESP=25201><FONT face=Tahoma size=2 DESIGNTIMESP=25202>х [SQLSTATE = (две цифры)
      (три цифры) SQLCODE=cccc], </FONT></P>
      <P DESIGNTIMESP=25203><FONT face=Tahoma size=2 DESIGNTIMESP=25204>где х — один из символов,
      означающих: </FONT></P>
      <ul designtimesp=25205>
        <li designtimesp=25206><FONT face=Tahoma size=2 DESIGNTIMESP=25207>пробел — без ошибки;
        </FONT>
        <li designtimesp=25208><FONT face=Tahoma size=2 DESIGNTIMESP=25209>Е — ошибка; </FONT>
        <li designtimesp=25210><FONT face=Tahoma size=2 DESIGNTIMESP=25211>N — больше нет данных;
        </FONT>
        <li designtimesp=25212><FONT face=Tahoma size=2 DESIGNTIMESP=25213>W — предупреждение;
        </FONT>
        <li designtimesp=25214><FONT face=Tahoma size=2 DESIGNTIMESP=25215>? — неопределенное
        сообщение. </FONT></LI></UL>
      <P DESIGNTIMESP=25216><FONT face=Tahoma size=2 DESIGNTIMESP=25217>Если х-символ не пробел,
      то SQLSTATE и SQLCODE описывают детали ошибки (см. документацию БД).
      </FONT></P>
      <P DESIGNTIMESP=25218><FONT face=Tahoma size=2 DESIGNTIMESP=25219>См. также ifx_errormsg().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25220><FONT face=Tahoma
      size=2 DESIGNTIMESP=25221>ifx_errormsg </FONT></P>
      <P DESIGNTIMESP=25222><FONT face=Tahoma size=2 DESIGNTIMESP=25223>Получение описа, мя
      ошибки последней операции </FONT></P>
      <P DESIGNTIMESP=25224><FONT face=Tahoma size=2 DESIGNTIMESP=25225>string ifx_errormsg ([int
      errorcode]) </FONT></P>
      <P DESIGNTIMESP=25226><FONT face=Tahoma size=2 DESIGNTIMESP=25227>Если в аргументе указать
      код ошибки, то будет получено ее описание. </FONT></P>
      <P DESIGNTIMESP=25228><FONT face=Tahoma size=2 DESIGNTIMESP=25229>printf("&#163;s\ri&lt;br&gt;",
      ifx_errormsg(-201)); См. также ifx_error(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25230><FONT face=Tahoma
      size=2 DESIGNTIMESP=25231>ifx_affected_rows </FONT></P>
      <P DESIGNTIMESP=25232><FONT face=Tahoma size=2 DESIGNTIMESP=25233>Получение числа
      измененных или возвращенных записей </FONT></P>
      <P DESIGNTIMESP=25234><FONT face=Tahoma size=2 DESIGNTIMESP=25235>int ifx_affected_rows
      (int resulted) </FONT></P>
      <P DESIGNTIMESP=25236><FONT face=Tahoma size=2 DESIGNTIMESP=25237>В аргументе указывается
      дескриптор набора записей, возвращенный функцией ifx_query() или
      ifx_prepare(). </FONT></P>
      <P DESIGNTIMESP=25238><FONT face=Tahoma size=2 DESIGNTIMESP=25239>Для запросов типа INSERT,
      UPDATE и DELETE возвращается число фактически добавленных, измененных,
      удаленных записей (зна- </FONT></P>
      <P DESIGNTIMESP=25240><FONT face=Tahoma size=2 DESIGNTIMESP=25241>чение sqlerrd[2]). Для
      запросов выборки SELECT это предполагаемое число (sqlerrd[0]), которое не
      всегда верно. </FONT></P>
      <P DESIGNTIMESP=25242><FONT face=Tahoma size=2 DESIGNTIMESP=25243> </FONT></P>
      <P DESIGNTIMESP=25244><FONT face=Tahoma size=2 DESIGNTIMESP=25245>См. также ifx_num_rows().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25246><FONT face=Tahoma
      size=2 DESIGNTIMESP=25247>ifx_getsqlca </FONT></P>
      <P DESIGNTIMESP=25248><FONT face=Tahoma size=2 DESIGNTIMESP=25249>Получение параметров
      запроса sqlca.sqlerrd[0..5] array ifx_getsq"lca (Int resu"lt_id)
      </FONT></P>
      <P DESIGNTIMESP=25250><FONT face=Tahoma size=2 DESIGNTIMESP=25251>В аргументе указывается
      дескриптор набора записей, возвращенный функцией ifx_query() или
      ifx_prepare(). Возвращается ассоциативный массив, содержащий
      дополнительные результаты выполнения запроса сервером sqlerrd() ...
      sqlerrdS. Альтернативно ту же операцию можно выполнить запросом "SELECT
      dbinfo( 'sqlca.sqlerrdx')". </FONT></P>
      <P DESIGNTIMESP=25252><FONT face=Tahoma size=2 DESIGNTIMESP=25253>// предполагается, что
      первое поле таблицы tbl последовательное Sqid = ifx_query("INSERT INTO tbl
      </FONT></P>
      <P DESIGNTIMESP=25254><FONT face=Tahoma size=2 DESIGNTIMESP=25255>VALUES (0. '2nd column',
      'another column') ". Sconmd); if (! $qid) { ... error ... } Ssqlca =
      ifx_getsqlca (Sqid): echo "Последовательное значение добавленной записи: "
      . </FONT></P>
      <P class=list DESIGNTIMESP=25256><FONT face=Tahoma
      size=2 DESIGNTIMESP=25257>$sqlca["sqlerrdl"]. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25258><FONT face=Tahoma
      size=2 DESIGNTIMESP=25259>ifx_fetch_row </FONT></P>
      <P DESIGNTIMESP=25260><FONT face=Tahoma size=2 DESIGNTIMESP=25261>Занесение записи в массив
      </FONT></P>
      <P DESIGNTIMESP=25262><FONT face=Tahoma size=2 DESIGNTIMESP=25263>array ifx_fetch_row (int
      result_id [, mixed position]) </FONT></P>
      <P DESIGNTIMESP=25264><FONT face=Tahoma size=2 DESIGNTIMESP=25265>Возвращает в
      ассоциативном массиве (индексами служат имена полей) запись из результата
      запроса (возвращенного функциями ifx_query() или ifx_prepare()) или FALSE,
      если записей больше не имеется. </FONT></P>
      <P DESIGNTIMESP=25266><FONT face=Tahoma size=2 DESIGNTIMESP=25267>Для полей BLOB
      возвращаются их цифровые идентификаторы, которые можно использовать в
      функции ifx_get_blob() (если, конечно, не использовались
      ifx_textasvarchar(l) или ifx_byteasvarchar(D). </FONT></P>
      <P DESIGNTIMESP=25268><FONT face=Tahoma size=2 DESIGNTIMESP=25269>Необязательным аргументом
      position для SCROLL курсоров можно указать, какую запись следует
      возвратить: "NEXT", "PREVIOUS", "CURRENT", "FIRST", "LAST" или
      «абсолютный» номер записи. </FONT></P>
      <P DESIGNTIMESP=25270><FONT face=Tahoma size=2 DESIGNTIMESP=25271>Последующие вызовы (по
      умолчанию возвращают следующие записи). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25272><FONT face=Tahoma
      size=2 DESIGNTIMESP=25273>ifx_htmltbl_result </FONT></P>
      <P DESIGNTIMESP=25274><FONT face=Tahoma size=2 DESIGNTIMESP=25275>Вывод результатов запроса
      в таблице HTML </FONT></P>
      <P DESIGNTIMESP=25276><FONT face=Tahoma size=2 DESIGNTIMESP=25277>int ifx_htmltbl_result
      (int resultjid [, string html_table_options]) </FONT></P>
      <P DESIGNTIMESP=25278><FONT face=Tahoma size=2 DESIGNTIMESP=25279>Возвращает число
      выведенных записей или FALSE — при ошибке. Во втором аргументе можно
      указать атрибуты тега &lt;table&gt;. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25280><FONT face=Tahoma size=2 DESIGNTIMESP=25281>ifx_
      fieldtypes </FONT></P>
      <P DESIGNTIMESP=25282><FONT face=Tahoma size=2 DESIGNTIMESP=25283>Получение списка полей
      набора записей array ifx_fieldtypes (int resu1t_id) </FONT></P>
      <P DESIGNTIMESP=25284><FONT face=Tahoma size=2 DESIGNTIMESP=25285>Возвращает ассоциативный
      массив (имена полей являются индексами, а SQL-типы полей — значениями) или
      FALSE — при ошибке. В аргументе указывается результат запроса. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25286><FONT face=Tahoma size=2 DESIGNTIMESP=25287>ifx_
      fieldproperties </FONT></P>
      <P DESIGNTIMESP=25288><FONT face=Tahoma size=2 DESIGNTIMESP=25289>Получение списка свойств
      полей </FONT></P>
      <P DESIGNTIMESP=25290><FONT face=Tahoma size=2 DESIGNTIMESP=25291>array ifx_fieldproperties
      (Int result_id) </FONT></P>
      <P DESIGNTIMESP=25292><FONT face=Tahoma size=2 DESIGNTIMESP=25293>Возвращает ассоциативный
      массив (имена нолей являются индексами, а SQL-свойства полей — значениями)
      или FALSE — при ошибке. В аргументе указывается результат запроса.
      </FONT></P>
      <P DESIGNTIMESP=25294><FONT face=Tahoma size=2 DESIGNTIMESP=25295>Свойства полей кодируются
      в виде: "SQLTYPE;length;precision;scale: ISNULLABLE", где SQLTYPE - тип
      поля Informix (например, "SQLVCHAR"), a ISNULLABLE = "Y" или "N".
      </FONT></P>
      <P DESIGNTIMESP=25296><FONT face=Tahoma size=2 DESIGNTIMESP=25297>Получение числа полей,
      возвращаемых запросом </FONT></P>
      <P DESIGNTIMESP=25298><FONT face=Tahoma size=2 DESIGNTIMESP=25299>int ifx_num_fields (int
      resultjid) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25300><FONT face=Tahoma
      size=2 DESIGNTIMESP=25301>ifx_num_rows </FONT></P>
      <P DESIGNTIMESP=25302><FONT face=Tahoma size=2 DESIGNTIMESP=25303>Получение числа записей,
      уже полученных из результата запроса </FONT></P>
      <P DESIGNTIMESP=25304><FONT face=Tahoma size=2 DESIGNTIMESP=25305>Int ifx_nura_rows (int
      result_id) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25306><FONT face=Tahoma size=2 DESIGNTIMESP=25307>ifx_
      free_result </FONT></P>
      <P DESIGNTIMESP=25308><FONT face=Tahoma size=2 DESIGNTIMESP=25309>Уничтожение результата
      запроса </FONT></P>
      <P DESIGNTIMESP=25310><FONT face=Tahoma size=2 DESIGNTIMESP=25311>int ifx_free_resu!t (int
      result_id) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25312><FONT face=Tahoma
      size=2 DESIGNTIMESP=25313>ifx_create_char </FONT></P>
      <P DESIGNTIMESP=25314><FONT face=Tahoma size=2 DESIGNTIMESP=25315>Создание char-объекта
      </FONT></P>
      <P DESIGNTIMESP=25316><FONT face=Tahoma size=2 DESIGNTIMESP=25317>int ifx_create_char
      (string param) </FONT></P>
      <P DESIGNTIMESP=25318><FONT face=Tahoma size=2 DESIGNTIMESP=25319>В аргументе указывается
      содержимое объекта. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25320><FONT face=Tahoma
      size=2 DESIGNTIMESP=25321>ifx_free_char </FONT></P>
      <P DESIGNTIMESP=25322><FONT face=Tahoma size=2 DESIGNTIMESP=25323>Уничтожение char-объекта
      </FONT></P>
      <P DESIGNTIMESP=25324><FONT face=Tahoma size=2 DESIGNTIMESP=25325>int ifx_free_char (int
      bid) </FONT></P>
      <P DESIGNTIMESP=25326><FONT face=Tahoma size=2 DESIGNTIMESP=25327>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25328><FONT face=Tahoma
      size=2 DESIGNTIMESP=25329>ifx_update_char </FONT></P>
      <P DESIGNTIMESP=25330><FONT face=Tahoma size=2 DESIGNTIMESP=25331>Изменение содержимого
      char-объекта </FONT></P>
      <P DESIGNTIMESP=25332><FONT face=Tahoma size=2 DESIGNTIMESP=25333>int ifx_update_char (int
      bid, string content) Возвращает TRUE или FALSE — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25334><FONT face=Tahoma
      size=2 DESIGNTIMESP=25335>ifx_get_char </FONT></P>
      <P DESIGNTIMESP=25336><FONT face=Tahoma size=2 DESIGNTIMESP=25337>Получение содержимого
      char-объекта int ifx_get_char (int bid) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25338><FONT face=Tahoma
      size=2 DESIGNTIMESP=25339>ifx_create_blob </FONT></P>
      <P DESIGNTIMESP=25340><FONT face=Tahoma size=2 DESIGNTIMESP=25341>Создание blob-объекта
      </FONT></P>
      <P DESIGNTIMESP=25342><FONT face=Tahoma size=2 DESIGNTIMESP=25343>int ifx_create_btob (int
      type, int mode, string param) </FONT></P>
      <P DESIGNTIMESP=25344><FONT face=Tahoma size=2 DESIGNTIMESP=25345>Аргумент type указывает
      тип: 1 = TEXT, 0 = BYTE; </FONT></P>
      <P DESIGNTIMESP=25346><FONT face=Tahoma size=2 DESIGNTIMESP=25347>mode: 0 — что содержимое
      объекта будет сохраняться в памяти, 1 -в файле;param: если mode = 0, это
      содержимое объекта, а если mode = 1 — это дескриптор файла данных.
      </FONT></P>
      <P DESIGNTIMESP=25348><FONT face=Tahoma size=2 DESIGNTIMESP=25349>Возвращает идентификатор
      созданного объекта или FALSE — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25350><FONT face=Tahoma
      size=2 DESIGNTIMESP=25351>ifx_copy_blob </FONT></P>
      <P DESIGNTIMESP=25352><FONT face=Tahoma size=2 DESIGNTIMESP=25353>Клонирование blob-объекта
      </FONT></P>
      <P DESIGNTIMESP=25354><FONT face=Tahoma size=2 DESIGNTIMESP=25355>int ifx_copy_blob (int
      bid) </FONT></P>
      <P DESIGNTIMESP=25356><FONT face=Tahoma size=2 DESIGNTIMESP=25357>Возвращает идентификатор
      созданного объекта или FALSE — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25358><FONT face=Tahoma
      size=2 DESIGNTIMESP=25359>ifx_free_blob </FONT></P>
      <P DESIGNTIMESP=25360><FONT face=Tahoma size=2 DESIGNTIMESP=25361>Закрытие blob-объекта
      </FONT></P>
      <P DESIGNTIMESP=25362><FONT face=Tahoma size=2 DESIGNTIMESP=25363>int ifx_free_blob (int
      bid) </FONT></P>
      <P DESIGNTIMESP=25364><FONT face=Tahoma size=2 DESIGNTIMESP=25365>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25366><FONT face=Tahoma
      size=2 DESIGNTIMESP=25367>ifx_get_blob </FONT></P>
      <P DESIGNTIMESP=25368><FONT face=Tahoma size=2 DESIGNTIMESP=25369>Получение содержимого
      blob-объекта </FONT></P>
      <P DESIGNTIMESP=25370><FONT face=Tahoma size=2 DESIGNTIMESP=25371>int ifx_get_blob (int
      bid) </FONT></P>
      <P DESIGNTIMESP=25372><FONT face=Tahoma size=2 DESIGNTIMESP=25373>В аргументе указывается
      идентификатор, полученный запросом. </FONT></P>
      <P DESIGNTIMESP=25374><FONT face=Tahoma size=2 DESIGNTIMESP=25375>Если установлено
      ifx_blobinfile(l), возвращается имя созданного файла, в котором сохранено
      содержимое поля. Ответственность за удаление этого временного файла
      возлагается на вас. Размещение его зависит от переменной окружения blobdir
      (по умолчанию = ".", то есть в текущем каталоге); файлы имеют префикс btb.
      Для облегчения очистки используйте, например, putenv("bдobdir=tmpblob");.
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25376><FONT face=Tahoma
      size=2 DESIGNTIMESP=25377>ifx_update_blob </FONT></P>
      <P DESIGNTIMESP=25378><FONT face=Tahoma size=2 DESIGNTIMESP=25379>Изменение содержимого
      объекта blob </FONT></P>
      <P DESIGNTIMESP=25380><FONT face=Tahoma size=2 DESIGNTIMESP=25381>int ifx_update_blob (int
      bid, string content) </FONT></P>
      <P DESIGNTIMESP=25382><FONT face=Tahoma size=2 DESIGNTIMESP=25383>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25384><FONT face=Tahoma size=2 DESIGNTIMESP=25385>ifx_
      blobinfile_mode </FONT></P>
      <P DESIGNTIMESP=25386><FONT face=Tahoma size=2 DESIGNTIMESP=25387>Установка режима
      получения содержимого объектов blob </FONT></P>
      <P DESIGNTIMESP=25388><FONT face=Tahoma size=2 DESIGNTIMESP=25389>Если указывается значение
      0, то содержимое будет сохраняться в памяти, а если 1, то в файле.
      Умолчание также устанавливается в файле конфигурации. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25390><FONT face=Tahoma
      size=2 DESIGNTIMESP=25391>ifx_extasvarchar </FONT></P>
      <P DESIGNTIMESP=25392><FONT face=Tahoma size=2 DESIGNTIMESP=25393>Установка режима
      получения полей TEXT </FONT></P>
      <P DESIGNTIMESP=25394><FONT face=Tahoma size=2 DESIGNTIMESP=25395>void ifx_textasvarchar
      (int mode) </FONT></P>
      <P DESIGNTIMESP=25396><FONT face=Tahoma size=2 DESIGNTIMESP=25397>Если указывается значение
      0, то для полей TEXT запросом будет возвращаться их идентификатор, а если
      1, то непосредственно их содержимое. Значение по умолчанию также
      устанавливается в файле конфигурации. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25398><FONT face=Tahoma
      size=2 DESIGNTIMESP=25399>ifx_byteasvarchar </FONT></P>
      <P DESIGNTIMESP=25400><FONT face=Tahoma size=2 DESIGNTIMESP=25401>Установка режима
      получения полей BYTE void ifx_byteasvarchar (int mode) </FONT></P>
      <P DESIGNTIMESP=25402><FONT face=Tahoma size=2 DESIGNTIMESP=25403>Если указывается значение
      0, то для полей BYTE запросом будет возвращаться их идентификатор, а если
      1, то непосредственно их содержимое. Умолчание также устанавливается в
      файле конфигурации. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25404><FONT face=Tahoma
      size=2 DESIGNTIMESP=25405>ifx_nullformat </FONT></P>
      <P DESIGNTIMESP=25406><FONT face=Tahoma size=2 DESIGNTIMESP=25407>Установка формата
      значений NULL void ifx_nullformat (int mode) </FONT></P>
      <P DESIGNTIMESP=25408><FONT face=Tahoma size=2 DESIGNTIMESP=25409>Устанавливает, какое
      значение будет возвращаться запросом для значений NULL. Если указывается
      значение mode "О", будет возвращаться пустая строка "", а если 1, то
      значение NULL. Умолчание также устанавливается в файле конфигурации.
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25410><FONT face=Tahoma
      size=2 DESIGNTIMESP=25411>ifxus_create_slob </FONT></P>
      <P DESIGNTIMESP=25412><FONT face=Tahoma size=2 DESIGNTIMESP=25413>Создание объекта slob и
      его открытие </FONT></P>
      <P DESIGNTIMESP=25414><FONT face=Tahoma size=2 DESIGNTIMESP=25415>int ifxus_create_slob

      (int mode) </FONT></P>
      <P DESIGNTIMESP=25416><FONT face=Tahoma size=2 DESIGNTIMESP=25417>Аргументом можно указать
      режим открытия (возможны битовые комбинации): 1 = LO_RDONLY, 2 =
      LOJWRONLY, 4 - LO_APPEND, 8 = LO_RDWR, 16 = LO_BUFFER, 32 = LO_NOBUFFER.
      Также возможно использовать именованные константы IFX_LO_RDONLY, IFX_LO_
      WRONLY и т. и. Возвращает идентификатор созданного объекта или FALSE — при
      ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25418><FONT face=Tahoma
      size=2 DESIGNTIMESP=25419>ifxus_free_slob </FONT></P>
      <P DESIGNTIMESP=25420><FONT face=Tahoma size=2 DESIGNTIMESP=25421>Удаление объекта slob
      </FONT></P>
      <P DESIGNTIMESP=25422><FONT face=Tahoma size=2 DESIGNTIMESP=25423>int ifxus_free_slob (int
      bid) Возвращает TRUE или FALSE — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25424><FONT face=Tahoma
      size=2 DESIGNTIMESP=25425>ifxus_close_slob </FONT></P>
      <P DESIGNTIMESP=25426><FONT face=Tahoma size=2 DESIGNTIMESP=25427>Закрытие slob-объекта
      </FONT></P>
      <P DESIGNTIMESP=25428><FONT face=Tahoma size=2 DESIGNTIMESP=25429>int ifxus_c"lose_slob
      (int bid)</FONT></P>
      <P DESIGNTIMESP=25430><FONT face=Tahoma size=2 DESIGNTIMESP=25431>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25432><FONT face=Tahoma
      size=2 DESIGNTIMESP=25433>ifxus_open_slob</FONT></P>
      <P DESIGNTIMESP=25434><FONT face=Tahoma size=2 DESIGNTIMESP=25435>Открытие объекта slob
      </FONT></P>
      <P DESIGNTIMESP=25436><FONT face=Tahoma size=2 DESIGNTIMESP=25437>int ifxus_open_slob (long
      bid, int mode) </FONT></P>
      <P DESIGNTIMESP=25438><FONT face=Tahoma size=2 DESIGNTIMESP=25439>Аргументом mode можно
      указать режим открытия (возможны битовые комбинации): 1 = LO_RDONLY, 2 =
      LO_WRONLY, 4 = LO_APPEND, 8 = LO_RDWR, 16 = LO_BUFFER, 32 = LO_NOBUFFER.
      Также возможно использовать именованные константы IFX_LO_RDONLY, IFX_LO_
      WRONLY и т. п. Возвращает идентификатор созданного объекта или FALSE — при
      ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25440><FONT face=Tahoma
      size=2 DESIGNTIMESP=25441>ifxus_tell_slob </FONT></P>
      <P DESIGNTIMESP=25442><FONT face=Tahoma size=2 DESIGNTIMESP=25443>Получение позиции курсора
      </FONT></P>
      <P DESIGNTIMESP=25444><FONT face=Tahoma size=2 DESIGNTIMESP=25445>int ifxus_tell_slob (long
      bid) </FONT></P>
      <P DESIGNTIMESP=25446><FONT face=Tahoma size=2 DESIGNTIMESP=25447>Возвращает текущую
      позицию (чтения/записи) открытого slob-объекта bid или FALSE — при ошибке.
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25448><FONT face=Tahoma
      size=2 DESIGNTIMESP=25449>ifxus_seek_slob </FONT></P>
      <P DESIGNTIMESP=25450><FONT face=Tahoma size=2 DESIGNTIMESP=25451>Установка позиции курсора
      </FONT></P>
      <P DESIGNTIMESP=25452><FONT face=Tahoma size=2 DESIGNTIMESP=25453>int ifxus_seek_blob (long
      bid, int mode, long offset) </FONT></P>
      <P DESIGNTIMESP=25454><FONT face=Tahoma size=2 DESIGNTIMESP=25455>Устанавливает позицию
      (чтения/записи) offset открытого slob-объекта bid в байтах. Возвращает
      позицию или FALSE — при ошибке. </FONT></P>
      <P DESIGNTIMESP=25456><FONT face=Tahoma size=2 DESIGNTIMESP=25457>В аргументе mode
      указывается, от какого места отчитывается смещение: 0=LO_SEEKlSET (от
      начала), 1-LO_SEEK_CUR (от текущей позиции), 2=LO_SEEK_END (от конца).
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25458><FONT face=Tahoma
      size=2 DESIGNTIMESP=25459>ifxus_read_slob </FONT></P>
      <P DESIGNTIMESP=25460><FONT face=Tahoma size=2 DESIGNTIMESP=25461>Чтение данных из объекта
      slob </FONT></P>
      <P DESIGNTIMESP=25462><FONT face=Tahoma size=2 DESIGNTIMESP=25463>string ifxus_read_slob
      (long bid, long nbytes) </FONT></P>
      <P DESIGNTIMESP=25464><FONT face=Tahoma size=2 DESIGNTIMESP=25465>Возвращает прочитанную
      строку данных размером nbytes байт из slob-объекта bid или FALSE — при
      ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25466><FONT face=Tahoma
      size=2 DESIGNTIMESP=25467>ifxus_write_slob </FONT></P>
      <P DESIGNTIMESP=25468><FONT face=Tahoma size=2 DESIGNTIMESP=25469>Запись данных в объект
      slob </FONT></P>
      <P DESIGNTIMESP=25470><FONT face=Tahoma size=2 DESIGNTIMESP=25471>int ifxus_write_slob
      (long bid, string content) </FONT></P>
      <P DESIGNTIMESP=25472><FONT face=Tahoma size=2 DESIGNTIMESP=25473>Записывает строку данных
      content в slob-объект bid. Возвращает число записанных байт пли FALSE —
      при ошибке. </FONT></P>
      <P class=Title_2 DESIGNTIMESP=25474><a name=8
       designtimesp=25475></A><FONT face=Tahoma size=2 DESIGNTIMESP=25476>Ingres II</FONT></P>
      <P DESIGNTIMESP=25477><FONT face=Tahoma size=2 DESIGNTIMESP=25478>Для использования этих
      функций необходимо скомпилировать РНР </FONT></P>
      <P DESIGNTIMESP=25479><FONT face=Tahoma size=2 DESIGNTIMESP=25480>с поддержкой Ingres,
      используя параметр —with-ingres. Для этого необходима библиотека Open API
      и заголовочные файлы, включенные в Ingres II. Если переменная окружения
      II_SYSTEM не установлена корректно, можно использовать параметр —
      with-ingres=DIR, указывая 1 каталог размещения Ingres. </FONT></P>
      <P DESIGNTIMESP=25481><FONT face=Tahoma size=2 DESIGNTIMESP=25482>Если при использовании
      РНР-расширения web-сервер Apache ие запускается и сообщает: «PHP Fatal
      error: Unable to start ingresjii module in Unknown on line 0»,
      удостоверьтесь, что переменная окружения II_SYSTEM установлена корректно.
      Должно помочь добавление «export II_SYSTEM="/horae/ingres/II» в сценарий,
      запускающий Apache перед строкой запуска httpd. </FONT></P>
      <P DESIGNTIMESP=25483><FONT face=Tahoma size=2 DESIGNTIMESP=25484>Ingres не допускает
      конкурентные запросы/транзакции для одного подключения. Поэтому результат
      запроса должен обрабатываться до выполнения следующего запроса, а
      транзакция совершаться (или отменяться) до начала следующей транзакции.
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25485><FONT face=Tahoma
      size=2 DESIGNTIMESP=25486>ingres_connect </FONT></P>
      <P DESIGNTIMESP=25487><FONT face=Tahoma size=2 DESIGNTIMESP=25488>Подключение к серверу
      Ingres II </FONT></P>
      <P DESIGNTIMESP=25489><FONT face=Tahoma size=2 DESIGNTIMESP=25490>resource ingres_connect
      ([string database [, string username [. string password]]]) </FONT></P>
      <P DESIGNTIMESP=25491><FONT face=Tahoma size=2 DESIGNTIMESP=25492>Возвращает дескриптор
      подключения Ingres II или FALSE — при ошибке. </FONT></P>
      <P DESIGNTIMESP=25493><FONT face=Tahoma size=2 DESIGNTIMESP=25494>Аргумент database имеет
      синтаксис: [node_id: :]dbname[/svr_class]. Для неуказанных параметров
      используются значения из файла конфигурации php.ini
      ingres.default_database, Ingres.default_user и Ingres. default_password.
      </FONT></P>
      <P DESIGNTIMESP=25495><FONT face=Tahoma size=2 DESIGNTIMESP=25496>Поскольку все
      ingres-функции используют дескриптор последнего открытого подключения по
      умолчанию, его не требуется сохранять, если имеется всего одно
      подключение. Подключение закрывается при завершении сценария или явном
      вызове ingres_close(). </FONT></P>
      <P class=list DESIGNTIMESP=25497><FONT face=Tahoma size=2 DESIGNTIMESP=25498>&lt;?php <br
       designtimesp=25499>$link = ingres_connect <br
       designtimesp=25500>("mydb". "user", "pass") <br designtimesp=25501>or
      die ("Could not connect");<br designtimesp=25502>print ("Connected
      successfully"): <br designtimesp=25503>ingres_close (Slink). <br
       designtimesp=25504>// или просто ingres_close(); ?&gt; </FONT></P>
      <P DESIGNTIMESP=25505><FONT face=Tahoma size=2 DESIGNTIMESP=25506>См. также:
      ingres_pconnect() и ingres_close(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25507><FONT face=Tahoma
      size=2 DESIGNTIMESP=25508>ingres_pconnect </FONT></P>
      <P DESIGNTIMESP=25509><FONT face=Tahoma size=2 DESIGNTIMESP=25510>Создание устойчивого
      подключения к ВД сервера Ingres II </FONT></P>
      <P DESIGNTIMESP=25511><FONT face=Tahoma size=2 DESIGNTIMESP=25512>resource ingres_pconnect
      ([string database [, string username [, j string password]]]) </FONT></P>
      <P DESIGNTIMESP=25513><FONT face=Tahoma size=2 DESIGNTIMESP=25514>Возвращает дескриптор
      подключения или FALSE — при ошибке. </FONT></P>
      <P DESIGNTIMESP=25515><FONT face=Tahoma size=2 DESIGNTIMESP=25516>ingres_pconnect()
      действует подобно ingres_connect() с двумя отличиями. </FONT></P>
      <P DESIGNTIMESP=25517><FONT face=Tahoma size=2 DESIGNTIMESP=25518>Перед подключением

      функция пытается проверить, имеется ли уже открытое (устойчивое)
      подключение с параметрами (имя БД, пользователя и пароль), аналогичными
      указанным. Если такое подключение обнаруживается, то возвращается его
      идентификатор вместо создания нового подключения. </FONT></P>
      <P DESIGNTIMESP=25519><FONT face=Tahoma size=2 DESIGNTIMESP=25520>При завершении сценария
      подключение не закрывается, а остается действительным для дальнейшего
      использования. (Функция ingres_ close() не может закрыть подключения,
      созданные с помощью ingres_ pconnect().) </FONT></P>
      <P DESIGNTIMESP=25521><FONT face=Tahoma size=2 DESIGNTIMESP=25522>См. также:
      ingres_connect() и ingres_close(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25523><FONT face=Tahoma
      size=2 DESIGNTIMESP=25524>Ingres_close </FONT></P>
      <P DESIGNTIMESP=25525><FONT face=Tahoma size=2 DESIGNTIMESP=25526>Закрытие подключения
      </FONT></P>
      <P DESIGNTIMESP=25527><FONT face=Tahoma size=2 DESIGNTIMESP=25528>bool ingres_dose
      ([resource link]) </FONT></P>
      <P DESIGNTIMESP=25529><FONT face=Tahoma size=2 DESIGNTIMESP=25530>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=25531><FONT face=Tahoma size=2 DESIGNTIMESP=25532>Идентификатор
      закрываемого подключения указывается в аргументе; если его не указывать,
      то закрывается последнее открытое данным сценарием подключение.
</FONT></P>
      <P DESIGNTIMESP=25533><FONT face=Tahoma size=2 DESIGNTIMESP=25534>Фактически использование
      данной функции не является обязательным, так как РНР автоматически
      закрывает все незакрытые неустойчивые подключения при завершении сценария.
      Заметьте: устойчивые подключения не закрываются. </FONT></P>
      <P DESIGNTIMESP=25535><FONT face=Tahoma size=2 DESIGNTIMESP=25536>См. также:
      ingres_connect() и ingres_pconnect(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25537><FONT face=Tahoma
      size=2 DESIGNTIMESP=25538>ingres_query </FONT></P>
      <P DESIGNTIMESP=25539><FONT face=Tahoma size=2 DESIGNTIMESP=25540>Выполнение запроса к БД
      </FONT></P>
      <P DESIGNTIMESP=25541><FONT face=Tahoma size=2 DESIGNTIMESP=25542>bool ingres_query (string
      query [, resource link]) </FONT></P>
      <P DESIGNTIMESP=25543><FONT face=Tahoma size=2 DESIGNTIMESP=25544>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=25545><FONT face=Tahoma size=2 DESIGNTIMESP=25546>Запрос становится частью
      текущей транзакции (при необходимости открывается новая). Для завершения
      транзакции вызывается ingres_ commit(), а с помощью ingres_roTlback()
      можно отменить транзакцию. Функцией ingres_autocommit() можно установить
      режим немедленного выполнения запроса. Некоторые запросы SQL не могут
      выполняться данной функцией: «GET DBEVENT», «PREPARE TO COMMIT», /
      «SAVEPOINT» и все запросы, использующие курсор. </FONT></P>
      <P class=list DESIGNTIMESP=25547><FONT face=Tahoma size=2 DESIGNTIMESP=25548>&lt;?php <br
       designtimesp=25549>Ingres connect<br designtimesp=25550>(Sdatabase.
      $user. $password), <br designtimesp=25551>ingres_query ("select * from
      table"), <br designtimesp=25552>while ($row = ingres_fetch_row()) { <br
       designtimesp=25553>echo $row[l]; <br designtimesp=25554>echo $row[2],
      } ?&gt; </FONT></P>
      <P DESIGNTIMESP=25555><FONT face=Tahoma size=2 DESIGNTIMESP=25556>См. также:
      ingres_fetch_array(), ingres_fetch_object(), ingres_fetch_row(),
      ingres_commit(), ingres_roTlback() и ingres_autocommit(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25557><FONT face=Tahoma
      size=2 DESIGNTIMESP=25558>ingres_rollback </FONT></P>
      <P DESIGNTIMESP=25559><FONT face=Tahoma size=2 DESIGNTIMESP=25560>Отмена транзакции
      </FONT></P>
      <P DESIGNTIMESP=25561><FONT face=Tahoma size=2 DESIGNTIMESP=25562>bool ingres_roTlback
      ([resource link]) </FONT></P>
      <P DESIGNTIMESP=25563><FONT face=Tahoma size=2 DESIGNTIMESP=25564>Закрывает текущую
      транзакцию, отменяя все изменения, внесенные запросами от начала
      транзакции. Новая транзакция открывается при последующем вызове
      ingres_query(). </FONT></P>
      <P DESIGNTIMESP=25565><FONT face=Tahoma size=2 DESIGNTIMESP=25566>См. также:
      ingres_query(), ingres_commit() и ingres_autocommit(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25567><FONT face=Tahoma
      size=2 DESIGNTIMESP=25568>ingres_commit </FONT></P>
      <P DESIGNTIMESP=25569><FONT face=Tahoma size=2 DESIGNTIMESP=25570>Завершение транзакции
      </FONT></P>
      <P DESIGNTIMESP=25571><FONT face=Tahoma size=2 DESIGNTIMESP=25572>boo! ingres_commit
      ([resource link]) </FONT></P>
      <P DESIGNTIMESP=25573><FONT face=Tahoma size=2 DESIGNTIMESP=25574>Закрывает текущую
      транзакцию, фиксируя все изменения, внесенные запросами от начала
      транзакции. Новая транзакция открывается при последующем вызове
      ingres_query(). Функцией ingres_autocommit() можно установить режим
      немедленного выполнения каждого запроса. </FONT></P>
      <P DESIGNTIMESP=25575><FONT face=Tahoma size=2 DESIGNTIMESP=25576>См. также:
      ingres_query(), ingres_rollback() и ingres_autocomnnt(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25577><FONT face=Tahoma
      size=2 DESIGNTIMESP=25578>ingres_autocommit </FONT></P>
      <P DESIGNTIMESP=25579><FONT face=Tahoma size=2 DESIGNTIMESP=25580>Переключение режима
      немедленного выполнения запроса </FONT></P>
      <P DESIGNTIMESP=25581><FONT face=Tahoma size=2 DESIGNTIMESP=25582>bool ingres_autocomm1t
      ([resource link]) </FONT></P>
      <P DESIGNTIMESP=25583><FONT face=Tahoma size=2 DESIGNTIMESP=25584>При запуске сценария по
      умолчанию запрос(-ы) (выполненный функцией ingres_query()) необходимо
      завершать явно, вызовом функции ingres_commit() (или отменять транзакцию с
      помощью ingres_ rollbackO). </FONT></P>
      <P DESIGNTIMESP=25585><FONT face=Tahoma size=2 DESIGNTIMESP=25586>Если же (вызовом данной
      функции) переключить режим автовыполнения, то запросы будут выполняться
      немедленно, то есть после каждого запроса косвенно вызывается
      ingres_commit(). </FONT></P>
      <P DESIGNTIMESP=25587><FONT face=Tahoma size=2 DESIGNTIMESP=25588>Повторный вызов функции
      переключает режим на противоположный. </FONT></P>
      <P DESIGNTIMESP=25589><FONT face=Tahoma size=2 DESIGNTIMESP=25590>См. также:
      ingres_query(), ingres_rollback() и ingres_commit(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25591><FONT face=Tahoma
      size=2 DESIGNTIMESP=25592>ingres_num_rows </FONT></P>
      <P DESIGNTIMESP=25593><FONT face=Tahoma size=2 DESIGNTIMESP=25594>Получение числа
      измененных или возвращенных запросом записей </FONT></P>
      <P DESIGNTIMESP=25595><FONT face=Tahoma size=2 DESIGNTIMESP=25596>int ingres_num_rows
      ([resource link]) </FONT></P>
      <P DESIGNTIMESP=25597><FONT face=Tahoma size=2 DESIGNTIMESP=25598>После запросов DELETE,
      INSERT, UPDATE функция возвращает число измененных записей, а после
      запросов выборки — число возвращенных записей (функция должна вызываться
      до разборки результата запроса функциями ingres_fetch_array(),
      ingres_fetch_object() или ingres_fetch_row()). </FONT></P>
      <P DESIGNTIMESP=25599><FONT face=Tahoma size=2 DESIGNTIMESP=25600>В цикле обработки
      результатов запроса для проверки того, все ли записи были обработаны,
      целесообразнее использовать возвращаемое fetch-функциями значение.
      </FONT></P>
      <P DESIGNTIMESP=25601><FONT face=Tahoma size=2 DESIGNTIMESP=25602>См. также:
      ingres_query(), ingres_fetch_array(), ingres_fetch_object() и
      ingres_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25603><FONT face=Tahoma
      size=2 DESIGNTIMESP=25604>ingres_num_fields </FONT></P>
      <P DESIGNTIMESP=25605><FONT face=Tahoma size=2 DESIGNTIMESP=25606>Получение числа
      возвращенных запросом полей </FONT></P>
      <P DESIGNTIMESP=25607><FONT face=Tahoma size=2 DESIGNTIMESP=25608>int ingres_num_fields
      ([resource link]) </FONT></P>
      <P DESIGNTIMESP=25609><FONT face=Tahoma size=2 DESIGNTIMESP=25610>См. также:
      ingres_query(), ingres_fetch_array(), ingres_fetch_object() n
      ingres_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25611><FONT face=Tahoma
      size=2 DESIGNTIMESP=25612>ingres_fetch_row </FONT></P>
      <P DESIGNTIMESP=25613><FONT face=Tahoma size=2 DESIGNTIMESP=25614>Занесение записи в
      нумерованный массив </FONT></P>
      <P DESIGNTIMESP=25615><FONT face=Tahoma size=2 DESIGNTIMESP=25616>array ingres_fetch_row
      ([resource link]) </FONT></P>
      <P DESIGNTIMESP=25617><FONT face=Tahoma size=2 DESIGNTIMESP=25618>Возвращает в массиве
      (нумерация полей начинается с 1) следующую запись, возвращенную запросом,

      или FALSE, если все записи уже были обработаны. </FONT></P>
      <P class=list DESIGNTIMESP=25619><FONT face=Tahoma size=2 DESIGNTIMESP=25620>&lt;?php <br
       designtimesp=25621>ingres_connect <br designtimesp=25622>(Sdatabase.
      Suser, Spassword): <br designtimesp=25623>ingres_query ("select * from
      table"); <br designtimesp=25624>while (Srow = lngres_fetch_row()) { <br
       designtimesp=25625>echo $row[l]: // первое поле записи <br
       designtimesp=25626>echo $row[2]: } ?&gt; </FONT></P>
      <P DESIGNTIMESP=25627><FONT face=Tahoma size=2 DESIGNTIMESP=25628>См. также:
      ingres_num_fields(), ingres_query(), ingres_fetch_array() и
      ingres_fetch_object(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25629><FONT face=Tahoma
      size=2 DESIGNTIMESP=25630>ingres_fetch_array </FONT></P>
      <P DESIGNTIMESP=25631><FONT face=Tahoma size=2 DESIGNTIMESP=25632>Занесение записи в массив
      </FONT></P>
      <P DESIGNTIMESP=25633><FONT face=Tahoma size=2 DESIGNTIMESP=25634>array ingres_fetch_array
      ([int result_type [, resource link]]) </FONT></P>
      <P DESIGNTIMESP=25635><FONT face=Tahoma size=2 DESIGNTIMESP=25636>Возвращает в массиве
      следующую запись, возвращенную запросом, или FALSE, если записей больше не
      имеется. </FONT></P>
      <P DESIGNTIMESP=25637><FONT face=Tahoma size=2 DESIGNTIMESP=25638>Данная функция является
      расширением функции ingres_fetch_row(), и она может возвращать
      нумерованный или ассоциативный массив (а также объединенный). Вид
      возвращаемого массива может указываться в аргументе result_type одной из
      констант: II_NUM, II_ASSOC, П_ВОТН (по умолчанию). В ассоциативных
      массивах индексами служат имена полей. </FONT></P>
      <P DESIGNTIMESP=25639><FONT face=Tahoma size=2 DESIGNTIMESP=25640>Если имеются одноименные
      поля, используется последнее имя. Для доступа к одноименным полям можно
      использовать числовые индексы (поля нумеруются в той последовательности, в
      которой указаны в запросе или в таблице) или псевдонимы. </FONT></P>
      <P class=list DESIGNTIMESP=25641><FONT face=Tahoma
      size=2 DESIGNTIMESP=25642>ingres_query(select tl.fl as f t2.il as b from tl. t2):<br
       designtimesp=25643>Sresult = ingres_fetch_array():<br
       designtimesp=25644>$foo = $result["f"]; $bar = $result["b"]; </FONT></P>
      <P DESIGNTIMESP=25645><FONT face=Tahoma size=2 DESIGNTIMESP=25646>Заметьте, что функция
      выполняется лишь незначительно медленнее, чем ingres_fetch_object(), но
      предоставляет дополнительную функциональность. </FONT></P>
      <P class=list DESIGNTIMESP=25647><FONT face=Tahoma size=2 DESIGNTIMESP=25648>&lt;?php <br
       designtimesp=25649>ingres_connect (Sdatabase. Suser. Spassword): <br
       designtimesp=25650>ingres_query ("select * from table"),<br
       designtimesp=25651>while ($row = ingres_fetch_array()) { <br
       designtimesp=25652>echo $row["user_id"]:#<br
       designtimesp=25653>используем ассоциативный массив <br
       designtimesp=25654>echo $row["fullname"]: <br designtimesp=25655>echo
      $row[l]; # <br designtimesp=25656>используем нумерованный массив <br
       designtimesp=25657>echo $row[2]: } ?&gt; </FONT></P>
      <P DESIGNTIMESP=25658><FONT face=Tahoma size=2 DESIGNTIMESP=25659>См. также:
      ingres_query(), ingres_num_fields(), ingres_field_name(),
      ingres_fetch_object() и ingres_fetch_cow(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25660><FONT face=Tahoma
      size=2 DESIGNTIMESP=25661>ingres_fetch_object </FONT></P>
      <P DESIGNTIMESP=25662><FONT face=Tahoma size=2 DESIGNTIMESP=25663>Получение записи в
      свойствах объекта </FONT></P>
      <P DESIGNTIMESP=25664><FONT face=Tahoma size=2 DESIGNTIMESP=25665>object
      ingres_fetch_object ([int result_type [, resource link]]) </FONT></P>
      <P DESIGNTIMESP=25666><FONT face=Tahoma size=2 DESIGNTIMESP=25667>Возвращает объект, в
      свойствах которого находятся поля текущей записи, или FALSE, если записей
      более не имеется. Заметьте: осуществлять доступ к полям по их номерам
      невозможно (объект не может иметь численные свойства). </FONT></P>
      <P DESIGNTIMESP=25668><FONT face=Tahoma size=2 DESIGNTIMESP=25669>По скорости выполнения
      функция идентична ingres_fetch_array() и почти идентична
      ingres_fetch_row(). </FONT></P>
      <P class=list DESIGNTIMESP=25670><FONT face=Tahoma size=2 DESIGNTIMESP=25671>&lt;?php <br
       designtimesp=25672>ingres_connect ($database. $user.<br
       designtimesp=25673>$password):<br designtimesp=25674>ingres_query
      ("select * from table");<br designtimesp=25675>while ($row =
      ingres_fetch_object()) <br designtimesp=25676>{ echo $row-&gt;user_id;
      <br designtimesp=25677>echo $row-&gt;fullname; } ?&gt; </FONT></P>
      <P DESIGNTIMESP=25678><FONT face=Tahoma size=2 DESIGNTIMESP=25679>См. также:
      ingres_query(), ingres_num_fields(), ingres_field_name(),
      ingres_fetch_array() и ingres_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25680><FONT face=Tahoma
      size=2 DESIGNTIMESP=25681>ingres_field_name </FONT></P>
      <P DESIGNTIMESP=25682><FONT face=Tahoma size=2 DESIGNTIMESP=25683>Получение имени поля
      записи в результате запроса </FONT></P>
      <P DESIGNTIMESP=25684><FONT face=Tahoma size=2 DESIGNTIMESP=25685>string ingres_field_name
      (int index [, resource link]) </FONT></P>
      <P DESIGNTIMESP=25686><FONT face=Tahoma size=2 DESIGNTIMESP=25687>Функция возвращает имя
      поля с индексом index (нумерация начинается с 1) набора записей,
      возвращенных запросом, или FALSE — при ошибке. </FONT></P>
      <P DESIGNTIMESP=25688><FONT face=Tahoma size=2 DESIGNTIMESP=25689>См. также:
      ingres_query(), ingres_num_fields(), ingres_fetch_array(),
      ingres_fetch_object() и ingres_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25690><FONT face=Tahoma
      size=2 DESIGNTIMESP=25691>ingres_field_type </FONT></P>
      <P DESIGNTIMESP=25692><FONT face=Tahoma size=2 DESIGNTIMESP=25693>Получение типа поля
      </FONT></P>
      <P DESIGNTIMESP=25694><FONT face=Tahoma size=2 DESIGNTIMESP=25695>string ingres_field_type
      (int index [, resource link]) </FONT></P>
      <P DESIGNTIMESP=25696><FONT face=Tahoma size=2 DESIGNTIMESP=25697>Функция возвращает имя
      поля с индексом index (нумерация начинается с 1) набора записей,
      возвращенных запросом, или FALSE — при ошибке. </FONT></P>
      <P DESIGNTIMESP=25698><FONT face=Tahoma size=2 DESIGNTIMESP=25699>Возвращаемые типы полей:
      IIAPI_BYTE_TYPE, IIAPI_CHA_TYPE, IIAPI_DTE_ TYPE, IIAPIJLTJYPE
      IIAPIJNTJYPE, IIAPI_VCH_TYPE. Некоторые типы могут соответствовать
      нескольким SQL-типам в зависимости от длины поля (см.
      ingres_field_length()). Например, IIAPI_FLT_TYPE может соответствовать
      float4 или floatS. См. документацию: «Ingres/OpenAPI User Guide — Appendix
      С». </FONT></P>
      <P DESIGNTIMESP=25700><FONT face=Tahoma size=2 DESIGNTIMESP=25701>См. также:
      ingres_query(), ingres_num_fields(), ingres_fetch_array(),
      ingres_fetch_object() и ingres_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25702><FONT face=Tahoma
      size=2 DESIGNTIMESP=25703>ngres_field_nullable </FONT></P>
      <P DESIGNTIMESP=25704><FONT face=Tahoma size=2 DESIGNTIMESP=25705>Выяснение, может ли поле
      принимать значение null </FONT></P>
      <P DESIGNTIMESP=25706><FONT face=Tahoma size=2 DESIGNTIMESP=25707>bool
      ingres_field_nullable (int index [, resource link]) </FONT></P>
      <P DESIGNTIMESP=25708><FONT face=Tahoma size=2 DESIGNTIMESP=25709>Возвращает TRUE, если
      поле с индексом index (нумерация начинается с 1) может иметь значение
      NULL, иначе возвращает FALSE. </FONT></P>
      <P DESIGNTIMESP=25710><FONT face=Tahoma size=2 DESIGNTIMESP=25711>См. также:
      ingres_query(), ingresjium_fields(), ingres_fetch_array(),
      ingres_fetch_object() и ingres_fetcn_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25712><FONT face=Tahoma
      size=2 DESIGNTIMESP=25713>Ingres_field_prength </FONT></P>
      <P DESIGNTIMESP=25714><FONT face=Tahoma size=2 DESIGNTIMESP=25715>Получение длины поля
      </FONT></P>
      <P DESIGNTIMESP=25716><FONT face=Tahoma size=2 DESIGNTIMESP=25717>int ingres_field_length
      (int index [, resource link]) </FONT></P>
      <P DESIGNTIMESP=25718><FONT face=Tahoma size=2 DESIGNTIMESP=25719>Возвращает длину поля
      (максимальное число байт) с индексом index (нумерация начинается с 1)
      набора записей, возвращенных запросом, или FALSE — при ошибке. </FONT></P>
      <P DESIGNTIMESP=25720><FONT face=Tahoma size=2 DESIGNTIMESP=25721>См. документацию
      «Ingres/OpenAPI User Guide — Appendix С». </FONT></P>
      <P DESIGNTIMESP=25722><FONT face=Tahoma size=2 DESIGNTIMESP=25723>См. также:
      ingres_query(), ingres_num_fields(), ingres_fetch_array(),
      ingres_fetch_object() и ingres_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25724><FONT face=Tahoma
      size=2 DESIGNTIMESP=25725>ingres_field_precision </FONT></P>
      <P DESIGNTIMESP=25726><FONT face=Tahoma size=2 DESIGNTIMESP=25727>Получение точности поля
      </FONT></P>
      <P DESIGNTIMESP=25728><FONT face=Tahoma size=2 DESIGNTIMESP=25729>int ingres_field
      precision (int index [, resource link]) </FONT></P>
      <P DESIGNTIMESP=25730><FONT face=Tahoma size=2 DESIGNTIMESP=25731>Возвращает точность поля
      (только для полей, содержащих числовые значения) с индексом index
      (нумерация начинается с 1) набора записей, возвращенных запросом.
      </FONT></P>
      <P DESIGNTIMESP=25732><FONT face=Tahoma size=2 DESIGNTIMESP=25733>См. документацию
      «Ingres/OpcnAPI User Guide — Appendix С». </FONT></P>
      <P DESIGNTIMESP=25734><FONT face=Tahoma size=2 DESIGNTIMESP=25735>См. также:
      ingres_query(), ingres_num_fie1ds(), ingres_fetch_array(),
      ingres_fetch_object() и ingres_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25736><FONT face=Tahoma
      size=2 DESIGNTIMESP=25737>ingres_field_scale </FONT></P>
      <P DESIGNTIMESP=25738><FONT face=Tahoma size=2 DESIGNTIMESP=25739>Получение размерности
      поля </FONT></P>
      <P DESIGNTIMESP=25740><FONT face=Tahoma size=2 DESIGNTIMESP=25741>int ingres_field_scale
      (int index [, resource link]) Возвращает масштаб целочисленного ноля с
      индексом index. См. документацию «Ingrcs/OpenAPI User Guide — Appendix С».
      </FONT></P>
      <P DESIGNTIMESP=25742><FONT face=Tahoma size=2 DESIGNTIMESP=25743>См. также:
      ingres_query(), ingres_num_fields(), ingres_fetch_array(),
      ingres_fetch_object() и ingres_fetch_ieow(). </FONT></P>
      <P class=Title_2 DESIGNTIMESP=25744><a name=9
       designtimesp=25745></A><FONT face=Tahoma size=2 DESIGNTIMESP=25746>Sybase </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25747><FONT face=Tahoma size=2 DESIGNTIMESP=25748>Sybase
      connect </FONT></P>
      <P DESIGNTIMESP=25749><FONT face=Tahoma size=2 DESIGNTIMESP=25750>Подключение к серверу
      Sybase </FONT></P>
      <P DESIGNTIMESP=25751><FONT face=Tahoma size=2 DESIGNTIMESP=25752>int sybase_connect
      (string server-name, string username, string ' password [, string
      charset]) </FONT></P>
      <P DESIGNTIMESP=25753><FONT face=Tahoma size=2 DESIGNTIMESP=25754>Возвращает дескриптор
      подключения к серверу Sybase или FALSE -при ошибке. Аргумент servername
      должен быть действительным именем, определенном в файле interfaces.
      </FONT></P>
      <P DESIGNTIMESP=25755><FONT face=Tahoma size=2 DESIGNTIMESP=25756>Если функция повторно
      вызывается с теми же аргументами, новое подключение не создастся, а
      возвращается идентификатор имеющегося. </FONT></P>
      <P DESIGNTIMESP=25757><FONT face=Tahoma size=2 DESIGNTIMESP=25758>Подключение к серверу
      закрывается при завершении сценария или ранее, если явно вызывается
      функция sybase_close(). </FONT></P>
      <P DESIGNTIMESP=25759><FONT face=Tahoma size=2 DESIGNTIMESP=25760>См. также:
      sybase_pconnect(), sybase_close(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25761><FONT face=Tahoma
      size=2 DESIGNTIMESP=25762>sybase_close </FONT></P>
      <P DESIGNTIMESP=25763><FONT face=Tahoma size=2 DESIGNTIMESP=25764>Закрытие подключения к
      Sybase </FONT></P>
      <P DESIGNTIMESP=25765><FONT face=Tahoma size=2 DESIGNTIMESP=25766>bool sybase_close (int

      link_identifier) </FONT></P>
      <P DESIGNTIMESP=25767><FONT face=Tahoma size=2 DESIGNTIMESP=25768>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=25769><FONT face=Tahoma size=2 DESIGNTIMESP=25770>Идентификатор
      закрываемого подключения указывается в аргументе; если его не указывать,
      то закрывается последнее открытое данным сценарием подключение.
</FONT></P>
      <P DESIGNTIMESP=25771><FONT face=Tahoma size=2 DESIGNTIMESP=25772>Фактически использование
      данной функции не является обязательным, так как РНР автоматически
      закрывает все незакрытые неустойчивые подключения при завершении сценария.
      Заметьте: устойчивые подключения, созданные функцией sybase_pconnect(), не
      закрываются. </FONT></P>
      <P DESIGNTIMESP=25773><FONT face=Tahoma size=2 DESIGNTIMESP=25774>См. также:
      sybase_connect(), sybase_pconnect(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25775><FONT face=Tahoma
      size=2 DESIGNTIMESP=25776>sybase_pconnect </FONT></P>
      <P DESIGNTIMESP=25777><FONT face=Tahoma size=2 DESIGNTIMESP=25778>Создание устойчивого
      подключения к серверу Sybase </FONT></P>
      <P DESIGNTIMESP=25779><FONT face=Tahoma size=2 DESIGNTIMESP=25780>int sybase_pconnect
      (string servername, string username, string password [, string charset])
      </FONT></P>
      <P DESIGNTIMESP=25781><FONT face=Tahoma size=2 DESIGNTIMESP=25782>Возвращает дескриптор
      устойчивого подключения или FALSE — при ошибке. sybase_pconnect()
      действует подобно sybase_connect() с двумя отличиями. </FONT></P>
      <P DESIGNTIMESP=25783><FONT face=Tahoma size=2 DESIGNTIMESP=25784>Перед подключением
      функция пытается проверить, имеется ли уже открытое (устойчивое)
      подключение с параметрами (имя сервера, пользователя и пароль),
      аналогичными указанным. Если такое подключение обнаруживается, то
      возвращается его идентификатор вместо создания нового подключения.
      </FONT></P>
      <P DESIGNTIMESP=25785><FONT face=Tahoma size=2 DESIGNTIMESP=25786>При завершении сценария
      подключение не закрывается, а остается действительным для дальнейшего
      использования. (Функция sybase_ close() не может закрыть подключения,
      созданные с помощью sybase_ pconnect().) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25787><FONT face=Tahoma
      size=2 DESIGNTIMESP=25788>sybase_select_db </FONT></P>
      <P DESIGNTIMESP=25789><FONT face=Tahoma size=2 DESIGNTIMESP=25790>Выбор БД Sybase
      </FONT></P>
      <P DESIGNTIMESP=25791><FONT face=Tahoma size=2 DESIGNTIMESP=25792>bool sybase_se!ect_db
      (string databasejiame, int link_identifier) Возвращает TRUE или FALSE —
      при ошибке. </FONT></P>
      <P DESIGNTIMESP=25793><FONT face=Tahoma size=2 DESIGNTIMESP=25794>Устанавливает БД с именем
      database_name в качестве активной для текущего подключения или указанного
      в link_identifier. Если подключений не имеется, то косвенно вызывается
      функция sybase_connect() с параметрами по умолчанию. </FONT></P>
      <P DESIGNTIMESP=25795><FONT face=Tahoma size=2 DESIGNTIMESP=25796>Последующие запросы,
      выполняемые функцией, будут адресованы данной БД. </FONT></P>
      <P DESIGNTIMESP=25797><FONT face=Tahoma size=2 DESIGNTIMESP=25798>См. также:
      sybase_connect(), sybase_pconnect() и sybase_query() </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25799><FONT face=Tahoma
      size=2 DESIGNTIMESP=25800>sybase_query </FONT></P>
      <P DESIGNTIMESP=25801><FONT face=Tahoma size=2 DESIGNTIMESP=25802>Выполнение запроса к БД
      Sybase </FONT></P>
      <P DESIGNTIMESP=25803><FONT face=Tahoma size=2 DESIGNTIMESP=25804>int sybase_query (string
      query, int link_identifier) </FONT></P>
      <P DESIGNTIMESP=25805><FONT face=Tahoma size=2 DESIGNTIMESP=25806>Посылает запрос текущей
      БД, активной для текущего (последнего открытого) подключения или
      указанного в link_identifier. Если подключений не имеется, то косвенно
      вызывается функция sybase_ connect() с параметрами по умолчанию.
      </FONT></P>
      <P DESIGNTIMESP=25807><FONT face=Tahoma size=2 DESIGNTIMESP=25808>Возвращает дескриптор
      набора возвращенных записей или FALSE -при ошибке. </FONT></P>
      <P DESIGNTIMESP=25809><FONT face=Tahoma size=2 DESIGNTIMESP=25810>См. также:
      sybase_select_db() и sybase_connect(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25811><FONT face=Tahoma
      size=2 DESIGNTIMESP=25812>sybase_affected_rows </FONT></P>
      <P DESIGNTIMESP=25813><FONT face=Tahoma size=2 DESIGNTIMESP=25814>Получение числа
      измененных последним запросом записей int sybase_affected_rows ([int
      link_identifier]} </FONT></P>
      <P DESIGNTIMESP=25815><FONT face=Tahoma size=2 DESIGNTIMESP=25816>Возвращается число
      записей, измененных в результате выполнения запросом DELETE, INSERT,
      REPLACE или UPDATE. </FONT></P>
      <P DESIGNTIMESP=25817><FONT face=Tahoma size=2 DESIGNTIMESP=25818>Если последним запросом
      была команда DELETE без ограничения WHERE, то из таблицы будут удалены все
      записи, но эта функция возвратит 0. </FONT></P>
      <P DESIGNTIMESP=25819><FONT face=Tahoma size=2 DESIGNTIMESP=25820>Чтобы выяснить, сколько
      записей было возвращено командой SELECT, используйте функцию
      sybase_num_rows(). </FONT></P>
      <P DESIGNTIMESP=25821><FONT face=Tahoma size=2 DESIGNTIMESP=25822>Функция доступна только
      при использовании библиотеки интерфейса СТ Sybase, но не D В Sybase.
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25823><FONT face=Tahoma
      size=2 DESIGNTIMESP=25824>Sybase_num_rows </FONT></P>
      <P DESIGNTIMESP=25825><FONT face=Tahoma size=2 DESIGNTIMESP=25826>Получение числа записей,
      возвращенных запросом </FONT></P>
      <P DESIGNTIMESP=25827><FONT face=Tahoma size=2 DESIGNTIMESP=25828>int sybase_num_rows (int
      result) </FONT></P>
      <P DESIGNTIMESP=25829><FONT face=Tahoma size=2 DESIGNTIMESP=25830>См. также: sybase_query()
      и sybase_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25831><FONT face=Tahoma
      size=2 DESIGNTIMESP=25832>sybase_num_fields </FONT></P>
      <P DESIGNTIMESP=25833><FONT face=Tahoma size=2 DESIGNTIMESP=25834>Получение числа полей в
      наборе записей</FONT></P>
      <P DESIGNTIMESP=25835><FONT face=Tahoma size=2 DESIGNTIMESP=25836>int sybase_num_fields
      (int result) </FONT></P>
      <P DESIGNTIMESP=25837><FONT face=Tahoma size=2 DESIGNTIMESP=25838>См. также:
      sybase_query(), sybase_fetch_field(), sybase_num_rows(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25839><FONT face=Tahoma
      size=2 DESIGNTIMESP=25840>sybase_data_seek </FONT></P>
      <P DESIGNTIMESP=25841><FONT face=Tahoma size=2 DESIGNTIMESP=25842>Перемещение внутреннего
      указателя записи </FONT></P>
      <P DESIGNTIMESP=25843><FONT face=Tahoma size=2 DESIGNTIMESP=25844>bool sybase_data_seek
      (int result_identifier. int row_number) </FONT></P>
      <P DESIGNTIMESP=25845><FONT face=Tahoma size=2 DESIGNTIMESP=25846>При каждом вызове функции
      sybase_fetch row() (или подобной) внутренний курсор записи смещается на
      следующую запись. Данная функция позволяет свободно перемещать курсор в
      наборе записей res ul t_ identifier так, чтобы он указывал на запись с
      номером row_number (нумерация начинается с 0) при следующем вызове
      sybase_fetch_rov*(). </FONT></P>
      <P DESIGNTIMESP=25847><FONT face=Tahoma size=2 DESIGNTIMESP=25848>Она возвращает TRUE или
      FALSE — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25849><FONT face=Tahoma
      size=2 DESIGNTIMESP=25850>Sybase_result </FONT></P>
      <P DESIGNTIMESP=25851><FONT face=Tahoma size=2 DESIGNTIMESP=25852>Получение определенного
      элемента набора записей </FONT></P>
      <P DESIGNTIMESP=25853><FONT face=Tahoma size=2 DESIGNTIMESP=25854>string sybase_result (int
      result, int row, mixed field) </FONT></P>
      <P DESIGNTIMESP=25855><FONT face=Tahoma size=2 DESIGNTIMESP=25856>Возвращает содержимое
      ячейки из набора записей resul t. В аргументе row указывается номер записи
      (нумерация начинается с 0), в аргументе field можно указать индекс поля
      (число), имя поля, полное имя поля (вида: имя_таблицы.имя_поля) или
      псевдоним поля (для запросов типа 'SELECT foo AS bar FROM...). </FONT></P>
      <P DESIGNTIMESP=25857><FONT face=Tahoma size=2 DESIGNTIMESP=25858>При работе с большими
      наборами записей быстрее выполняются функции типа _fetch_ (см. ниже).
      Также заметьте, что численные индексы обрабатываются быстрее строковых.
      </FONT></P>
      <P DESIGNTIMESP=25859><FONT face=Tahoma size=2 DESIGNTIMESP=25860>Не следует вызывать
      функцию mysql_result() в сочетании с другими функциями обработки набора
      записей. </FONT></P>
      <P DESIGNTIMESP=25861><FONT face=Tahoma size=2 DESIGNTIMESP=25862>Рекомендуется
      использовать альтернативные функции: sybase_fetch_ row(),
      sybase_fetch_array() и sybase_fetch_object(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25863><FONT face=Tahoma
      size=2 DESIGNTIMESP=25864>sybase_fetch_row </FONT></P>
      <P DESIGNTIMESP=25865><FONT face=Tahoma size=2 DESIGNTIMESP=25866>Занесение записи в
      нумерованный массив </FONT></P>
      <P DESIGNTIMESP=25867><FONT face=Tahoma size=2 DESIGNTIMESP=25868>array sybase_fetch_row
      (int result) </FONT></P>
      <P DESIGNTIMESP=25869><FONT face=Tahoma size=2 DESIGNTIMESP=25870>Возвращает массив,
      соответствующий текущей записи, из набора записей result, возвращенных
      запросом (последующий вызов функции возвращает следующую запись), или
      FALSE, если записей более не имеется. Каждое поле записи сохраняется в
      нумерованном элементе массива (нумерация начинается с 0). </FONT></P>
      <P DESIGNTIMESP=25871><FONT face=Tahoma size=2 DESIGNTIMESP=25872>См. также:
      sybase_fetch_array(), sybase_fetch_object(), sybase_data_seek(),
      sybase_result(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25873><FONT face=Tahoma
      size=2 DESIGNTIMESP=25874>sybase_fetch_array </FONT></P>
      <P DESIGNTIMESP=25875><FONT face=Tahoma size=2 DESIGNTIMESP=25876>Занесение записи в массив
      </FONT></P>
      <P DESIGNTIMESP=25877><FONT face=Tahoma size=2 DESIGNTIMESP=25878>array sybase_fetch_array
      (int result) </FONT></P>
      <P DESIGNTIMESP=25879><FONT face=Tahoma size=2 DESIGNTIMESP=25880>Возвращает массив,
      соответствующий текущей записи, из набора записей result, возвращенных
      запросом, или FALSE, если записей более не имеется (при этом курсор записи
      перемещается на следующую). </FONT></P>
      <P DESIGNTIMESP=25881><FONT face=Tahoma size=2 DESIGNTIMESP=25882>Данная функция является
      расширением функции sybase_fetch_row(), и она возвращает объединенный
      нумерование-ассоциативный массив. Доступ к элементам массива может
      осуществляться как через имена полей, так и по их номеру. </FONT></P>
      <P DESIGNTIMESP=25883><FONT face=Tahoma size=2 DESIGNTIMESP=25884>Заметьте, что функция
      выполняется незначительно медленнее, чем sybase_fetch_row(), но
      предоставляет дополнительную функциональность. </FONT></P>
      <P DESIGNTIMESP=25885><FONT face=Tahoma size=2 DESIGNTIMESP=25886>См. также
      sybase_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25887><FONT face=Tahoma
      size=2 DESIGNTIMESP=25888>sybase_fetch_object </FONT></P>
      <P DESIGNTIMESP=25889><FONT face=Tahoma size=2 DESIGNTIMESP=25890>Получение записи в
      свойствах объекта </FONT></P>
      <P DESIGNTIMESP=25891><FONT face=Tahoma size=2 DESIGNTIMESP=25892>int sybase_fetch_object
      (int result) </FONT></P>
      <P DESIGNTIMESP=25893><FONT face=Tahoma size=2 DESIGNTIMESP=25894>Возвращает объект, в
      свойствах которого находятся поля текущей записи, или FALSE, если записей
      более не имеется. </FONT></P>
      <P DESIGNTIMESP=25895><FONT face=Tahoma size=2 DESIGNTIMESP=25896>По скорости выполнения (и
      функциональности) функция идентична sybase_fetch_array() и почти идентична
      sybase_fetch_row(). </FONT></P>
      <P DESIGNTIMESP=25897><FONT face=Tahoma size=2 DESIGNTIMESP=25898>См. также:
      sybase_fetch_array() и sybase_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25899><FONT face=Tahoma
      size=2 DESIGNTIMESP=25900>sybase_free_result </FONT></P>
      <P DESIGNTIMESP=25901><FONT face=Tahoma size=2 DESIGNTIMESP=25902>Уничтожение набора
      записей </FONT></P>
      <P DESIGNTIMESP=25903><FONT face=Tahoma size=2 DESIGNTIMESP=25904>bool sybase_free_result
      (int result) </FONT></P>
      <P DESIGNTIMESP=25905><FONT face=Tahoma size=2 DESIGNTIMESP=25906>Функция освобождает
      память, занимаемую набором записей result, возвращенным запросом. Ее
      следует использовать только в том случае, если требуется экономить память,
      так как память автоматически освобождается при завершении сценария.
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25907><FONT face=Tahoma
      size=2 DESIGNTIMESP=25908>sybase_fetch_field </FONT></P>
      <P DESIGNTIMESP=25909><FONT face=Tahoma size=2 DESIGNTIMESP=25910>Получение информации о
      поле записи в свойствах объекта </FONT></P>
      <P DESIGNTIMESP=25911><FONT face=Tahoma size=2 DESIGNTIMESP=25912>object sybase_fetch_field
      (int result [, int field_offset]) </FONT></P>
      <P DESIGNTIMESP=25913><FONT face=Tahoma size=2 DESIGNTIMESP=25914>Если номер поля
      field_offset не указан, при каждом вызове функции возвращаются свойства
      следующего поля из набора записей resul t. </FONT></P>
      <P DESIGNTIMESP=25915><FONT face=Tahoma size=2 DESIGNTIMESP=25916>Возвращаемый объект имеет
      следующие свойства (и содержит информацию): </FONT></P>
      <ul designtimesp=25917>
        <li designtimesp=25918><FONT face=Tahoma size=2 DESIGNTIMESP=25919>name — имя поля. Если
        поле — результат выполнения функции, имя возвращается в виде computed#N,
        где #М — порядковый номер; </FONT>
        <li designtimesp=25920><FONT face=Tahoma size=2 DESIGNTIMESP=25921>column_source — имя
        таблицы, которой принадлежит поле; </FONT>
        <li designtimesp=25922><FONT face=Tahoma size=2 DESIGNTIMESP=25923>numeric — 1, если поле
        числовое; </FONT>
        <li designtimesp=25924><FONT face=Tahoma size=2 DESIGNTIMESP=25925>type — тип поля.
        </FONT></LI></UL>
      <P DESIGNTIMESP=25926><FONT face=Tahoma size=2 DESIGNTIMESP=25927>См. также
      sybase_field_seek(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25928><FONT face=Tahoma
      size=2 DESIGNTIMESP=25929>sybase_field_seek </FONT></P>
      <P DESIGNTIMESP=25930><FONT face=Tahoma size=2 DESIGNTIMESP=25931>Перемещение к указанному
      полю </FONT></P>
      <P DESIGNTIMESP=25932><FONT face=Tahoma size=2 DESIGNTIMESP=25933>int sybase_field_seek
      (int result, int field_offset) </FONT></P>
      <P DESIGNTIMESP=25934><FONT face=Tahoma size=2 DESIGNTIMESP=25935>Перемещается к указанному
      числом field_offset нолю. И если при следующем вызове sybase_fetch_field
      () не указывается номер поля, будет возвращено это поле. </FONT></P>
      <P DESIGNTIMESP=25936><FONT face=Tahoma size=2 DESIGNTIMESP=25937>См. также
      sybase_fetch_field(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25938><FONT face=Tahoma
      size=2 DESIGNTIMESP=25939>sybase_get_last_message </FONT></P>
      <P DESIGNTIMESP=25940><FONT face=Tahoma size=2 DESIGNTIMESP=25941>Получение последнего
      сообщения сервера string sybase_getjast_message (void) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25942><FONT face=Tahoma
      size=2 DESIGNTIMESP=25943>sybase_min_client_severity </FONT></P>
      <P DESIGNTIMESP=25944><FONT face=Tahoma size=2 DESIGNTIMESP=25945>Установка минимального
      уровня требовательности клиента </FONT></P>
      <P DESIGNTIMESP=25946><FONT face=Tahoma size=2 DESIGNTIMESP=25947>void
      sybasejnin_client_severity (int severity) </FONT></P>
      <P DESIGNTIMESP=25948><FONT face=Tahoma size=2 DESIGNTIMESP=25949>Функция доступна только
      при использовании библиотеки интерфейса СТ Sybase, но не DB Sybase.
      </FONT></P>
      <P DESIGNTIMESP=25950><FONT face=Tahoma size=2 DESIGNTIMESP=25951>См. также
      sybase_min_server_severity(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25952><FONT face=Tahoma
      size=2 DESIGNTIMESP=25953>sybase_min_server_severity </FONT></P>
      <P DESIGNTIMESP=25954><FONT face=Tahoma size=2 DESIGNTIMESP=25955>Установка минимального
      уровня требовательности сервера </FONT></P>
      <P DESIGNTIMESP=25956><FONT face=Tahoma size=2 DESIGNTIMESP=25957>void
      sybase_min_server_severity (int severity) </FONT></P>
      <P DESIGNTIMESP=25958><FONT face=Tahoma size=2 DESIGNTIMESP=25959>Функция доступна только
      при использовании библиотеки интерфейса СТ Sybase, но не DB Sybase.
      </FONT></P>
      <P DESIGNTIMESP=25960><FONT face=Tahoma size=2 DESIGNTIMESP=25961>См. также
      sybaseji)in_client_severity(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25962><FONT face=Tahoma
      size=2 DESIGNTIMESP=25963>sybase_min_message_severity </FONT></P>
      <P DESIGNTIMESP=25964><FONT face=Tahoma size=2 DESIGNTIMESP=25965>Установка минимального
      уровня возвращаемых сообщений </FONT></P>
      <P DESIGNTIMESP=25966><FONT face=Tahoma size=2 DESIGNTIMESP=25967>void
      sybase_min_message_severity (int severity)</FONT></P>
      <P DESIGNTIMESP=25968><FONT face=Tahoma size=2 DESIGNTIMESP=25969>См. также
      sybase_min_error_seventy(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=25970><FONT face=Tahoma
      size=2 DESIGNTIMESP=25971>sybase_min_error_severity </FONT></P>
      <P DESIGNTIMESP=25972><FONT face=Tahoma size=2 DESIGNTIMESP=25973>Установка минимального
      уровня сообщаемых ошибок </FONT></P>
      <P DESIGNTIMESP=25974><FONT face=Tahoma size=2 DESIGNTIMESP=25975>void
      sybase_min_error_severity (int severity) </FONT></P>
      <P DESIGNTIMESP=25976><FONT face=Tahoma size=2 DESIGNTIMESP=25977>См. также
      sybase_rain_message_severity(). </FONT></P>
      <P class=Title_2 DESIGNTIMESP=25978><a name=10
       designtimesp=25979></A><FONT face=Tahoma size=2 DESIGNTIMESP=25980>Oracle </FONT></P>
      <P DESIGNTIMESP=25981><FONT face=Tahoma size=2 DESIGNTIMESP=25982>Примерный образец работы
      с БД: </FONT></P>
      <P class=list DESIGNTIMESP=25983><FONT face=Tahoma size=2 DESIGNTIMESP=25984>&lt;?php <br
       designtimesp=25985>putenv( "ORACLE_SIDORACLE"); <br
       designtimesp=25986>puterw("ORACLE_HOME=<br
       designtimesp=25987>/opt/oracle/oracle/8.0.3"); <br
       designtimesp=25988>$conn = ora_login("user_nam". "passwd"): <br
       designtimesp=25989>// Sconn - ora_login<br
       designtimesp=25990>("user_nam@server", "passwd"); <br
       designtimesp=25991>// или так $curs = ora_open($conn). <br
       designtimesp=25992>ora_comrntoff($conn):<br designtimesp=25993>$query
      = "select * from t"; <br designtimesp=25994>ora_parse($curs. $query);
      <br designtimesp=25995>ora_exec($curs): <br designtimesp=25996>//
      ora_do(Sconn. $query);<br designtimesp=25997>// краткая версия запроса
      <br designtimesp=25998>$ncols = orajiumcols(Scurs); <br
       designtimesp=25999>// число полей Snrows =<br
       designtimesp=26000>ora_numrows(Scurs);<br designtimesp=26001>// число
      записей <br designtimesp=26002>$hdr=TRUE: <br designtimesp=26003>while
      (ora_fetch(Scurs))<br designtimesp=26004>{ // следующая запись <br
       designtimesp=26005>if(Shdr) // выводить заголовок <br
       designtimesp=26006>только в начале <br designtimesp=26007>for (Si=0;
      $i&lt;$ncols: Si++) <br designtimesp=26008>pnntf("[Si] Its Us). \n".
      ora_columnname<br designtimesp=26009>($curs. $1). <br
       designtimesp=26010>ora_columntype(Scurs. $1))<br designtimesp=26011>:
      $hdr=FALSE. for ($1=0; Si<br designtimesp=26012>&lt;Sncols; $l++) <br
       designtimesp=26013>print ora_getcolumn(Scurs.$i). <br
       designtimesp=26014>"; "; // поле print "\n"; } ?&gt; </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26015><FONT face=Tahoma size=2 DESIGNTIMESP=26016>Ora_Logon
      </FONT></P>
      <P DESIGNTIMESP=26017><FONT face=Tahoma size=2 DESIGNTIMESP=26018>Подключение к серверу
      Oracle </FONT></P>
      <P DESIGNTIMESP=26019><FONT face=Tahoma size=2 DESIGNTIMESP=26020>int orajogon (string
      user, string password) </FONT></P>
      <P DESIGNTIMESP=26021><FONT face=Tahoma size=2 DESIGNTIMESP=26022>Возвращает дескриптор
      подключения к БД или FALSE — при ошибке. </FONT></P>
      <P DESIGNTIMESP=26023><FONT face=Tahoma size=2 DESIGNTIMESP=26024>Подключения также могут
      создаваться с использованием синтаксиса SQL*Net с указанием TNS имени
      пользователя user в виде: </FONT></P>
      <P class=list DESIGNTIMESP=26025><FONT face=Tahoma size=2 DESIGNTIMESP=26026>Sconn =
      Ora_Logon<br designtimesp=26027>( "system/user@host" . "pass" );
      </FONT></P>
      <P DESIGNTIMESP=26028><FONT face=Tahoma size=2 DESIGNTIMESP=26029>Если имеются не-ASCII
      символы, то должна быть установлена (до запуска сервера) переменная
      окружения (Oracle) NLS_LANG. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26030><FONT face=Tahoma
      size=2 DESIGNTIMESP=26031>Ora_Logoff </FONT></P>
      <P DESIGNTIMESP=26032><FONT face=Tahoma size=2 DESIGNTIMESP=26033>Закрытие подключения
      </FONT></P>
      <P DESIGNTIMESP=26034><FONT face=Tahoma size=2 DESIGNTIMESP=26035>int orajogoff (int
      connection)</FONT></P>
      <P DESIGNTIMESP=26036><FONT face=Tahoma size=2 DESIGNTIMESP=26037>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=26038><FONT face=Tahoma size=2 DESIGNTIMESP=26039>См. также ora_logon().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26040><FONT face=Tahoma
      size=2 DESIGNTIMESP=26041>Ora_pLogon </FONT></P>
      <P DESIGNTIMESP=26042><FONT face=Tahoma size=2 DESIGNTIMESP=26043>Создание устойчивого
      подключения к серверу Oracle</FONT></P>
      <P DESIGNTIMESP=26044><FONT face=Tahoma size=2 DESIGNTIMESP=26045>int ora_plogon (string
      user, string password)</FONT></P>
      <P DESIGNTIMESP=26046><FONT face=Tahoma size=2 DESIGNTIMESP=26047>См. также oraJogon().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26048><FONT face=Tahoma size=2 DESIGNTIMESP=26049>Ora_0pen
      </FONT></P>
      <P DESIGNTIMESP=26050><FONT face=Tahoma size=2 DESIGNTIMESP=26051>Открытие курсора
      </FONT></P>
      <P DESIGNTIMESP=26052><FONT face=Tahoma size=2 DESIGNTIMESP=26053>int ora_open (int
      connection) </FONT></P>
      <P DESIGNTIMESP=26054><FONT face=Tahoma size=2 DESIGNTIMESP=26055>Возвращает индекс курсора
      для подключения connection или FALSE -при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26056><FONT face=Tahoma size=2 DESIGNTIMESP=26057>Ora_Close
      </FONT></P>
      <P DESIGNTIMESP=26058><FONT face=Tahoma size=2 DESIGNTIMESP=26059>Закрытие курсора
      </FONT></P>
      <P DESIGNTIMESP=26060><FONT face=Tahoma size=2 DESIGNTIMESP=26061>int ora_close (int
      cursor) </FONT></P>
      <P DESIGNTIMESP=26062><FONT face=Tahoma size=2 DESIGNTIMESP=26063>Закрывает курсор,
      открытый ora_open(). </FONT></P>
      <P DESIGNTIMESP=26064><FONT face=Tahoma size=2 DESIGNTIMESP=26065>Возвращает TRUE или FALSE
      -при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26066><FONT face=Tahoma
      size=2 DESIGNTIMESP=26067>Ora_CommitOn </FONT></P>
      <P DESIGNTIMESP=26068><FONT face=Tahoma size=2 DESIGNTIMESP=26069>Разрешение автовыполнения
      запросов /» </FONT></P>
      <P DESIGNTIMESP=26070><FONT face=Tahoma size=2 DESIGNTIMESP=26071>int ora_commiton (int
      conn) { </FONT></P>
      <P DESIGNTIMESP=26072><FONT face=Tahoma size=2 DESIGNTIMESP=26073>Каждый запрос для
      подключения conn, выполняемый функцией ога_ ехес(), будет автоматически
      завершаться.</FONT></P>
      <P DESIGNTIMESP=26074><FONT face=Tahoma size=2 DESIGNTIMESP=26075>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26076><FONT face=Tahoma
      size=2 DESIGNTIMESP=26077>Ora_CommitOff </FONT></P>
      <P DESIGNTIMESP=26078><FONT face=Tahoma size=2 DESIGNTIMESP=26079>Запрет автовыполнения
      запросов </FONT></P>
      <P DESIGNTIMESP=26080><FONT face=Tahoma size=2 DESIGNTIMESP=26081>int ora commitoff (int
      conn) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26082><FONT face=Tahoma size=2 DESIGNTIMESP=26083>Ora
      _Commit </FONT></P>
      <P DESIGNTIMESP=26084><FONT face=Tahoma size=2 DESIGNTIMESP=26085>Завершение текущей
      транзакции int ora_commit (int conn) </FONT></P>
      <P DESIGNTIMESP=26086><FONT face=Tahoma size=2 DESIGNTIMESP=26087>Транзакцией является
      серия изменений в БД (запросов) после последнего завершения транзакции
      (если автозавершсние было отключено).</FONT></P>
      <P DESIGNTIMESP=26088><FONT face=Tahoma size=2 DESIGNTIMESP=26089>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26090><FONT face=Tahoma
      size=2 DESIGNTIMESP=26091>Ora_Rollback </FONT></P>
      <P DESIGNTIMESP=26092><FONT face=Tahoma size=2 DESIGNTIMESP=26093>Отмена транзакции
      </FONT></P>
      <P DESIGNTIMESP=26094><FONT face=Tahoma size=2 DESIGNTIMESP=26095>int ora_rolI back (int
      connection) </FONT></P>
      <P DESIGNTIMESP=26096><FONT face=Tahoma size=2 DESIGNTIMESP=26097>Функция, обратная
      ora_commit(). </FONT></P>
      <P DESIGNTIMESP=26098><FONT face=Tahoma size=2 DESIGNTIMESP=26099>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26100><FONT face=Tahoma size=2 DESIGNTIMESP=26101>Ora_Parse
      </FONT></P>
      <P DESIGNTIMESP=26102><FONT face=Tahoma size=2 DESIGNTIMESP=26103>Интерпретация SQL-запроса
      </FONT></P>
      <P DESIGNTIMESP=26104><FONT face=Tahoma size=2 DESIGNTIMESP=26105>int ora_parse (int
      cursor_ind, string sql_statement, int defer) </FONT></P>
      <P DESIGNTIMESP=26106><FONT face=Tahoma size=2 DESIGNTIMESP=26107>Подготавливает для
      исполнения запрос SQL или блок PL/SQL и связывает с курсором.</FONT></P>
      <P DESIGNTIMESP=26108><FONT face=Tahoma size=2 DESIGNTIMESP=26109>Возвращает 0 или -1 - при
      ошибке. </FONT></P>
      <P DESIGNTIMESP=26110><FONT face=Tahoma size=2 DESIGNTIMESP=26111>См. также: ога_ехес(),
      ora_fetch() и ora_do(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26112><FONT face=Tahoma size=2 DESIGNTIMESP=26113>Ога_Ехес
      </FONT></P>
      <P DESIGNTIMESP=26114><FONT face=Tahoma size=2 DESIGNTIMESP=26115>Исполнение
      подготовленного запроса </FONT></P>
      <P DESIGNTIMESP=26116><FONT face=Tahoma size=2 DESIGNTIMESP=26117>int ora_exec (int cursor)
      </FONT></P>
      <P DESIGNTIMESP=26118><FONT face=Tahoma size=2 DESIGNTIMESP=26119>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=26120><FONT face=Tahoma size=2 DESIGNTIMESP=26121>См. также: ora_parse(),
      ora_fetch() и ora_do(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26122><FONT face=Tahoma size=2 DESIGNTIMESP=26123>Ora_Do
      </FONT></P>
      <P DESIGNTIMESP=26124><FONT face=Tahoma size=2 DESIGNTIMESP=26125>Одновременное выполнение
      команд Parse; Exec, Fetch </FONT></P>
      <P DESIGNTIMESP=26126><FONT face=Tahoma size=2 DESIGNTIMESP=26127>int ora_do (int conn,
      string query) </FONT></P>
      <P DESIGNTIMESP=26128><FONT face=Tahoma size=2 DESIGNTIMESP=26129>Функция является
      комбинацией трех функций: ora_parse(), ora_exec(), ora_fetch().</FONT></P>
      <P DESIGNTIMESP=26130><FONT face=Tahoma size=2 DESIGNTIMESP=26131>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=26132><FONT face=Tahoma size=2 DESIGNTIMESP=26133>См. также: ora_parse(),
      ora_exec() и ora_fetch(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26134><FONT face=Tahoma size=2 DESIGNTIMESP=26135>Ora_Bind
      </FONT></P>
      <P DESIGNTIMESP=26136><FONT face=Tahoma size=2 DESIGNTIMESP=26137>Связывание переменной РНР
      с SQL-параметром Oracle </FONT></P>
      <P DESIGNTIMESP=26138><FONT face=Tahoma size=2 DESIGNTIMESP=26139>int ora_bind (int cursor,
      string PHP_var_name, string SQL_param_name, int length [, int type])
      </FONT></P>
      <P DESIGNTIMESP=26140><FONT face=Tahoma size=2 DESIGNTIMESP=26141>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=26142><FONT face=Tahoma size=2 DESIGNTIMESP=26143>SQL параметр должен
      указываться в виде ":name". Необязательным аргументом type можно указать
      вид SQL параметра (входящий, выходящий): IN/OUT (0, по умолчанию), in (1)
      или out (2). В РНР 3.0.1 можно использовать вместо цифр константы:
      ORA_BIND_INOUT, ORA_ BINDJN и ORA_BIND_OUT. </FONT></P>
      <P DESIGNTIMESP=26144><FONT face=Tahoma size=2 DESIGNTIMESP=26145>Функция должна вызываться
      после ora_parse() и до ога_ехес(). </FONT></P>
      <P class=list DESIGNTIMESP=26146><FONT face=Tahoma size=2 DESIGNTIMESP=26147>&lt;?php <br
       designtimesp=26148>ora_parse(Scurs. "declare tmp INTEGER; " <br
       designtimesp=26149>"begin tmp :- :in; :out :- tmp; :x := 7.77;
      end;"):<br designtimesp=26150>ora_bind($curs. "result". ":x". $len. 2).
      <br designtimesp=26151>ora_bind($curs. "input", "in". 5. 1); <br
       designtimesp=26152>ora_bind($curs. "output". ";out". 5. 2).<br
       designtimesp=26153>Sinput = 765; ora_exec($curs); <br
       designtimesp=26154>echo "Result; tresult; Out: Soutput: In: $input":<br
       designtimesp=26155>?&gt; </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26156><FONT face=Tahoma size=2 DESIGNTIMESP=26157>Ora_Error

      </FONT></P>
      <P DESIGNTIMESP=26158><FONT face=Tahoma size=2 DESIGNTIMESP=26159>Получение сообщения об
      ошибке Oracle </FONT></P>
      <P DESIGNTIMESP=26160><FONT face=Tahoma size=2 DESIGNTIMESP=26161>string Ora_Error (int
      cursor_or_connection) </FONT></P>
      <P DESIGNTIMESP=26162><FONT face=Tahoma size=2 DESIGNTIMESP=26163>Сообщение возвращается в
      виде строчек вида XXX-NNNNN, где XXX означает место возникновения ошибки,
      a NNNNN — причину. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26164><FONT face=Tahoma
      size=2 DESIGNTIMESP=26165>Ora_ErrorCode </FONT></P>
      <P DESIGNTIMESP=26166><FONT face=Tahoma size=2 DESIGNTIMESP=26167>Получение кода ошибки
      Oracle </FONT></P>
      <P DESIGNTIMESP=26168><FONT face=Tahoma size=2 DESIGNTIMESP=26169>int Ora_ErrorCode (int
      cursor_or_connection) </FONT></P>
      <P DESIGNTIMESP=26170><FONT face=Tahoma size=2 DESIGNTIMESP=26171>Возвращает численное
      значение ошибки, произошедшей при последней операции. </FONT></P>
      <P DESIGNTIMESP=26172><FONT face=Tahoma size=2 DESIGNTIMESP=26173>О означает отсутствие
      ошибки. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26174><FONT face=Tahoma
      size=2 DESIGNTIMESP=26175>Ora_Numcols </FONT></P>
      <P DESIGNTIMESP=26176><FONT face=Tahoma size=2 DESIGNTIMESP=26177>Получение числа полей,
      возвращенных запросом </FONT></P>
      <P DESIGNTIMESP=26178><FONT face=Tahoma size=2 DESIGNTIMESP=26179>int orajiumcols (int
      cursorjind) </FONT></P>
      <P DESIGNTIMESP=26180><FONT face=Tahoma size=2 DESIGNTIMESP=26181>См. также: ora_parse(),
      ora_exec(), ora_fetch() и ora_do(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26182><FONT face=Tahoma
      size=2 DESIGNTIMESP=26183>Ora_Numrows </FONT></P>
      <P DESIGNTIMESP=26184><FONT face=Tahoma size=2 DESIGNTIMESP=26185>Получение числа записей,
      возвращенных запросом </FONT></P>
      <P DESIGNTIMESP=26186><FONT face=Tahoma size=2 DESIGNTIMESP=26187>int orajiumrows (int
      cursor_ind) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26188><FONT face=Tahoma size=2 DESIGNTIMESP=26189>Ora_Fetch
      </FONT></P>
      <P DESIGNTIMESP=26190><FONT face=Tahoma size=2 DESIGNTIMESP=26191>Получение записи
      </FONT></P>
      <P DESIGNTIMESP=26192><FONT face=Tahoma size=2 DESIGNTIMESP=26193>int ora_fetch (int
      cursor) </FONT></P>
      <P DESIGNTIMESP=26194><FONT face=Tahoma size=2 DESIGNTIMESP=26195>Возвращает TRUE или FALSE
      — при ошибке или если записей больше не имеется. </FONT></P>
      <P DESIGNTIMESP=26196><FONT face=Tahoma size=2 DESIGNTIMESP=26197>См. также: ora_parse(),
      ora_exec() и ora_do(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26198><FONT face=Tahoma
      size=2 DESIGNTIMESP=26199>Ora_Fetch_lnto </FONT></P>
      <P DESIGNTIMESP=26200><FONT face=Tahoma size=2 DESIGNTIMESP=26201>Получение записи в
      массиве </FONT></P>
      <P DESIGNTIMESP=26202><FONT face=Tahoma size=2 DESIGNTIMESP=26203>int ora_fetch_into (int
      cursor, array result [, int flags]) </FONT></P>
      <P class=list DESIGNTIMESP=26204><FONT face=Tahoma size=2 DESIGNTIMESP=26205>&lt;?php
      array($results); <br designtimesp=26206>ora_fetch_into($cursor.
      &amp;$results):<br designtimesp=26207>echo $results[0]. $results[ll:
      ?&gt; </FONT></P>
      <P DESIGNTIMESP=26208><FONT face=Tahoma size=2 DESIGNTIMESP=26209>Заметьте, что массив
      необходимо передавать по ссылке. </FONT></P>
      <P DESIGNTIMESP=26210><FONT face=Tahoma size=2 DESIGNTIMESP=26211>См. также: ora_parse(),
      ora_exec(), ora_fetch() и ora_do(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26212><FONT face=Tahoma
      size=2 DESIGNTIMESP=26213>Ora_GetColumn </FONT></P>
      <P DESIGNTIMESP=26214><FONT face=Tahoma size=2 DESIGNTIMESP=26215>Получение данных поля
      записи </FONT></P>
      <P DESIGNTIMESP=26216><FONT face=Tahoma size=2 DESIGNTIMESP=26217>mixed ora_getcolumn (int
      cursor, mixed column) </FONT></P>
      <P DESIGNTIMESP=26218><FONT face=Tahoma size=2 DESIGNTIMESP=26219>Возвращает значение поля
      (или результата SQL/PL функции) или FALSE — при ошибке. Заметьте, что
      возвращаемые данные могут иметь значения: NULL, "", О, "О". </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26220><FONT face=Tahoma
      size=2 DESIGNTIMESP=26221>Ora_ColumnName </FONT></P>
      <P DESIGNTIMESP=26222><FONT face=Tahoma size=2 DESIGNTIMESP=26223>Получение имени поля
      </FONT></P>
      <P DESIGNTIMESP=26224><FONT face=Tahoma size=2 DESIGNTIMESP=26225>string Ora_ColumnName
      (int cursor, int column) Возвращает имя в верхнем регистре. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26226><FONT face=Tahoma
      size=2 DESIGNTIMESP=26227>Ora_ColumnSize </FONT></P>
      <P DESIGNTIMESP=26228><FONT face=Tahoma size=2 DESIGNTIMESP=26229>Получение размера поля
      </FONT></P>
      <P DESIGNTIMESP=26230><FONT face=Tahoma size=2 DESIGNTIMESP=26231>int Ora_ColumnSize (int
      cursor, int Column) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26232><FONT face=Tahoma
      size=2 DESIGNTIMESP=26233>Ora_ColumnType </FONT></P>
      <P DESIGNTIMESP=26234><FONT face=Tahoma size=2 DESIGNTIMESP=26235>Получение типа поля
      </FONT></P>
      <P DESIGNTIMESP=26236><FONT face=Tahoma size=2 DESIGNTIMESP=26237>string Ora_ColumnType
      (int cursor, int column)</FONT></P>
      <P DESIGNTIMESP=26238><FONT face=Tahoma size=2 DESIGNTIMESP=26239>Возвращаемая строка может
      иметь следующие значения: </FONT></P>
      <ul designtimesp=26240>
        <li designtimesp=26241><FONT face=Tahoma size=2 DESIGNTIMESP=26242>«VARCHAR2»; </FONT>
        <li designtimesp=26243><FONT face=Tahoma size=2 DESIGNTIMESP=26244>«VARCHAR»; </FONT>
        <li designtimesp=26245><FONT face=Tahoma size=2 DESIGNTIMESP=26246>«CHAR»; </FONT>
        <li designtimesp=26247><FONT face=Tahoma size=2 DESIGNTIMESP=26248>«NUMBER»; </FONT>
        <li designtimesp=26249><FONT face=Tahoma size=2 DESIGNTIMESP=26250>«LONG»; </FONT>
        <li designtimesp=26251><FONT face=Tahoma size=2 DESIGNTIMESP=26252>«LONG RAW»; </FONT>
        <li designtimesp=26253><FONT face=Tahoma size=2 DESIGNTIMESP=26254>«ROWID»; </FONT>
        <li designtimesp=26255><FONT face=Tahoma size=2 DESIGNTIMESP=26256>«DATE»; </FONT>
        <li designtimesp=26257><FONT face=Tahoma size=2 DESIGNTIMESP=26258>«CURSOR».
      </FONT></LI></UL>
      <P class=Title_2 DESIGNTIMESP=26259><a name=11
       designtimesp=26260></A><FONT face=Tahoma size=2 DESIGNTIMESP=26261>Oracle 8 </FONT></P>
      <P DESIGNTIMESP=26262><FONT face=Tahoma size=2 DESIGNTIMESP=26263>Эта группа функций
      позволяет обращаться к серверам БД Oracle 8 и Oracle 7, используя Oracle 8
      Call-Interface (OCI8). Для этого требуются клиентские библиотеки Oracle 8.
      </FONT></P>
      <P DESIGNTIMESP=26264><FONT face=Tahoma size=2 DESIGNTIMESP=26265>Это расширение более
      функционально, нежели стандартное; оно поддерживает связывание переменных
      РНР с переменными Oracle, имеет полную поддержку типов LOB, FILE, ROWID и
      позволяет использовать определяемые пользователем переменные. </FONT></P>
      <P DESIGNTIMESP=26266><FONT face=Tahoma size=2 DESIGNTIMESP=26267>До использования этого
      расширения необходимо установить параметры окружения Oracle. Это включает
      установку следующих системных переменных: </FONT></P>
      <ul designtimesp=26268>
        <li designtimesp=26269><FONT face=Tahoma size=2 DESIGNTIMESP=26270>ORACLEJOME; </FONT>
        <li designtimesp=26271><FONT face=Tahoma size=2 DESIGNTIMESP=26272>ORACLEJID; </FONT>
        <li designtimesp=26273><FONT face=Tahoma size=2 DESIGNTIMESP=26274>LD_PRELOAD; </FONT>
        <li designtimesp=26275><FONT face=Tahoma size=2 DESIGNTIMESP=26276>LD_LIBRARY_PATH;
        </FONT>
        <li designtimesp=26277><FONT face=Tahoma size=2 DESIGNTIMESP=26278>NLS_LANG; </FONT>
        <li designtimesp=26279><FONT face=Tahoma size=2 DESIGNTIMESP=26280>ORAJLS33.
      </FONT></LI></UL>
      <P DESIGNTIMESP=26281><FONT face=Tahoma size=2 DESIGNTIMESP=26282>После этого необходимо
      добавить в группу пользователей oracle пользователя (обычно nobody или
      www), от имени которого запускается РНР (web-сервер). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26283><FONT face=Tahoma
      size=2 DESIGNTIMESP=26284>OCIServerVersion </FONT></P>
      <P DESIGNTIMESP=26285><FONT face=Tahoma size=2 DESIGNTIMESP=26286>Получение строки
      информации сервера </FONT></P>
      <P DESIGNTIMESP=26287><FONT face=Tahoma size=2 DESIGNTIMESP=26288>string OCIServerVersion
      (int conn) </FONT></P>
      <P class=list DESIGNTIMESP=26289><FONT face=Tahoma size=2 DESIGNTIMESP=26290>&lt;?php <br
       designtimesp=26291>$conn = OCILogonC'scott"."tiger"); <br
       designtimesp=26292>print "Server Version " <br designtimesp=26293>.
      OCIServerVersionUconn): <br designtimesp=26294>OCILogOff($conn): ?&gt;
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26295><FONT face=Tahoma size=2 DESIGNTIMESP=26296>OCILogon
      </FONT></P>
      <P DESIGNTIMESP=26297><FONT face=Tahoma size=2 DESIGNTIMESP=26298>Подключение к серверу
      Oracle </FONT></P>
      <P DESIGNTIMESP=26299><FONT face=Tahoma size=2 DESIGNTIMESP=26300>int OCILogon (string
      username, string password [, string db]) </FONT></P>
      <P DESIGNTIMESP=26301><FONT face=Tahoma size=2 DESIGNTIMESP=26302>Возвращает дескриптор
      подключения, необходимый для указания для большинства функций OCI. В
      третьем аргументе можно указать либо константное имя локальной БД, либо
      ссылку на раздел в файле tnsnames.ora; если этот аргумент не указан, РНР
      будет использовать переменные окружения ORACLE_SID или TWO_TASK (tnsnames.
      ога) для определения, к какой БД следует подключиться. </FONT></P>
      <P DESIGNTIMESP=26303><FONT face=Tahoma size=2 DESIGNTIMESP=26304>Подключения, созданные
      этой функцией, становятся разделяемыми на уровне сценария, что означает,
      что все команды COMMIT и ROLLBACK будут применяться ко всем транзакциям,
      даже если они принадлежат разным подключениям (см. пример ниже).
      </FONT></P>
      <P DESIGNTIMESP=26305><FONT face=Tahoma size=2 DESIGNTIMESP=26306>См. также: OCIPLogonz() и
      OCINLogon(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26307><FONT face=Tahoma size=2 DESIGNTIMESP=26308>OCINLogon
      </FONT></P>
      <P DESIGNTIMESP=26309><FONT face=Tahoma size=2 DESIGNTIMESP=26310>Создание изолированного
      подключения к БД Oracle </FONT></P>
      <P DESIGNTIMESP=26311><FONT face=Tahoma size=2 DESIGNTIMESP=26312>int OCINLogon (string
      username, string password [, string db]) </FONT></P>
      <P DESIGNTIMESP=26313><FONT face=Tahoma size=2 DESIGNTIMESP=26314>Функция сходна с
      OCILogon(), но отличается тем, что все onepai COMMIT и ROLLBACK
      применяются только к транзакциям укаг ною подключения. </FONT></P>
      <P DESIGNTIMESP=26315><FONT face=Tahoma size=2 DESIGNTIMESP=26316>Пример демонстрирует
      разделение подключений. </FONT></P>
      <P DESIGNTIMESP=26317><span class=list designtimesp=26318><FONT
      face=Tahoma size=2 DESIGNTIMESP=26319>&lt;?php $db = "": <br designtimesp=26320>$cl =
      ocilogonC'scott". "tiger". $db): <br designtimesp=26321>/'$c2 =
      ocilogonC'scott"."tiger".$db);<br designtimesp=26322>// для сравнения
      <br designtimesp=26323>$c2 = ocinlogonC'scott". "tiger".$db): <br
       designtimesp=26324>function create_table(Sconn) <br
       designtimesp=26325>{ Sstmt = ociparse($conn.<br
       designtimesp=26326>"create table scott hallo (test <br
       designtimesp=26327>varchar2(64))"); <br
       designtimesp=26328>ociexecutetSstmt): <br designtimesp=26329>echo
      Sconn." Таблица создана \n\n". , } <br designtimesp=26330>function
      drop_table($conn) <br designtimesp=26331>{ Sstmt =
      ociparse($conn."drop<br designtimesp=26332>table scott hallo"): <br
       designtimesp=26333>ociexecute($stmt). <br designtimesp=26334>echo
      Sconn." dropped table\n\n": ! } <br designtimesp=26335>function
      insert_data(Sconn) <br designtimesp=26336>{ Sstmt =
      ociparse(Sconn."insert<br designtimesp=26337>into scott.hallo <br
       designtimesp=26338>valuest'Sconn' [j ' ' | to_char<br
       designtimesp=26339>(sysdate. 'DD-MON-YY HH24:MI:SS'))"): <br
       designtimesp=26340>ocie/ecute(Sstmt.OCI_DEFAULT). <br
       designtimesp=26341>echo Sconn." inserted hallo\n\n": } <br
       designtimesp=26342>function delete_data(Sconn) <br
       designtimesp=26343>{ Sstmt = ociparse<br
       designtimesp=26344>(Sconn."delete from scott.hallo"); <br
       designtimesp=26345>ociexecute(Sstmt.OCI_DEFAULT); <br
       designtimesp=26346>echo Sconn." deleted hallo\n\n"; } <br
       designtimesp=26347>function commit(Sconn)<br designtimesp=26348>{
      ocicommit(Sconn); <br designtimesp=26349>echo Sconn." committed\n\n": }
      <br designtimesp=26350>function roll back(Sconn) <br
       designtimesp=26351>{ ociroll back(Sconn): <br designtimesp=26352>echo
      Sconn " rollback\n\n"; } <br designtimesp=26353>function
      select_data($conn) <br designtimesp=26354>{ Sstmt = ociparse<br
       designtimesp=26355>($conn."select * from scott.hallo"): <br
       designtimesp=26356>ociexecute($stmt.OCI_DEFAULT). <br
       designtimesp=26357>echo $conn."---selecting\n\n"; <br
       designtimesp=26358>while (ocifetch($stmt)) <br designtimesp=26359>echo
      Sconn." &lt;".ociresult<br designtimesp=26360>(Sstmt."TEST")."&gt;\n\n":
      <br designtimesp=26361>echo Sconn "—done\n\n"; } <br
       designtimesp=26362>create_table($cl); insert_data($cl): <br
       designtimesp=26363>selectjJata(tcl): select_data($c2): <br
       designtimesp=26364>roliback(Scl): <br
       designtimesp=26365>select_data($cl). select_data($c2): <br
       designtimesp=26366>insert_data($c2): согап t($c2); <br
       designtimesp=26367>select_data($cl). <br
       designtimesp=26368>delete_data($cl): select_data($cl): <br
       designtimesp=26369>select_data($c2). commit($cl): <br
       designtimesp=26370>select_data(Scl): select_data($c2). <br
       designtimesp=26371>drop_table($cl): ?&gt; </FONT></SPAN></P>
      <P DESIGNTIMESP=26372><FONT face=Tahoma size=2 DESIGNTIMESP=26373>См. также: OCILogon() и
      OCIPLogon(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26374><FONT face=Tahoma size=2 DESIGNTIMESP=26375>OCILogOff
      </FONT></P>
      <P DESIGNTIMESP=26376><FONT face=Tahoma size=2 DESIGNTIMESP=26377>Отключение от Oracle
      </FONT></P>
      <P DESIGNTIMESP=26378><FONT face=Tahoma size=2 DESIGNTIMESP=26379>int OCILogOff (int
      connection) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26380><FONT face=Tahoma size=2 DESIGNTIMESP=26381>OCIPLogon
      </FONT></P>
      <P DESIGNTIMESP=26382><FONT face=Tahoma size=2 DESIGNTIMESP=26383>Создание устойчивого
      подключения к Oracle </FONT></P>
      <P DESIGNTIMESP=26384><FONT face=Tahoma size=2 DESIGNTIMESP=26385>int OCIPLogon (string
      username, string password [, string db]) </FONT></P>
      <P DESIGNTIMESP=26386><FONT face=Tahoma size=2 DESIGNTIMESP=26387>Функция сходна с
      OCILogon(), но отличается тем, что подключение не закрывается после
      завершения сценария и остается действительным для дальнейшего
      использования. </FONT></P>
      <P DESIGNTIMESP=26388><FONT face=Tahoma size=2 DESIGNTIMESP=26389>См. также: OCILogon() и
      OCINLogon(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26390><FONT face=Tahoma
      size=2 DESIGNTIMESP=26391>OCIInternalDebug </FONT></P>
      <P DESIGNTIMESP=26392><FONT face=Tahoma size=2 DESIGNTIMESP=26393>Разрешение или запрещение
      внутренней отладки void OCIInternalDebug (int onoff) </FONT></P>
      <P DESIGNTIMESP=26394><FONT face=Tahoma size=2 DESIGNTIMESP=26395>По умолчанию отладка
      запрещена. Указание в аргументе значения О выключает отладку, а 1 —
      включает. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26396><FONT face=Tahoma
      size=2 DESIGNTIMESP=26397>OCIDefineByName </FONT></P>
      <P DESIGNTIMESP=26398><FONT face=Tahoma size=2 DESIGNTIMESP=26399>Назначение PHP-переменной
      для возвращения значения из запроса SELECT </FONT></P>
      <P DESIGNTIMESP=26400><FONT face=Tahoma size=2 DESIGNTIMESP=26401>int OCIDefineByName (int
      stmt, string ColumnName, mixed variable [, int type]) </FONT></P>
      <P DESIGNTIMESP=26402><FONT face=Tahoma size=2 DESIGNTIMESP=26403>Используется при
      необходимости возвращения запросом выборки stmt данных поля ColumnName в
      переменную variable (тип возвращаемых данных type можно не указывать). Имя
      поля должно быть указано в верхнем регистре (в запросе регистр не важен).
      Если вы определяете переменную, отсутствующую в запросе, ошибки не
      возникает. </FONT></P>
      <P DESIGNTIMESP=26404><FONT face=Tahoma size=2 DESIGNTIMESP=26405>Типы абстрактных данных
      (LOB/ROWID/BFILE) необходимо предварительно инициализировать функцией
      OCINewDescriptor(). </FONT></P>
      <P DESIGNTIMESP=26406><FONT face=Tahoma size=2 DESIGNTIMESP=26407>См. также
      OCIBindByName(). </FONT></P>
      <P class=list DESIGNTIMESP=26408><FONT face=Tahoma size=2 DESIGNTIMESP=26409>&lt;?php <br
       designtimesp=26410>Sconn = OCILogonC'scott". "tiger"), <br
       designtimesp=26411>Istmt = OCIParse($conn."select empno. <br
       designtimesp=26412>ename from emp"): /* the define<br
       designtimesp=26413>MUST be done BEFORE odexecute! */ <br
       designtimesp=26414>OCIDefineByNametSstmt."EMPNO",Sempno);<br
       designtimesp=26415>OCIDefineByNametSstmt."ENAME".Sename): <br
       designtimesp=26416>OCIExecute($stmt): <br designtimesp=26417>while
      (OCIFetch(Sstmt)) <br designtimesp=26418>echo "empno:".$empno.".
      ename:".Sename."\n"; <br designtimesp=26419>OCIFreeStatement($stmt): <br
       designtimesp=26420>OCILogoff(Sconn): ?&gt; </FONT>
      <P class=Text_Bold DESIGNTIMESP=26421><FONT face=Tahoma
      size=2 DESIGNTIMESP=26422>OCIBindByName </FONT></P>
      <P DESIGNTIMESP=26423><FONT face=Tahoma size=2 DESIGNTIMESP=26424>Связывание переменной РНР
      с Oracle </FONT></P>
      <P DESIGNTIMESP=26425><FONT face=Tahoma size=2 DESIGNTIMESP=26426>int OCIBindByName (int
      stmt, string ph_name, mixed invariable, int length [, int type])
      </FONT></P>
      <P DESIGNTIMESP=26427><FONT face=Tahoma size=2 DESIGNTIMESP=26428>Назначает переменную PHP
      variable для ввода-вывода данных ир операциях с Oracle в качестве
      параметра phjiame. Аргумент length устанавливает размер данных переменной
      в байтах; значение -1 указывает, что размер определяется автоматически.
      </FONT></P>
      <P DESIGNTIMESP=26429><FONT face=Tahoma size=2 DESIGNTIMESP=26430>Для операций с
      абстрактными типами (LOB/ROWID/BFILE) прел варитслыю необходимо
      инициализировать их дескриптор функци ей OCINewDescriptorO. Для этих типов
      размер length должен быт указан значением -1. Тип type может определяться
      следующим константами: OCI_B_FILE (двоичный файл), OCI_B_CFILE (символьны
      файл), OCI_B_CLOB (символьный LOB), OCI_B_BLOB (двоичный LOB) OCI_B_ROWIO
      (ROWID). </FONT></P>
      <P class=list DESIGNTIMESP=26431><FONT face=Tahoma size=2 DESIGNTIMESP=26432>&lt;?php <br
       designtimesp=26433>$sth - OCIParse ( $dbh. "begin<br
       designtimesp=26434>sp_newaddress( -addressjd. <br
       designtimesp=26435>'Sfirstname'. <br designtimesp=26436>'Slastname'.
      'Scompany'. '$addressl'.<br designtimesp=26437>'$address2'. 'Scity'.
      'Sstate'. <br designtimesp=26438>'$postalcode'. 'Scouniry'. :error_code
      );<br designtimesp=26439>end;" ). <br designtimesp=26440>// Вызвать
      хранимую процедуру <br designtimesp=26441>spjiewaddress.<br
       designtimesp=26442>с параметрами :address_id // <br
       designtimesp=26443>(.входной-выходной параметр) и <br
       designtimesp=26444>:error_code being &lt;выходной). <br
       designtimesp=26445>OCIBindByName ( $$th. " :address_id".<br
       designtimesp=26446>Saddrjd. 10 ): OCIBindByName <br
       designtimesp=26447>( $sth. " :error__code". Serrorcode. 10 ); <br
       designtimesp=26448>OCIExecute ( $sth ): ?&gt; <br
       designtimesp=26449>/y**********Jc*********************x********* <br
       designtimesp=26450>&lt;?php Sconn - OCILogonC'scott"."tiger"), <br
       designtimesp=26451>Sstmt = OCIParse($conn."insert into enp<br
       designtimesp=26452>(empno. ename) ". <br designtimesp=26453>"values
      (:empno,:ename!<br designtimesp=26454>1 returning ROWID into :nd"): <br
       designtimesp=26455>Sdata = arraydlll =&gt; <br
       designtimesp=26456>"Lar-y" 2222 =&gt; "Bill". 3333 =&gt; "Jim"),<br
       designtimesp=26457>Srowid = OCINewDescnptor<br
       designtimesp=26458>($conn.OCI_D_ROWID); <br designtimesp=26459>ОС
      IBindByName(Istmt.":empno"<br designtimesp=26460>.&amp;$empno.32).
      OCIBipdByName<br designtimesp=26461>($stmt."-ename".&amp;$ename.32), <br
       designtimesp=26462>OCIBindByNametS<br
       designtimesp=26463>stmt.":rid".&amp;$rowid.-1.0CI_B_ROWID): <br
       designtimesp=26464>Supdate = OCIParse($conn.<br
       designtimesp=26465>"update emp set sal = :sal where <br
       designtimesp=26466>ROWID = :nd"): OCIBmdByNaTO<br
       designtimesp=26467>($Update.":nd".&amp;$rowid.-1.0CI_6_ROWID).<br
       designtimesp=26468>OCIBindBy<br
       designtimesp=26469>Namecsupdate.":sal",&amp;$sal.32) <br
       designtimesp=26470>$sal - 10000. <br designtimesp=26471>while
      nist($enpno..$enarae) <br designtimesp=26472>= each($data)) { OCIExecute
      <br designtimesp=26473>($stmt). OCIExecute($Update); <br
       designtimesp=26474>$rowid-&gt;free(&gt; OCIFreeStatement<br
       designtimesp=26475>($update): OC!FrepStatement($stmt). <br
       designtimesp=26476>$stmt = OCIParSe($conn."select *<br
       designtimesp=26477>from emp <br designtimesp=26478>where empno in <br
       designtimesp=26479>(1111.2222,3333)"): <br
       designtimesp=26480>OCIExecute($stmt); <br designtimesp=26481>while
      (OCIFetchInto<br designtimesp=26482>($stmt.&amp;$arr.OCI_ASSOC))*<br
       designtimesp=26483>var_dump($grr). <br
       designtimesp=26484>OCIFreeStatement($stmt). <br
       designtimesp=26485>Sstmt - OCIParse($conn.<br
       designtimesp=26486>"delete from emp <br designtimesp=26487>where empno
      in (1111.2222.3333)"); <br designtimesp=26488>OCIExecute($stmt). <br
       designtimesp=26489>OCIFreeStatement($stmt): <br
       designtimesp=26490>OCIlogoff($conn) ?&gt; </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26491><FONT face=Tahoma size=2 DESIGNTIMESP=26492>OCI Parse
      </FONT></P>
      <P DESIGNTIMESP=26493><FONT face=Tahoma size=2 DESIGNTIMESP=26494>Подготовка запроса к
      выполнению </FONT></P>
      <P DESIGNTIMESP=26495><FONT face=Tahoma size=2 DESIGNTIMESP=26496>int OCIParse (jnt conn,
      strint query) </FONT></P>
      <P DESIGNTIMESP=26497><FONT face=Tahoma size=2 DESIGNTIMESP=26498>Возвращает дескриптор
      запроса query для подключения conn или FALSE - при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26499><FONT face=Tahoma
      size=2 DESIGNTIMESP=26500>OCIExecute </FONT></P>
      <P DESIGNTIMESP=26501><FONT face=Tahoma size=2 DESIGNTIMESP=26502>Выполнение запроса
      </FONT></P>
      <P DESIGNTIMESP=26503><FONT face=Tahoma size=2 DESIGNTIMESP=26504>int OCIExecute (int
      statement [, int mode]) </FONT></P>
      <P DESIGNTIMESP=26505><FONT face=Tahoma size=2 DESIGNTIMESP=26506>Выполняет счапрос,
      предварительно подготовленный OCIParseO. Аргументом mode можно указать
      режим исполнения (по умолчанию OCI_COMMIT_Olsj_sUCCESS); если не требуется
      автоматическое выполнение запроса, указывайте OCI_DEFAULT. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26507><FONT face=Tahoma size=2 DESIGNTIMESP=26508>OCICommit
      </FONT></P>
      <P DESIGNTIMESP=26509><FONT face=Tahoma size=2 DESIGNTIMESP=26510>Завершение незавершенных
      транзакций </FONT></P>
      <P DESIGNTIMESP=26511><FONT face=Tahoma size=2 DESIGNTIMESP=26512>int OCICommit (int
      connection) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26513><FONT face=Tahoma
      size=2 DESIGNTIMESP=26514>OCIRollback </FONT></P>
      <P DESIGNTIMESP=26515><FONT face=Tahoma size=2 DESIGNTIMESP=26516>Отмена незавершенных
      транзакций </FONT></P>
      <P DESIGNTIMESP=26517><FONT face=Tahoma size=2 DESIGNTIMESP=26518>int OCIRollback (int
      connection) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26519><FONT face=Tahoma
      size=2 DESIGNTIMESP=26520>OCINewDescriptor </FONT></P>
      <P DESIGNTIMESP=26521><FONT face=Tahoma size=2 DESIGNTIMESP=26522>Инициализация дескриптора
      LOB/FILE </FONT></P>
      <P DESIGNTIMESP=26523><FONT face=Tahoma size=2 DESIGNTIMESP=26524>string OCINewDescriptor
      (int connection [, int type]) </FONT></P>
      <P DESIGNTIMESP=26525><FONT face=Tahoma size=2 DESIGNTIMESP=26526>Выделяет ресурсы,
      необходимые для хранения дескрипторов или LOB-локаторов. Тип можно указать
      в аргументе type: OCI_D_FILE, OCI_DJ_OB (по умолчанию), OCI_D_ROWID. Для
      объектов LOB доступны методы load, save и savefile, а для BFILE — только
      load. </FONT></P>
      <P class=list DESIGNTIMESP=26527><FONT face=Tahoma size=2 DESIGNTIMESP=26528>&lt;?php //
      фрагмент for retrieve<br designtimesp=26529>data use (after fetch) <br
       designtimesp=26530>Sresult = OCIResult($stmt, $n): <br
       designtimesp=26531>if ds_object (Sresult)) <br
       designtimesp=26532>Sresult = Sresult-&gt;load(): <br
       designtimesp=26533>II For INSERT or UPDATE<br
       designtimesp=26534>statement use <br designtimesp=26535>$sql = "insert
      into table (fieldl. field2)<br designtimesp=26536>values (fieldl =
      'value'. <br designtimesp=26537>field? = empty_clob()) returning<br
       designtimesp=26538>fie!d2 into :field2"; OC!Parse<br
       designtimesp=26539>($conn. $sql): Sclob = <br
       designtimesp=26540>OCINewDescriptor($conn. OCIJM-OB).<br
       designtimesp=26541>OCIBindByName <br designtimesp=26542>($stmt.
      ":field2". &amp;$clob. -1,<br designtimesp=26543>OCI_B_CL03).
      OCIExecute<br designtimesp=26544>($stmt. OCI_DEFAULT):<br
       designtimesp=26545>$clob-&gt;save ("some text"). ?&gt; <br
       designtimesp=26546>&lt;?php // Сценарий вызывается <br
       designtimesp=26547>формой HTML, передавая<br
       designtimesp=26548>параметры: <br designtimesp=26549>// $user.
      Spassword,<br designtimesp=26550>$ table. $where. и Scommitsize <br
       designtimesp=26551>$conn = OCILogon($user. Spassword); <br
       designtimesp=26552>$stmt = OCIParsetSconn.<br
       designtimesp=26553>"select rowid from Stable $v.here"): <br
       designtimesp=26554>Srowid = OCINewDescnptor<br
       designtimesp=26555>(sconn.OCI_D_ROWID); <br
       designtimesp=26556>OCIOefineB&gt;Name($stmt.<br
       designtimesp=26557>"ROUID",&amp;$rowid); ОС I<br
       designtimesp=26558>Execute(Sstmt). while <br designtimesp=26559>(
      OClFetch(Sstmt) ) { <br designtimesp=26560>$nrows = OCIRowCount(Sstmt);
      <br designtimesp=26561>Sdelete = OCIParsetSconn."delete<br
       designtimesp=26562>from Stable where ROWID - rid"). <br
       designtimesp=26563>OCIBindByName<br designtimesp=26564>(Sdelete."-nd"
      &amp;$rowid.-1.0CI_B_ROWID); <br designtimesp=26565>OCIExecute($deletei.
      print "$nrows\n", <br designtimesp=26566>if ( ($nrows % Scommitsize) ==
      0 ) <br designtimesp=26567>{ OCIComirnt($conn). } } <br
       designtimesp=26568>Snrows = OCIRowCountC$stmt):<br
       designtimesp=26569>print "Snrows удалено . \n": <br
       designtimesp=26570>OCIFreeStatement(Sstmt); OClLogoff($conn): ?&gt; <br
       designtimesp=26571>&lt;?php /* Сценарий загружает файл в поле LOB */ <br
       designtimesp=26572>if(Msset($lobjjpload) || $lob_upload ^= 'none'){
      ?&gt; <br designtimesp=26573>&lt;form action="upload bhp" method="post"
      <br designtimesp=26574>enctype="multipart/form-data"&gt; <br
       designtimesp=26575>Upload file- &lt;input type="file" name=<br
       designtimesp=26576>"lob_upload"&gt;&lt;br&gt; &lt;input type="submit"<br
       designtimesp=26577>value="Upload"&gt; - &lt;inpwt type="reset"&gt;<br
       designtimesp=26578>&lt;/form&gt; &lt;?php } else { <br
       designtimesp=26579>// $lob_upload contains the temporary<br
       designtimesp=26580>filename of the uploaded file $conn = <br
       designtimesp=26581>OCILogon($user. Spassword); , Slob =<br
       designtimesp=26582>OCINewDescnptor($conn. OCI_D_Li)B). <br
       designtimesp=26583>Sstmt OCIParseCSconn."insert into <br
       designtimesp=26584>Stable (id. the_blob) values<br
       designtimesp=26585>(my_seq.NEXTVAL. HMPTY_BLOB(&gt; )<br
       designtimesp=26586>returnina thp_hlob into the_blob"),<br
       designtimesp=26587>OCIBindByNarnpCSstmt. ':tne_blob',<br
       designtimesp=26588>&amp;Slob. -1. OCIJJLOB); OCIExecuteCSsiirtt;;<br
       designtimesp=26589>1f($lob-&gt;savefi1e($lob_up1oad))<br
       designtimesp=26590>{ ОС 'ommit(Sconn); <br designtimesp=26591>echo
      "Blob successfully uploaded\n"; }else{ <br designtimesp=26592>echo
      "Couldn't upload Blob\n"; } <br designtimesp=26593>OCIFreeDesc(Slob);
      OCIFreeStatement<br designtimesp=26594>(Sstmt): OClLogoff($conn): }
      ?&gt; </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26595><FONT face=Tahoma
      size=2 DESIGNTIMESP=26596>OCIRowCount </FONT></P>
      <P DESIGNTIMESP=26597><FONT face=Tahoma size=2 DESIGNTIMESP=26598>Получение числа
      измененных записей int OCIRowCount (int statement) </FONT></P>
      <P DESIGNTIMESP=26599><FONT face=Tahoma size=2 DESIGNTIMESP=26600>Возвращается число
      записей, измененных запросом (например, UPDATE). Функция не возвращает
      число возвращенных запросом записей! </FONT></P>
      <P DESIGNTIMESP=26601><span class=list designtimesp=26602><FONT
      face=Tahoma size=2 DESIGNTIMESP=26603>&lt;?php $conn = OCILogonC'scott"."tiger"): <br
       designtimesp=26604>Sstmt = OCIParsetSconn,"create table <br
       designtimesp=26605>emp2 as select * from emp"); <br
       designtimesp=26606>OCIExecute($stmt). <br designtimesp=26607>print
      OCIRowCount(Sstmt) .<br designtimesp=26608>" записей
      добавлено.&lt;BR&gt;": <br designtimesp=26609>OCIFreeStatement($stmt).
      <br designtimesp=26610>$stmt = OCIParse($conn."delete from emp2"). <br
       designtimesp=26611>ОС I Execute(Sstmt), <br designtimesp=26612>print
      OCIRowCount(Sstmt) " записей удалено &lt;BR&gt;". <br
       designtimesp=26613>OCICommit(Sconn). OCIFreeStatementOstmt); <br
       designtimesp=26614>Sstmt = OCIParsetSconn."drop table emp2"). <br
       designtimesp=26615>OCIExecute(Sstmt). OCIFreeStatement($stmt): <br
       designtimesp=26616>OCILogOff($conn). ?&gt; </FONT></SPAN></P>
      <P class=Text_Bold DESIGNTIMESP=26617><FONT face=Tahoma
      size=2 DESIGNTIMESP=26618>OCINumCols </FONT></P>
      <P DESIGNTIMESP=26619><FONT face=Tahoma size=2 DESIGNTIMESP=26620>Получение числа полей в
      запросе </FONT></P>
      <P DESIGNTIMESP=26621><FONT face=Tahoma size=2 DESIGNTIMESP=26622>int OCINumCols (int stmt)
      </FONT></P>
      <P class=list DESIGNTIMESP=26623><FONT face=Tahoma size=2 DESIGNTIMESP=26624>&lt;?php Sconn
      = OCILogonC'scott". "tiger"); <br designtimesp=26625>Sstmt =
      OCIParse($conn."select * from emp"):<br
       designtimesp=26626>OCIExecutetSstmt): while ( OCIFetch($stmt) )<br
       designtimesp=26627>{ Sncols = OCINumColstSstmt); for <br
       designtimesp=26628>( $1 = 1; $i &lt;= Sncols; $i++ ) { <br
       designtimesp=26629>Jcolumnjiame = OCIColumnName(Sstmt.$1): <br
       designtimesp=26630>Scolumn_value = OCIResultCSstmt.SD; <br
       designtimesp=26631>print $column_name .':', Scolumn_value . "\n"; ) <br
       designtimesp=26632>print "\n"; } OCIFreeStatemenUSstrnt):<br
       designtimesp=26633>OCILogoff(Sconn): ?&gt; </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26634><FONT face=Tahoma size=2 DESIGNTIMESP=26635>OCIResult
      </FONT></P>
      <P DESIGNTIMESP=26636><FONT face=Tahoma size=2 DESIGNTIMESP=26637>Получение значения поля
      записи, возвращенной запросом</FONT></P>
      <P DESIGNTIMESP=26638><FONT face=Tahoma size=2 DESIGNTIMESP=26639>mixed OCIResult (int
      statement, mixed column) </FONT></P>
      <P DESIGNTIMESP=26640><FONT face=Tahoma size=2 DESIGNTIMESP=26641>Возвращает данные ноля
      column текущей записи (см. OCIFetch()). Возвращает все типы данных как
      строки, за исключением абстрактных типов (ROWID, LOB и FILE). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26642><FONT face=Tahoma size=2 DESIGNTIMESP=26643>OCIFetch
      </FONT></P>
      <P DESIGNTIMESP=26644><FONT face=Tahoma size=2 DESIGNTIMESP=26645>Занесение следующей
      возвращенной записи в буфер результата int OCIFetch (int statement)
      </FONT></P>
      <P DESIGNTIMESP=26646><FONT face=Tahoma size=2 DESIGNTIMESP=26647>Позволяет получить запись
      после запроса выборки (SELECT) с помощью последующих вызовов OCIResultO,
      возвращающих поля записи. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26648><FONT face=Tahoma
      size=2 DESIGNTIMESP=26649>OCIFetchlnto </FONT></P>
      <P DESIGNTIMESP=26650><FONT face=Tahoma size=2 DESIGNTIMESP=26651>Занесение следующей
      записи в массив </FONT></P>
      <P DESIGNTIMESP=26652><FONT face=Tahoma size=2 DESIGNTIMESP=26653>Int OCIFetchlnto (int
      stmt, array Sresult [, int mode]) </FONT></P>
      <P DESIGNTIMESP=26654><FONT face=Tahoma size=2 DESIGNTIMESP=26655>Функция позволяет
      поочередно получить все записи, возвращенные запросом выборки. По
      умолчанию массив result будет содержать все поля записи (содержащие
      данные, не равные NULL) с нумерацией начиная с 1. </FONT></P>
      <P DESIGNTIMESP=26656><FONT face=Tahoma size=2 DESIGNTIMESP=26657>Аргумент mode позволяет
      изменить действие функции. Константы могут комбинироваться сложением
      (например, OCI_ASSOC+OCI_RETURN_NULLS): </FONT></P>
      <ul designtimesp=26658>
        <li designtimesp=26659><FONT face=Tahoma size=2 DESIGNTIMESP=26660>OCI_ASSOC — возвращать
        ассоциативный массив; </FONT>
        <li designtimesp=26661><FONT face=Tahoma size=2 DESIGNTIMESP=26662>OCI_NUM — возвращать
        нумерованный массив (по умолчанию); </FONT>
        <li designtimesp=26663><FONT face=Tahoma size=2 DESIGNTIMESP=26664>OCI_RETURN_NULLS —
        возвращать пустые поля; </FONT>
        <li designtimesp=26665><FONT face=Tahoma size=2 DESIGNTIMESP=26666>OCI_RETURN_LOBS —
        возвращать содержимое полей LOB вместо их дескриптора. </FONT></LI></UL>
      <P class=Text_Bold DESIGNTIMESP=26667><FONT face=Tahoma
      size=2 DESIGNTIMESP=26668>OCIFetchStatement </FONT></P>
      <P DESIGNTIMESP=26669><FONT face=Tahoma size=2 DESIGNTIMESP=26670>Занесение результата
      запроса в массив </FONT></P>
      <P DESIGNTIMESP=26671><FONT face=Tahoma size=2 DESIGNTIMESP=26672>int OCIFetchStatement
      (int stmt, array Svariable) </FONT></P>
      <P DESIGNTIMESP=26673><FONT face=Tahoma size=2 DESIGNTIMESP=26674>Возвращает число записей,
      занесенных в массив variable. </FONT></P>
      <P class=list DESIGNTIMESP=26675><FONT face=Tahoma size=2 DESIGNTIMESP=26676>&lt;?php Sconn
      = OCILogonC'scott"."tiger"): <br designtimesp=26677>$stmt =
      OCIParse($conn,"select * from emp"); <br
       designtimesp=26678>OCIExecute($stmt). <br designtimesp=26679>Snrows =
      OCIFetchStatement($stmt,$results);<br designtimesp=26680>if ( Snrows
      &gt; 0 ) { <br designtimesp=26681>print "&lt;TABLE
      BORDER=\"l\"&gt;&lt;TR&gt;\n"; <br designtimesp=26682>while ( list($key.
      $val) = each($results) ) <br designtimesp=26683>print
      "&lt;TH&gt;$key&lt;/TH&gt;\n": <br designtimesp=26684>print
      "&lt;/TR&gt;\n"; <br designtimesp=26685>for ( $1 = 0. $1 &lt; Snrows;
      $i++ )<br designtimesp=26686>{ print "&lt;TR&gt;\n"; reset($results);
      <br designtimesp=26687>while ( $column = each($results) ) <br
       designtimesp=26688>{ $data = $columr&gt;['value'] [$i];<br
       designtimesp=26689>print "&lt;TD&gt;$data&lt;/TD&gt;\n"; } <br
       designtimesp=26690>print "&lt;/TR&gt;\n": <br designtimesp=26691>print
      "&lt;/TABLE&gt;\n": } <br designtimesp=26692>print "Получено Snrows
      записей &lt;BR&gt;\n"; <br
       designtimesp=26693>OCIFreeStatement($stmt);<br
       designtimesp=26694>OCILogoff($conn): ?&gt; </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26695><FONT face=Tahoma
      size=2 DESIGNTIMESP=26696>OCIColumnlsNULL </FONT></P>
      <P DESIGNTIMESP=26697><FONT face=Tahoma size=2 DESIGNTIMESP=26698>Проверка, содержит ли
      поле записи значение NULL </FONT></P>
      <P DESIGNTIMESP=26699><FONT face=Tahoma size=2 DESIGNTIMESP=26700>int OCIColumnlsNULL (Int
      stmt, mixed column) </FONT></P>
      <P DESIGNTIMESP=26701><FONT face=Tahoma size=2 DESIGNTIMESP=26702>Возвращает TRUE, если
      ноле column в результате запроса strat имеет значение NULL. Поле может
      указываться номером (начиная с 1) или именем. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26703><FONT face=Tahoma
      size=2 DESIGNTIMESP=26704>OCIColumnName </FONT></P>
      <P DESIGNTIMESP=26705><FONT face=Tahoma size=2 DESIGNTIMESP=26706>Получение имени поля
      </FONT></P>
      <P DESIGNTIMESP=26707><FONT face=Tahoma size=2 DESIGNTIMESP=26708>string OCIColumnName (int
      stmt, int col) </FONT></P>
      <P class=list DESIGNTIMESP=26709><FONT face=Tahoma size=2 DESIGNTIMESP=26710>&lt;?php Sconn
      OCILogonC'scott". "tiger"). <br designtimesp=26711>Snmt =
      OCIParse($conn."select * from emp"); <br designtimesp=26712>ОС I
      Execute(Sstmt): <br designtimesp=26713>print "&lt;TABLE
      BORDER=\"l\"&gt;<br
       designtimesp=26714>&lt;TR&gt;&lt;TH&gt;Name&lt;/TH&gt;&lt;TH&gt;Type&lt;/TH&gt;".
      <br designtimesp=26715>"&lt;TH&gt;Length&lt;/TH&gt;&lt;/TR&gt;": <br
       designtimesp=26716>Srcols = OCINumCols($stmt): for <br
       designtimesp=26717>( $1 = 1. $1 &lt;= $ncols&gt;: $i++ ) { . <br
       designtimesp=26718>$column_name = OCIColumnNarae($stmt,$i); <br
       designtimesp=26719>$column_type = OCIColuranTypef$stmt.$i): <br
       designtimesp=26720>$column_size = OCIColumnSize($stmt.$i). <br
       designtimesp=26721>print "&lt;TR&gt;&lt;TD&gt;$column_name&lt;/TD&gt;<br
       designtimesp=26722>&lt;TD&gt;$column_type&lt;/TD&gt;": <br
       designtimesp=26723>pn nt "&lt;TD&gt;$column_size&lt;/TD&gt;&lt;/TR&gt;";
      } <br designtimesp=26724>OCIFreeStatement($stmt): <br
       designtimesp=26725>OCILogofftSconn). ?&gt; </FONT></P>
      <P DESIGNTIMESP=26726><FONT face=Tahoma size=2 DESIGNTIMESP=26727>См. также: OCINumCols(),
      OCIColumnType() и OCIColumnSize(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26728><FONT face=Tahoma size=2 DESIGNTIMESP=26729>
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26730><FONT face=Tahoma
      size=2 DESIGNTIMESP=26731>OCIColumnSize </FONT></P>
      <P DESIGNTIMESP=26732><FONT face=Tahoma size=2 DESIGNTIMESP=26733>Получение размера поля
      </FONT></P>
      <P DESIGNTIMESP=26734><FONT face=Tahoma size=2 DESIGNTIMESP=26735>int OCIColumnSize (Int
      stmt. mixed column) </FONT></P>
      <P DESIGNTIMESP=26736><FONT face=Tahoma size=2 DESIGNTIMESP=26737>См. также: OCINumCols(),
      OCIColumnName() и OCIColumnSize(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26738><FONT face=Tahoma
      size=2 DESIGNTIMESP=26739>OCIColumnType </FONT></P>
      <P DESIGNTIMESP=26740><FONT face=Tahoma size=2 DESIGNTIMESP=26741>Получение типа поля
      </FONT></P>
      <P DESIGNTIMESP=26742><FONT face=Tahoma size=2 DESIGNTIMESP=26743>mixed OCIColumnType (int
      stmt, int col) </FONT></P>
      <P DESIGNTIMESP=26744><FONT face=Tahoma size=2 DESIGNTIMESP=26745>См. также: OCINumCols(),
      OCIColumnName() и OCIColumnSize(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26746><FONT face=Tahoma
      size=2 DESIGNTIMESP=26747>OCIStatementType </FONT></P>
      <P DESIGNTIMESP=26748><FONT face=Tahoma size=2 DESIGNTIMESP=26749>Получение типа ОСI
      запроса </FONT></P>
      <P DESIGNTIMESP=26750><FONT face=Tahoma size=2 DESIGNTIMESP=26751>string OCIStatementType
      (int stmt) </FONT></P>
      <P DESIGNTIMESP=26752><FONT face=Tahoma size=2 DESIGNTIMESP=26753>Возвращает одно из
      следующих значений: </FONT></P>
      <ol designtimesp=26754>
        <li designtimesp=26755><FONT face=Tahoma size=2 DESIGNTIMESP=26756>«SELECT»; </FONT>
        <li designtimesp=26757><FONT face=Tahoma size=2 DESIGNTIMESP=26758>«UPDATE»; </FONT>
        <li designtimesp=26759><FONT face=Tahoma size=2 DESIGNTIMESP=26760>«DELETE»; </FONT>
        <li designtimesp=26761><FONT face=Tahoma size=2 DESIGNTIMESP=26762>«INSERT»; </FONT>
        <li designtimesp=26763><FONT face=Tahoma size=2 DESIGNTIMESP=26764>«CREATE»; </FONT>
        <li designtimesp=26765><FONT face=Tahoma size=2 DESIGNTIMESP=26766>«DROP»; </FONT>
        <li designtimesp=26767><FONT face=Tahoma size=2 DESIGNTIMESP=26768>«ALTER»; </FONT>
        <li designtimesp=26769><FONT face=Tahoma size=2 DESIGNTIMESP=26770>«BEGIN»; </FONT>
        <li designtimesp=26771><FONT face=Tahoma size=2 DESIGNTIMESP=26772>«DECLARE»; </FONT>
        <li designtimesp=26773><FONT face=Tahoma size=2 DESIGNTIMESP=26774>«UNKNOWN».
      </FONT></LI></OL>
      <P class=list DESIGNTIMESP=26775><FONT face=Tahoma size=2 DESIGNTIMESP=26776>&lt;?php <br
       designtimesp=26777>$conn = OCILogonC'scott"."tiger"): <br
       designtimesp=26778>$sql = "delete from emp where deptno = 10": <br
       designtimesp=26779>$stmt = OCIParse{$conn.$sql). <br
       designtimesp=26780>if ( OCIStatementType($stmt) == "DELETE" ) { <br
       designtimesp=26781>die "Вам не разрешено удалять записи этой таблицы"; }
      <br designtimesp=26782>OCII.ogoff($conn): ?&gt; </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26783><FONT face=Tahoma
      size=2 DESIGNTIMESP=26784>OCINewCursor </FONT></P>
      <P DESIGNTIMESP=26785><FONT face=Tahoma size=2 DESIGNTIMESP=26786>Получение нового курсора
      (дескриптора запроса)</FONT></P>
      <P DESIGNTIMESP=26787><FONT face=Tahoma size=2 DESIGNTIMESP=26788>int OCINewCursor (int
      conn) </FONT></P>
      <P DESIGNTIMESP=26789><FONT face=Tahoma size=2 DESIGNTIMESP=26790>Используется для
      связывания ссылочных курсоров.</FONT></P>
      <P class=list DESIGNTIMESP=26791><FONT face=Tahoma size=2 DESIGNTIMESP=26792>&lt;?php //
      хранимая процедура info.output возвращает ref cursor в :data <br
       designtimesp=26793>Sconn = OCILogonC'scott". "tiger"). <br
       designtimesp=26794>Scurs = OCINewCursor(Sconn); <br
       designtimesp=26795>Sstmt - OC!Parse($conn,"begin info.output(:data);
      end;"); <br
       designtimesp=26796>ocibindbyname($stmt."data".&amp;$curs.-1.0CI_B_CURSOR);
      <br designtimesp=26797>ociexecute(lstmt): ociexecute(Scurs); <br
       designtimesp=26798>while (OCIFetchInto($curs.&amp;$data)) {
      var_dump($data); } <br designtimesp=26799>OCIFreeCursor(Sstmt);
      OClFreeStatement($curs);<br designtimesp=26800>OCILogoff($conn); ?&gt;
      <br designtimesp=26801>&lt;?prp // Example 2. REF CURSOR в запросе
      select <br designtimesp=26802>Sconn = OCILogonC'scott"."tiger"). <br
       designtimesp=26803>$count_cursor = "CURSOR(select count(empno) num_emps
      from emp " <br designtimesp=26804>"where emp.deptno = dept.deptno)<br
       designtimesp=26805>as EMPCNT from dept"; Sstmt = OCIParse<br
       designtimesp=26806>(Sconn."select deptno.dname.Scount_cursor"). <br
       designtimesp=26807>ociexecutetSstmt); <br designtimesp=26808>print
      "&lt;TABLE BORDER=\"1\"&gt;<br
       designtimesp=26809>&lt;TR&gt;&lt;TH&gt;DEPT NAHE&lt;/TH&gt;"; <br
       designtimesp=26810>print "&lt;TH&gt;DEPT #&lt;/TH&gt;&lt;TH&gt;#
      EMPLOYEES&lt;/TH&gt;&lt;/TR&gt;"; <br designtimesp=26811>while
      (OC!FetchInto(Sstmt,&amp;$data.OCI_ASSOO) <br designtimesp=26812>{ print
      "&lt;TR&gt;". Sdname = $data["DNAME"]. <br designtimesp=26813>Sdcptno =
      Sdata["DEPTNO"]; print "<br
       designtimesp=26814>&lt;TD&gt;Sdname&lt;/TD&gt;&lt;TD&gt;Sdeptno&lt;/TD&gt;",
      <br designtimesp=26815>ooexecute($data[ "EMPCNT" ]); <br
       designtimesp=26816>while (OCIFetchIntoCSdata[ "EMPCNT" ]<br
       designtimesp=26817>.&amp;$subdata.OCI_ASSOO) <br designtimesp=26818>{
      $num_emps = Ssubdata["NUM_EMPS"]; <br designtimesp=26819>print
      "&lt;TD&gt;$num_emps&lt;/TD&gt;"; } print "&lt;/TR&gt;"; <br
       designtimesp=26820>print "&lt;/TABLE&gt;"; OClFreeStatement(Sstmt);<br
       designtimesp=26821>OCILogoff(Sconn): </FONT>
      <P class=Text_Bold DESIGNTIMESP=26822><FONT face=Tahoma
      size=2 DESIGNTIMESP=26823>OCIFreeStatement </FONT></P>
      <P DESIGNTIMESP=26824><FONT face=Tahoma size=2 DESIGNTIMESP=26825>Освобождение ресурсов,
      занимаемых запросом </FONT></P>
      <P DESIGNTIMESP=26826><FONT face=Tahoma size=2 DESIGNTIMESP=26827>int OCIFreeStatement (int
      stmt)</FONT></P>
      <P DESIGNTIMESP=26828><FONT face=Tahoma size=2 DESIGNTIMESP=26829>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26830><FONT face=Tahoma
      size=2 DESIGNTIMESP=26831>OCIFreeCursor </FONT></P>
      <P DESIGNTIMESP=26832><FONT face=Tahoma size=2 DESIGNTIMESP=26833>Освобождение ресурсов
      курсора </FONT></P>
      <P DESIGNTIMESP=26834><FONT face=Tahoma size=2 DESIGNTIMESP=26835>Int OCIFreeCursor (int
      stmt) </FONT></P>
      <P DESIGNTIMESP=26836><FONT face=Tahoma size=2 DESIGNTIMESP=26837>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26838><FONT face=Tahoma
      size=2 DESIGNTIMESP=26839>OCIFreeDesc </FONT></P>
      <P DESIGNTIMESP=26840><FONT face=Tahoma size=2 DESIGNTIMESP=26841>Уничтожение дескриптора
      большого объекта </FONT></P>
      <P DESIGNTIMESP=26842><FONT face=Tahoma size=2 DESIGNTIMESP=26843>int OCIFreeDesc (object
      lob) </FONT></P>
      <P DESIGNTIMESP=26844><FONT face=Tahoma size=2 DESIGNTIMESP=26845>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26846><FONT face=Tahoma size=2 DESIGNTIMESP=26847>OCI Error
      </FONT></P>
      <P DESIGNTIMESP=26848><FONT face=Tahoma size=2 DESIGNTIMESP=26849>Получение последнего
      сообщения об ошибке </FONT></P>
      <P DESIGNTIMESP=26850><FONT face=Tahoma size=2 DESIGNTIMESP=26851>array OCIError ([int
      stmt|conn(global]) </FONT></P>
      <P DESIGNTIMESP=26852><FONT face=Tahoma size=2 DESIGNTIMESP=26853>Возвращает ассоциативный
      массив, содержащий элементы code (номер ошибки) и message (сообщение
      ошибки). Если ошибки не про-&gt; изошло, возвращает FALSE. </FONT></P>
      <P DESIGNTIMESP=26854><FONT face=Tahoma size=2 DESIGNTIMESP=26855>Аргументом можно указать
      дескриптор, для которого получается сообщение. </FONT></P>
      <P class=Title_2 DESIGNTIMESP=26856><a name=12
       designtimesp=26857></A><FONT face=Tahoma size=2 DESIGNTIMESP=26858>dBase </FONT></P>
      <P DESIGNTIMESP=26859><FONT face=Tahoma size=2 DESIGNTIMESP=26860>Данная группа функций
      позволяет работать с данными БД dBase (dbf). </FONT></P>
      <P DESIGNTIMESP=26861><FONT face=Tahoma size=2 DESIGNTIMESP=26862>Индексы и memo-поля не
      поддерживаются. Блокировка также невозможна, поэтому, если два процесса
      web-сервера одновременно модифицируют один файл dBase, это может привести
      к его порче. </FONT></P>
      <P DESIGNTIMESP=26863><FONT face=Tahoma size=2 DESIGNTIMESP=26864>В отличие от SQL БД
      структура «БД» dBase не поддается модификации. dBase-файл представляет
      собой простую последовательность записей фиксированной длины; добавляемые
      записи дописываются в конец файла, а удаленные сохраняются до вызова
      функции dbase_ pack(). </FONT></P>
      <P DESIGNTIMESP=26865><FONT face=Tahoma size=2 DESIGNTIMESP=26866>Рекомендуется
      использование современных БД, например MySQL или Postgres. Поэтому
      поддержка dBase в РНР предназначена исключительно для экспорта и импорта
      (для облегчения обмена с другими приложениями). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26867><FONT face=Tahoma
      size=2 DESIGNTIMESP=26868>dbase_create </FONT></P>
      <P DESIGNTIMESP=26869><FONT face=Tahoma size=2 DESIGNTIMESP=26870>Создание БД dBase
      </FONT></P>
      <P DESIGNTIMESP=26871><FONT face=Tahoma size=2 DESIGNTIMESP=26872>int dbase_create (string
      filename, array fields) </FONT></P>
      <P DESIGNTIMESP=26873><FONT face=Tahoma size=2 DESIGNTIMESP=26874>Аргумент fields — это
      массив массивов, где каждый из массивов описывает одно поле БД (таблицы).
      Каждое поле состоит из имени, символа, обозначающего тип, и (при
      необходимости) размера поля и его точности. </FONT></P>
      <P DESIGNTIMESP=26875><FONT face=Tahoma size=2 DESIGNTIMESP=26876>Возможные типы полей:
      </FONT></P>
      <ul designtimesp=26877>
        <li designtimesp=26878><FONT face=Tahoma size=2 DESIGNTIMESP=26879>L — двоичное, не имеет
        точности или размера; </FONT>
        <li designtimesp=26880><FONT face=Tahoma size=2 DESIGNTIMESP=26881>М — Memo. Не
        поддерживается РНР, не имеет точности или размера; </FONT>
        <li designtimesp=26882><FONT face=Tahoma size=2 DESIGNTIMESP=26883>D — дата, сохраняется
        как ГГГГММДД, не имеет точности или размера; </FONT>
        <li designtimesp=26884><FONT face=Tahoma size=2 DESIGNTIMESP=26885>N — число, имеет длину
        и точность (число знаков после запятой); </FONT>
        <li designtimesp=26886><FONT face=Tahoma size=2 DESIGNTIMESP=26887>С — строка.
        </FONT></LI></UL>
      <P DESIGNTIMESP=26888><FONT face=Tahoma size=2 DESIGNTIMESP=26889>Если файл БД был успешно
      создан, возвращается его дескриптор; в противном случае возвращается
      FALSE. </FONT></P>
      <P class=list DESIGNTIMESP=26890><FONT face=Tahoma size=2 DESIGNTIMESP=26891>Sdbname =
      "/trap/test.dbf": // "database" name ; <br designtimesp=26892>' $def =
      // database "definition" \ array( v<br designtimesp=26893>array("date".
      "D"). arrayC'name". "C". 50). <br designtimesp=26894>arrayC'age". "N".
      3. 0). array("email","C". 128).<br designtimesp=26895>array("ismember".
      "L") ); <br designtimesp=26896>if (!dbase_create($dbname, $def)) print
      "Error!"; </FONT>
      <P class=Text_Bold DESIGNTIMESP=26897><FONT face=Tahoma
      size=2 DESIGNTIMESP=26898>dbase_open </FONT></P>
      <P DESIGNTIMESP=26899><FONT face=Tahoma size=2 DESIGNTIMESP=26900>Открытие БД dBase
      </FONT></P>
      <P DESIGNTIMESP=26901><FONT face=Tahoma size=2 DESIGNTIMESP=26902>int dbase_open (string
      filename, int flags) </FONT></P>
      <P DESIGNTIMESP=26903><FONT face=Tahoma size=2 DESIGNTIMESP=26904>В аргументе flags
      указывается режим открытия (0 — только для чтения, 1 — только для записи и
      2 — для чтения и записи). Возвращает дескриптор БД или FALSE — при ошибке.
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26905><FONT face=Tahoma
      size=2 DESIGNTIMESP=26906>dbase_close </FONT></P>
      <P DESIGNTIMESP=26907><FONT face=Tahoma size=2 DESIGNTIMESP=26908>Закрытие БД dBase
      </FONT></P>
      <P DESIGNTIMESP=26909><FONT face=Tahoma size=2 DESIGNTIMESP=26910>bool dbase_close (int
      dbase_identifier) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26911><FONT face=Tahoma
      size=2 DESIGNTIMESP=26912>dbase_pack </FONT></P>
      <P DESIGNTIMESP=26913><FONT face=Tahoma size=2 DESIGNTIMESP=26914>Обновление БД dBase
      </FONT></P>
      <P DESIGNTIMESP=26915><FONT face=Tahoma size=2 DESIGNTIMESP=26916>bool dbase_pack (int
      dbase_identifier) </FONT></P>
      <P DESIGNTIMESP=26917><FONT face=Tahoma size=2 DESIGNTIMESP=26918>При этом удаляются все
      записи, помеченные с помощью dbase_ delete_record(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26919><FONT face=Tahoma
      size=2 DESIGNTIMESP=26920>dbase_add_record </FONT></P>
      <P DESIGNTIMESP=26921><FONT face=Tahoma size=2 DESIGNTIMESP=26922>Добавление записи
      </FONT></P>
      <P DESIGNTIMESP=26923><FONT face=Tahoma size=2 DESIGNTIMESP=26924>bool dbase_add_record
      (Int dbase_identifier, array record) </FONT></P>
      <P DESIGNTIMESP=26925><FONT face=Tahoma size=2 DESIGNTIMESP=26926>Добавляет запись, поля
      которой содержатся в массиве record в БД. Если число полей записи не
      соответствует числу полей в БД, добавление не производится и функция
      возвращает FAbSE. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26927><FONT face=Tahoma
      size=2 DESIGNTIMESP=26928>dbase_replace_record </FONT></P>
      <P DESIGNTIMESP=26929><FONT face=Tahoma size=2 DESIGNTIMESP=26930>Замена Записи </FONT></P>
      <P DESIGNTIMESP=26931><FONT face=Tahoma size=2 DESIGNTIMESP=26932>bool dbase_replace_record
      (int dbase_identifier. array record, int dbase_record_number) </FONT></P>
      <P DESIGNTIMESP=26933><FONT face=Tahoma size=2 DESIGNTIMESP=26934>Заменяет запись (с
      номером dbase_record_number), поля которой содержатся в массиве record.
      Если число полей записи не соответствует числу полей в БД, добавление не
      производится и функция возвращает FALSF. </FONT></P>
      <P DESIGNTIMESP=26935><FONT face=Tahoma size=2 DESIGNTIMESP=26936>Номера записей лежат в
      пределах от 1 до значения, возвращенного / dbase_numrecords(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26937><FONT face=Tahoma
      size=2 DESIGNTIMESP=26938>dbase_delete_record </FONT></P>
      <P DESIGNTIMESP=26939><FONT face=Tahoma size=2 DESIGNTIMESP=26940>Удаление записи
      </FONT></P>
      <P DESIGNTIMESP=26941><FONT face=Tahoma size=2 DESIGNTIMESP=26942>bool dbase_delete_record
      (int dbasejidentifier. int record) </FONT></P>
      <P DESIGNTIMESP=26943><FONT face=Tahoma size=2 DESIGNTIMESP=26944>Помечает запись с номером
      record для удаления последующим вызовом dbase_pack(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26945><FONT face=Tahoma
      size=2 DESIGNTIMESP=26946>dbase_get_record </FONT></P>
      <P DESIGNTIMESP=26947><FONT face=Tahoma size=2 DESIGNTIMESP=26948>Получение записи
      </FONT></P>
      <P DESIGNTIMESP=26949><FONT face=Tahoma size=2 DESIGNTIMESP=26950>array dbase_get_record
      (int dbasejdentifier, int record) </FONT></P>
      <P DESIGNTIMESP=26951><FONT face=Tahoma size=2 DESIGNTIMESP=26952>Возвращает массив,
      содержащий поля записи с номером record. Массив индексируется начиная с 0
      и имеет элемент с индексом «deleted», равный 1, если запись была удалена
      (см. dbase_delete_record()). Каждое поле преобразуется к соответствующему
      типу РНР. (Даты сохраняются как строки.) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26953><FONT face=Tahoma
      size=2 DESIGNTIMESP=26954>dbase_get_record_with_names </FONT></P>
      <P DESIGNTIMESP=26955><FONT face=Tahoma size=2 DESIGNTIMESP=26956>Занесение записи в
      ассоциативный массив </FONT></P>
      <P DESIGNTIMESP=26957><FONT face=Tahoma size=2 DESIGNTIMESP=26958>array dbase
      get_record_with_names (int dbase_identifier, int record) </FONT></P>
      <P DESIGNTIMESP=26959><FONT face=Tahoma size=2 DESIGNTIMESP=26960>Функция подобна
      dbase_get_record(), но вместо числовых индексов используются имена полей.
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26961><FONT face=Tahoma
      size=2 DESIGNTIMESP=26962>dbase_numrecords </FONT></P>
      <P DESIGNTIMESP=26963><FONT face=Tahoma size=2 DESIGNTIMESP=26964>Установление числа
      записей БД </FONT></P>
      <P DESIGNTIMESP=26965><FONT face=Tahoma size=2 DESIGNTIMESP=26966>int dbasejiumrecords (int
      dbase_identifier) </FONT></P>
      <P DESIGNTIMESP=26967><FONT face=Tahoma size=2 DESIGNTIMESP=26968>При обращении к записям
      БД их возможные номера лежат в пределах от 1 до значения, возвращаемого
      данной функцией. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26969><FONT face=Tahoma
      size=2 DESIGNTIMESP=26970>dbase_numfields </FONT></P>
      <P DESIGNTIMESP=26971><FONT face=Tahoma size=2 DESIGNTIMESP=26972>Установление числа полей
      БД </FONT></P>
      <P DESIGNTIMESP=26973><FONT face=Tahoma size=2 DESIGNTIMESP=26974>int dbasejiumfields (Int
      dbase_identifier) </FONT></P>
      <P DESIGNTIMESP=26975><FONT face=Tahoma size=2 DESIGNTIMESP=26976>При обращении к полям
      записи их возможные номера лежат в пределах от 0 до значения,
      возвращаемого данной функцией, уменьшенного на единицу. </FONT></P>
      <P class=list DESIGNTIMESP=26977><FONT face=Tahoma size=2 DESIGNTIMESP=26978>$гес =
      dbase_get_record($db. Srecno); <br designtimesp=26979>$nf =
      dbase_numfields($db): for ($1=0; $1 &lt; $nf; $i++)<br
       designtimesp=26980>{ print $rec[$i]."&lt;br&gt;\n". } /* </FONT></P>
      <P class=Title_2 DESIGNTIMESP=26981><a name=13
       designtimesp=26982></A><FONT face=Tahoma size=2 DESIGNTIMESP=26983>DBM </FONT></P>
      <P DESIGNTIMESP=26984><FONT face=Tahoma size=2 DESIGNTIMESP=26985>Эта ipynna функций
      позволяет манипулировать записями в dbm-БД. ^ Этот тип БД поддерживается
      системными библиотеками Berkeley DB, GDBM наряду со встроенной поддержкой
      «плоских файлов». Данные в них сохраняются в виде пар «имя/значение».
      </FONT></P>
      <P class=list DESIGNTIMESP=26986><FONT face=Tahoma size=2 DESIGNTIMESP=26987>$dbm = dbmopen
      ("lastseen". "w");<br designtimesp=26988>if (dbmexists ($dbm. $usend)) {
      <br designtimesp=26989>$last_seen = dbmfetch ($dbm. Susend); } else {
      <br designtimesp=26990>dbminsert (Sdbm. Susend. time()); } <br
       designtimesp=26991>do_stuff(): <br designtimesp=26992>dbmreplace
      ($dbm. Susend. time()): <br designtimesp=26993>dbmclose ($dbm);
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=26994><FONT face=Tahoma size=2 DESIGNTIMESP=26995>dbmopen
      </FONT></P>
      <P DESIGNTIMESP=26996><FONT face=Tahoma size=2 DESIGNTIMESP=26997>Открытие БД DBM
      </FONT></P>
      <P DESIGNTIMESP=26998><FONT face=Tahoma size=2 DESIGNTIMESP=26999>int dbmopen (string
      filename, string flags) </FONT></P>
      <P DESIGNTIMESP=27000><FONT face=Tahoma size=2 DESIGNTIMESP=27001>Первый аргумент содержит
      полное имя DBM-файла БД, а второй — режим открытия: «г», «w», «n», «с»
      соответственно для чтения, для </FONT></P>
      <P DESIGNTIMESP=27002><FONT face=Tahoma size=2 DESIGNTIMESP=27003>чтения и записи, создание
      новой БД (для чтения и записи), добавление в имеющуюся БД или ее создание.
      </FONT></P>
      <P DESIGNTIMESP=27004><FONT face=Tahoma size=2 DESIGNTIMESP=27005>Возвращает дескриптор БД,
      используемый всеми последующими функциями, или FALSE — при ошибке.
      </FONT></P>
      <P DESIGNTIMESP=27006><FONT face=Tahoma size=2 DESIGNTIMESP=27007>При использовании
      поддержки NDBM, NDBM фактически создает файлы filename.dir и filename.pag.
      GDBM (как и встроенная библиотека поддержки «плоских файлов») использует
      только один файл, a Berkeley DB создает файл fllename.db. Заметьте: РНР
      самостоятельно блокирует файл в дополнение к тому, что он может
      блокироваться библиотекой DBM. РНР не удаляет файлы .Ick, которые создает.
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27008><FONT face=Tahoma size=2 DESIGNTIMESP=27009>dbmclose
      </FONT></P>
      <P DESIGNTIMESP=27010><FONT face=Tahoma size=2 DESIGNTIMESP=27011>Закрытие БД DBM
      </FONT></P>
      <P DESIGNTIMESP=27012><FONT face=Tahoma size=2 DESIGNTIMESP=27013>bool dbmclose (int
      dbm_identifier) </FONT></P>
      <P DESIGNTIMESP=27014><FONT face=Tahoma size=2 DESIGNTIMESP=27015>Разблокирует и закрывает
      открытую БД. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27016><FONT face=Tahoma size=2 DESIGNTIMESP=27017>dbmexists
      </FONT></P>
      <P DESIGNTIMESP=27018><FONT face=Tahoma size=2 DESIGNTIMESP=27019>Проверка существования
      имени </FONT></P>
      <P DESIGNTIMESP=27020><FONT face=Tahoma size=2 DESIGNTIMESP=27021>bool dbmexists (int
      dbm_identifier, string key) </FONT></P>
      <P DESIGNTIMESP=27022><FONT face=Tahoma size=2 DESIGNTIMESP=27023>Возвращает TRUE, если
      имеется значение с именем key, или FALSE - при ошибке. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27024><FONT face=Tahoma size=2 DESIGNTIMESP=27025>dbmfetch
      </FONT></P>
      <P DESIGNTIMESP=27026><FONT face=Tahoma size=2 DESIGNTIMESP=27027>Получение значения
      элемента </FONT></P>
      <P DESIGNTIMESP=27028><FONT face=Tahoma size=2 DESIGNTIMESP=27029>string dbmfetch (int
      dbirMdentifier, string key) </FONT></P>
      <P DESIGNTIMESP=27030><FONT face=Tahoma size=2 DESIGNTIMESP=27031>Возвращает значение для
      имени key. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27032><FONT face=Tahoma size=2 DESIGNTIMESP=27033>dbminsert
      </FONT></P>
      <P DESIGNTIMESP=27034><FONT face=Tahoma size=2 DESIGNTIMESP=27035>Добавление элемента
      </FONT></P>
      <P DESIGNTIMESP=27036><FONT face=Tahoma size=2 DESIGNTIMESP=27037>int dbminsert (int
      dbm_identifier, string key, string value) </FONT></P>
      <P DESIGNTIMESP=27038><FONT face=Tahoma size=2 DESIGNTIMESP=27039>Возвращает -1, если БД
      была открыта только для чтения; 0, если добавление было успешно выполнено;
      и 1, если указанный элемент уже существует (для замены используйте
      dbmreplace()). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27040><FONT face=Tahoma
      size=2 DESIGNTIMESP=27041>dbmreplace </FONT></P>
      <P DESIGNTIMESP=27042><FONT face=Tahoma size=2 DESIGNTIMESP=27043>Замена значения
      </FONT></P>
      <P DESIGNTIMESP=27044><FONT face=Tahoma size=2 DESIGNTIMESP=27045>bool dbmreplace (int
      dbm_identifier, string key. string value) Если указанного элемента key не
      существовало, он создается. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27046><FONT face=Tahoma size=2 DESIGNTIMESP=27047>dbmdelete
      </FONT></P>
      <P DESIGNTIMESP=27048><FONT face=Tahoma size=2 DESIGNTIMESP=27049>Удаление элемента
      </FONT></P>
      <P DESIGNTIMESP=27050><FONT face=Tahoma size=2 DESIGNTIMESP=27051>boo! dbmdelete (int
      dbnMdentifier, string key) </FONT></P>
      <P DESIGNTIMESP=27052><FONT face=Tahoma size=2 DESIGNTIMESP=27053>Возвращает FALSE, если
      элемент key в БД не присутствует. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27054><FONT face=Tahoma
      size=2 DESIGNTIMESP=27055>dbmfirstkey </FONT></P>
      <P DESIGNTIMESP=27056><FONT face=Tahoma size=2 DESIGNTIMESP=27057>Получение имени первого
      элемента </FONT></P>
      <P DESIGNTIMESP=27058><FONT face=Tahoma size=2 DESIGNTIMESP=27059>string dbmfirstkey (int
      dbm_identifier) </FONT></P>
      <P DESIGNTIMESP=27060><FONT face=Tahoma size=2 DESIGNTIMESP=27061>Порядок элементов не
      гарантируется (так как могут использоваться внутренние хеш-таблицы).
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27062><FONT face=Tahoma
      size=2 DESIGNTIMESP=27063>dbmnextkey </FONT></P>
      <P DESIGNTIMESP=27064><FONT face=Tahoma size=2 DESIGNTIMESP=27065>Получение следующего
      элемента </FONT></P>
      <P DESIGNTIMESP=27066><FONT face=Tahoma size=2 DESIGNTIMESP=27067>string dbmnextkey (int
      dbm_identifier, string key) </FONT></P>
      <P DESIGNTIMESP=27068><FONT face=Tahoma size=2 DESIGNTIMESP=27069>В примере
      демонстрируется, как можно получить все значения БД: </FONT></P>
      <P class=list DESIGNTIMESP=27070><FONT face=Tahoma size=2 DESIGNTIMESP=27071>$key =
      dbmfirstkey (Sdbmjid). while ($key) { <br designtimesp=27072>echo "$key
      = " . dbmfetch (Sdbmjd. $key) . "\n": <br designtimesp=27073>$key =
      dbmnextkey (Sdbmjd. $key) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27074><FONT face=Tahoma size=2 DESIGNTIMESP=27075>dblist
      </FONT></P>
      <P DESIGNTIMESP=27076><FONT face=Tahoma size=2 DESIGNTIMESP=27077>Получение описания
      используемой библиотеки DBM I </FONT></P>
      <P DESIGNTIMESP=27078><FONT face=Tahoma size=2 DESIGNTIMESP=27079>string dblist (void)
      </FONT></P>
      <P class=Title_2 DESIGNTIMESP=27080><a name=14
       designtimesp=27081></A><FONT face=Tahoma size=2 DESIGNTIMESP=27082>Абстракция уровня dbm
      </FONT></P>
      <P DESIGNTIMESP=27083><FONT face=Tahoma size=2 DESIGNTIMESP=27084>Эти функции предназначены
      для работы с разновидностями Berkeley DB. Фактически поддержка ограничена
      современными подобиями Slcepycat Software DB2 (не путайте с IBM DB2,
      использующей интерфейс ODBC). </FONT></P>
      <P DESIGNTIMESP=27085><FONT face=Tahoma size=2 DESIGNTIMESP=27086>Действие некоторых
      функций различается в зависимости от реализации БД. Например, функции
      dba_optimize() и dba_sync() действуют согласно описанию, но могут быть
      совершенно бесполезны для некоторых видов БД. </FONT></P>
      <P DESIGNTIMESP=27087><FONT face=Tahoma size=2 DESIGNTIMESP=27088>Чтобы добавить поддержку
      ниже перечисленных БД в РНР, используйте указанные параметры —with
      сценария конфигурирования configure. </FONT></P>
      <ul designtimesp=27089>
        <li designtimesp=27090><FONT face=Tahoma size=2 DESIGNTIMESP=27091>Dbm — начальная версия
        Berkeley DB. Постарайтесь ее не использовать из-за проблем совместимости
        (- -with-dbm). </FONT>
        <li designtimesp=27092><FONT face=Tahoma size=2 DESIGNTIMESP=27093>Ndbm — новый и более
        удобный тип, нежели dbm. Но имеет многие недостатки dbm (--with-ndbm).
        </FONT>
        <li designtimesp=27094><FONT face=Tahoma size=2 DESIGNTIMESP=27095>Gdbra — GNU database
        manager (ftp://ftp.gnu.org/pub/gnu/gdbm/) (--with-gdbm). </FONT>
        <li designtimesp=27096><FONT face=Tahoma size=2 DESIGNTIMESP=27097>DB2 — Sleepycat
        Software's DB2 (http://www.steepycat.com/). Описывается как
        «высокоскоростная, подходящая как для клиентских, так и для
        клиент-серверных приложений». Использует бинарные деревья вместо
        хеш-таблиц (--with-db2). </FONT>
        <li designtimesp=27098><FONT face=Tahoma size=2 DESIGNTIMESP=27099>DB3 — Sleepycat
        Software's DB3 (- -with-db3). </FONT>
        <li designtimesp=27100><FONT face=Tahoma size=2 DESIGNTIMESP=27101>Cdb — «быстрая,
        облегченная, для хранения констант»; предоставляет доступ только для
        чтения (- -with-cdb). </FONT></LI></UL>
      <p class=list designtimesp=27102><FONT face=Tahoma size=2 DESIGNTIMESP=27103>php $id =
      dba_open ("/Imp/test.db", "n". "db2'). <br designtimesp=27104>if (!$id)
      { echo "dba_open failed\n": exit: } <br designtimesp=27105>1 dba_replace
      ("key". "This TS an example!", Sid): <br designtimesp=27106>/ if
      (dba_exists ("key", $id)) { <br designtimesp=27107>echo dba_fetch
      ("key", $nd): dba_delete ("key", $id): } <br
       designtimesp=27108>dba_sync($id): dba_close($id): ?&gt; </FONT></P>
      <P DESIGNTIMESP=27109><FONT face=Tahoma size=2 DESIGNTIMESP=27110>DBA позволяет работать с
      двоичными данными и ограничена только возможностями БД. БД, использующие
      файлы, должны предоставлять возможность указания режима открытия файла БД
      (или его создания), и обычно это указывается в аргументе функций
      dba_open() и dba_popen(). </FONT></P>
      <P DESIGNTIMESP=27111><FONT face=Tahoma size=2 DESIGNTIMESP=27112>Получить последовательно
      все содержащиеся в БД элементы можно, используя функции dba_firstkey() и
      dba_nextkey(). He изменяйте БД во время просмотра. </FONT></P>
      <P class=list DESIGNTIMESP=27113><FONT face=Tahoma size=2 DESIGNTIMESP=27114>&lt;?php i ..
      .open database . <br designtimesp=27115>$key - dba_firstkey (Sid): <br
       designtimesp=27116>while ($key ' = FALSE) { <br designtimesp=27117>If
      (.,.){ # запомнить имя для последующей<br designtimesp=27118>операции
      $handle_later[] = $'&lt;еу: } <br designtimesp=27119>$key = dba nextkey
      (Sid): } <br designtimesp=27120>for ($1 = 0: $1 &lt;
      count($handle_iater);<br designtimesp=27121>$i++) dbajJelete
      ($handle_later[$i]. $id): ?&gt; </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27122><FONT face=Tahoma size=2 DESIGNTIMESP=27123>dba_open
      </FONT></P>
      <P DESIGNTIMESP=27124><FONT face=Tahoma size=2 DESIGNTIMESP=27125>Открытие БД </FONT></P>
      <P DESIGNTIMESP=27126><FONT face=Tahoma size=2 DESIGNTIMESP=27127>Int dba_open (string
      path, string mode, string handler [, ...]) </FONT></P>
      <P DESIGNTIMESP=27128><FONT face=Tahoma size=2 DESIGNTIMESP=27129>Открывает содержащуюся в
      файле path БД типа handler в режиме mode, который .может принимать
      следующие значения: «г» для чтения, «w» для чтения и записи, «с» для
      открытия уже существующей (или i создания отсутствующей БД) с доступом для
      чтения и записи и «n» для создания файла БД заново и открытия его для
      чтения и записи. Дополнительные аргументы могут указываться для некоторых
      БД при необходимости. Функция возвращает дескриптор открытой БД /
      (необходимый последующим функциям для выполнения операций f, с БД) или,
      при ошибке, FALSE. </FONT></P>
      <P DESIGNTIMESP=27130><FONT face=Tahoma size=2 DESIGNTIMESP=27131>См. также: dba_popen(),
      dba_close(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27132><FONT face=Tahoma size=2 DESIGNTIMESP=27133>dba_close
      </FONT></P>
      <P DESIGNTIMESP=27134><FONT face=Tahoma size=2 DESIGNTIMESP=27135>Закрытие БД </FONT></P>
      <P DESIGNTIMESP=27136><FONT face=Tahoma size=2 DESIGNTIMESP=27137>void dba_close (int
      handle) </FONT></P>
      <P DESIGNTIMESP=27138><FONT face=Tahoma size=2 DESIGNTIMESP=27139>См. также: dba_open() и
      dba_popen(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27140><FONT face=Tahoma size=2 DESIGNTIMESP=27141>dba_popen
      </FONT></P>
      <P DESIGNTIMESP=27142><FONT face=Tahoma size=2 DESIGNTIMESP=27143>Устойчивое открытие БД
      </FONT></P>
      <P DESIGNTIMESP=27144><FONT face=Tahoma size=2 DESIGNTIMESP=27145>int dba_popen (string
      path, string mode, string handler [, ...]) </FONT></P>
      <P DESIGNTIMESP=27146><FONT face=Tahoma size=2 DESIGNTIMESP=27147>Функция подобна
      dba_open(), но подключение не закрывается при завершении сценария, а
      остается действительным для последующего использования. </FONT></P>
      <P DESIGNTIMESP=27148><FONT face=Tahoma size=2 DESIGNTIMESP=27149>См. также dba_close().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27150><FONT face=Tahoma
      size=2 DESIGNTIMESP=27151>dba_exists </FONT></P>
      <P DESIGNTIMESP=27152><FONT face=Tahoma size=2 DESIGNTIMESP=27153>Проверка наличия элемента
      в БД </FONT></P>
      <P DESIGNTIMESP=27154><FONT face=Tahoma size=2 DESIGNTIMESP=27155>bool dba_exists (string
      key. int handle) </FONT></P>
      <P DESIGNTIMESP=27156><FONT face=Tahoma size=2 DESIGNTIMESP=27157>Возвращает TRUE, если
      элемент с именем key имеется в БД handle FALSE в противном случае или при
      ошибке. </FONT></P>
      <P DESIGNTIMESP=27158><FONT face=Tahoma size=2 DESIGNTIMESP=27159>См. также: dba fetch(),
      dba_delete(), dba_insert() и dba_replace(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27160><FONT face=Tahoma
      size=2 DESIGNTIMESP=27161>dba_firstkey </FONT></P>
      <P DESIGNTIMESP=27162><FONT face=Tahoma size=2 DESIGNTIMESP=27163>Возвращение имени первого
      элемента БД string dba_firstkey (int handle) </FONT></P>
      <P DESIGNTIMESP=27164><FONT face=Tahoma size=2 DESIGNTIMESP=27165>См. также Dba_nextkey().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27166><FONT face=Tahoma
      size=2 DESIGNTIMESP=27167>dba_nextkey </FONT></P>
      <P DESIGNTIMESP=27168><FONT face=Tahoma size=2 DESIGNTIMESP=27169>Возвращение имени
      следующего элемента БД string dbajnextkey (int handle)</FONT></P>
      <P DESIGNTIMESP=27170><FONT face=Tahoma size=2 DESIGNTIMESP=27171>См. также dba_firstkey().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27172><FONT face=Tahoma size=2 DESIGNTIMESP=27173>dba_fetch
      </FONT></P>
      <P DESIGNTIMESP=27174><FONT face=Tahoma size=2 DESIGNTIMESP=27175>Получение значения
      указанного элемента </FONT></P>
      <P DESIGNTIMESP=27176><FONT face=Tahoma size=2 DESIGNTIMESP=27177>string dba_fetch (string
      key, int handle) </FONT></P>
      <P DESIGNTIMESP=27178><FONT face=Tahoma size=2 DESIGNTIMESP=27179>См. также: dba_exists(),
      dba_delete(), dba_insert() и dba_replace(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27180><FONT face=Tahoma
      size=2 DESIGNTIMESP=27181>dba_insert </FONT></P>
      <P DESIGNTIMESP=27182><FONT face=Tahoma size=2 DESIGNTIMESP=27183>Добавление элемента в БД
      </FONT></P>
      <P DESIGNTIMESP=27184><FONT face=Tahoma size=2 DESIGNTIMESP=27185>boo! dba_insert (string
      key, string value, int handle) </FONT></P>
      <P DESIGNTIMESP=27186><FONT face=Tahoma size=2 DESIGNTIMESP=27187>Если элемент с именем key
      уже присутствует в БД, операция не вы полняется. Возвращает TRUE пли FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=27188><FONT face=Tahoma size=2 DESIGNTIMESP=27189>См. также: dba_exists(),
      dba_delete(), dba_fetch(), dba_replace(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27190><FONT face=Tahoma
      size=2 DESIGNTIMESP=27191>dba_replace </FONT></P>
      <P DESIGNTIMESP=27192><FONT face=Tahoma size=2 DESIGNTIMESP=27193>Замена или добавление
      элемента </FONT></P>
      <P DESIGNTIMESP=27194><FONT face=Tahoma size=2 DESIGNTIMESP=27195>boo! dba_replace (string
      key, string value, int handle) </FONT></P>
      <P DESIGNTIMESP=27196><FONT face=Tahoma size=2 DESIGNTIMESP=27197>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=27198><FONT face=Tahoma size=2 DESIGNTIMESP=27199>См. также: dba_exists(),
      dba_delete(), dba_fetch() и dba_insert(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27200><FONT face=Tahoma
      size=2 DESIGNTIMESP=27201>dba_delete </FONT></P>
      <P DESIGNTIMESP=27202><FONT face=Tahoma size=2 DESIGNTIMESP=27203>Удаление элемента
      </FONT></P>
      <P DESIGNTIMESP=27204><FONT face=Tahoma size=2 DESIGNTIMESP=27205>string dba_delete (string
      key, int handle) </FONT></P>
      <P DESIGNTIMESP=27206><FONT face=Tahoma size=2 DESIGNTIMESP=27207>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=27208><FONT face=Tahoma size=2 DESIGNTIMESP=27209>См. также: dba_exists(),
      dba_fetch(), dba_insert() и dba_replace(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27210><FONT face=Tahoma
      size=2 DESIGNTIMESP=27211>dba_optimize </FONT></P>
      <P DESIGNTIMESP=27212><FONT face=Tahoma size=2 DESIGNTIMESP=27213>Оптимизация БД
</FONT></P>
      <P DESIGNTIMESP=27214><FONT face=Tahoma size=2 DESIGNTIMESP=27215>bool dba_optimfze (int
      handle) </FONT></P>
      <P DESIGNTIMESP=27216><FONT face=Tahoma size=2 DESIGNTIMESP=27217>Возвращает TRUE пли FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=27218><FONT face=Tahoma size=2 DESIGNTIMESP=27219>См. также dba_sync().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27220><FONT face=Tahoma size=2 DESIGNTIMESP=27221>dba_sync
      </FONT></P>
      <P DESIGNTIMESP=27222><FONT face=Tahoma size=2 DESIGNTIMESP=27223>Синхронизация изменений в
      БД </FONT></P>
      <P DESIGNTIMESP=27224><FONT face=Tahoma size=2 DESIGNTIMESP=27225>boo! dba_sync (int
      handle) . </FONT></P>
      <P DESIGNTIMESP=27226><FONT face=Tahoma size=2 DESIGNTIMESP=27227>Обычно физически
      синхронизация изменений происходит сохранением файла на диск. Если эту
      операцию не выполнять, изменения БД будут потеряны. </FONT></P>
      <P DESIGNTIMESP=27228><FONT face=Tahoma size=2 DESIGNTIMESP=27229>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P DESIGNTIMESP=27230><FONT face=Tahoma size=2 DESIGNTIMESP=27231>См. также dba_optimize().
      </FONT></P>
      <P class=Title_2 DESIGNTIMESP=27232><a name=15
       designtimesp=27233></A><FONT face=Tahoma size=2 DESIGNTIMESP=27234>filePro </FONT></P>
      <P DESIGNTIMESP=27235><FONT face=Tahoma size=2 DESIGNTIMESP=27236>Функции позволяют читать
      данные БД filePro.</FONT></P>
      <P DESIGNTIMESP=27237><FONT face=Tahoma size=2 DESIGNTIMESP=27238>См. также http://www.
      fiteproplus.com/. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27239><FONT face=Tahoma size=2 DESIGNTIMESP=27240>filepro
      </FONT></P>
      <P DESIGNTIMESP=27241><FONT face=Tahoma size=2 DESIGNTIMESP=27242>Чтение и проверка
      map-файла </FONT></P>
      <P DESIGNTIMESP=27243><FONT face=Tahoma size=2 DESIGNTIMESP=27244>booll filepro (string
      directory) </FONT></P>
      <P DESIGNTIMESP=27245><FONT face=Tahoma size=2 DESIGNTIMESP=27246>Map-файл содержит
      информацию о БД и ее структуре. Так как никакой блокировки не выполняется,
      постарайтесь не модифицировать БД, открывая се в РНР. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27247><FONT face=Tahoma
      size=2 DESIGNTIMESP=27248>filepro_fieldcount </FONT></P>
      <P DESIGNTIMESP=27249><FONT face=Tahoma size=2 DESIGNTIMESP=27250>Получение информации о
      числе полей в БД int filepro_fieldcount(void); </FONT></P>
      <P DESIGNTIMESP=27251><FONT face=Tahoma size=2 DESIGNTIMESP=27252>См. также filepro().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27253><FONT face=Tahoma
      size=2 DESIGNTIMESP=27254>filepro_rowcount </FONT></P>
      <P DESIGNTIMESP=27255><FONT face=Tahoma size=2 DESIGNTIMESP=27256>Получение информации о
      числе записей в БД filePro </FONT></P>
      <P DESIGNTIMESP=27257><FONT face=Tahoma size=2 DESIGNTIMESP=27258>int
      filepro_rowcount(void);</FONT></P>
      <P DESIGNTIMESP=27259><FONT face=Tahoma size=2 DESIGNTIMESP=27260>См. также filepro().
      </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27261><FONT face=Tahoma
      size=2 DESIGNTIMESP=27262>filepro_retrieve </FONT></P>
      <P DESIGNTIMESP=27263><FONT face=Tahoma size=2 DESIGNTIMESP=27264>Извлечение данных
      </FONT></P>
      <P DESIGNTIMESP=27265><FONT face=Tahoma size=2 DESIGNTIMESP=27266>string filepro retrieve
      (int rowjiumber, int field_number) </FONT></P>
      <P DESIGNTIMESP=27267><FONT face=Tahoma size=2 DESIGNTIMESP=27268>Возвращает данные поля,
      указанного номером fieldjiumber для записи rowjiumber. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27269><FONT face=Tahoma
      size=2 DESIGNTIMESP=27270>filepro_fieldname </FONT></P>
      <P DESIGNTIMESP=27271><FONT face=Tahoma size=2 DESIGNTIMESP=27272>Получение имени поля
      </FONT></P>
      <P DESIGNTIMESP=27273><FONT face=Tahoma size=2 DESIGNTIMESP=27274>string filepro_fieldname
      (int field_number) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27275><FONT face=Tahoma
      size=2 DESIGNTIMESP=27276>filepro_fieldtype </FONT></P>
      <P DESIGNTIMESP=27277><FONT face=Tahoma size=2 DESIGNTIMESP=27278>Определение типа поля
      </FONT></P>
      <P DESIGNTIMESP=27279><FONT face=Tahoma size=2 DESIGNTIMESP=27280>string fi]epro_fieldtype
      (int field_number) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27281><FONT face=Tahoma
      size=2 DESIGNTIMESP=27282>filepro-fieldwidth </FONT></P>
      <P DESIGNTIMESP=27283><FONT face=Tahoma size=2 DESIGNTIMESP=27284>Определение размера поля
      </FONT></P>
      <P DESIGNTIMESP=27285><FONT face=Tahoma size=2 DESIGNTIMESP=27286>int filepro_fie1dwidth
      (int field_number) </FONT></P>
      <P class=Title_2 DESIGNTIMESP=27287><a name=16
       designtimesp=27288></A><FONT face=Tahoma size=2 DESIGNTIMESP=27289>Ovrimos SQL </FONT></P>
      <P DESIGNTIMESP=27290><FONT face=Tahoma size=2 DESIGNTIMESP=27291>Ovrimos SQL Server — это
      клиент-серверная реляционная БД с поддержкой быстрых транзакций и
      "web-возможностями (http://www. ovrimos.com/). Для поддержки ovrimos в РНР
      необходимо скомпилировать его с параметром конфигурирования -with-ovrimos.
      Также необходимо установить библиотеку sqlcli, входящую я комплект
      поставки Ovrimos SQL Server. </FONT></P>
      <P DESIGNTIMESP=27292><FONT face=Tahoma size=2 DESIGNTIMESP=27293>&lt;?php </FONT></P>
      <P DESIGNTIMESP=27294><FONT face=Tahoma size=2 DESIGNTIMESP=27295>Sconn = ovrTnos_connect("
      server, сот;" "800Г. "admin", "passwrd"). </FONT></P>
      <P class=list DESIGNTIMESP=27296><FONT face=Tahoma size=2 DESIGNTIMESP=27297>if ($conn !=
      0) { echo ("Connection ok!"), <br designtimesp=27298>// select from a
      system tdble $res = ovnmos_exec (Iconn. <br designtimesp=27299>"select
      table_id. tablejtame from sys.tables"),<br designtimesp=27300>if ($res
      != 0) { echo "Statement ok!": ovrimos result_all ($res). <br
       designtimesp=27301>ovnmos_free_result ($res): } ovrimos close(Sconn). }
      ?&gt; </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27302><FONT face=Tahoma
      size=2 DESIGNTIMESP=27303>ovrimos_connect </FONT></P>
      <P DESIGNTIMESP=27304><FONT face=Tahoma size=2 DESIGNTIMESP=27305>Подключение к серверу и
      выбор БД </FONT></P>
      <P DESIGNTIMESP=27306><FONT face=Tahoma size=2 DESIGNTIMESP=27307>int ovrimos_connect
      (string host, string db. string user, string password) </FONT></P>
      <P DESIGNTIMESP=27308><FONT face=Tahoma size=2 DESIGNTIMESP=27309>Возвращает дескриптор
      подключения или FALSE — при ошибке. В аргументе host указывается имя
      сервера или его IP-адрес, в db указывается либо имя БД, либо номер порта
      подключения. Также указываются имя пользователя и его пароль. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27310><FONT face=Tahoma
      size=2 DESIGNTIMESP=27311>ovrimos_close </FONT></P>
      <P DESIGNTIMESP=27312><FONT face=Tahoma size=2 DESIGNTIMESP=27313>Закрытие указанного
      подключения </FONT></P>
      <P DESIGNTIMESP=27314><FONT face=Tahoma size=2 DESIGNTIMESP=27315>void ovrimos_close (int
      connection) </FONT></P>
      <P DESIGNTIMESP=27316><FONT face=Tahoma size=2 DESIGNTIMESP=27317>Все незавершенные
      транзакции отменяются. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27318><FONT face=Tahoma
      size=2 DESIGNTIMESP=27319>ovrimos_close_all </FONT></P>
      <P DESIGNTIMESP=27320><FONT face=Tahoma size=2 DESIGNTIMESP=27321>Закрытие всех подключений
      </FONT></P>
      <P DESIGNTIMESP=27322><FONT face=Tahoma size=2 DESIGNTIMESP=27323>void ovrimos_close_a"ll
      (void) </FONT></P>
      <P DESIGNTIMESP=27324><FONT face=Tahoma size=2 DESIGNTIMESP=27325>Все незавершенные
      транзакции отменяются. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27326><FONT face=Tahoma
      size=2 DESIGNTIMESP=27327>ovrimos_cursor </FONT></P>
      <P DESIGNTIMESP=27328><FONT face=Tahoma size=2 DESIGNTIMESP=27329>Получение типа курсора
      </FONT></P>
      <P DESIGNTIMESP=27330><FONT face=Tahoma size=2 DESIGNTIMESP=27331>int ovrimos_cursor (int
      resulted) </FONT></P>
      <P DESIGNTIMESP=27332><FONT face=Tahoma size=2 DESIGNTIMESP=27333>Полезно при выполнении
      позиционированных обновлений или удалениях. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27334><FONT face=Tahoma
      size=2 DESIGNTIMESP=27335>ovrimos_longreadlen </FONT></P>
      <P DESIGNTIMESP=27336><FONT face=Tahoma size=2 DESIGNTIMESP=27337>Установка числа
      возвращаемых байтов для длинных полей int ovriraos_longreadlen (int
      result_id, int length) </FONT></P>
      <P DESIGNTIMESP=27338><FONT face=Tahoma size=2 DESIGNTIMESP=27339>Для полей типа LONG
      VARCHAR и LONG VARBINARY, по умолчанию, возвращается 0 байтов, но можно
      установить произвольное значение в аргументе length. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27340><FONT face=Tahoma
      size=2 DESIGNTIMESP=27341>ovrimos_prepare </FONT></P>
      <P DESIGNTIMESP=27342><FONT face=Tahoma size=2 DESIGNTIMESP=27343>Подготовка запроса
      </FONT></P>
      <P DESIGNTIMESP=27344><FONT face=Tahoma size=2 DESIGNTIMESP=27345>int ovrimos_prepare (int
      connection_id, string query) </FONT></P>
      <P DESIGNTIMESP=27346><FONT face=Tahoma size=2 DESIGNTIMESP=27347>Возвращает FALSE (при
      ошибке) или дескриптор запроса, используемый для его последующего
      исполнения функцией ovrimos_execute(). </FONT></P>
      <P class=list DESIGNTIMESP=27348><FONT face=Tahoma size=2 DESIGNTIMESP=27349>&lt;?php
      $conn=ovrimos_connect<br designtimesp=27350>("dbjiost". "8001". "admin",
      "password"); <br designtimesp=27351>if ($conn'=0) { echo "Connection
      ok!"; <br designtimesp=27352>$res=ovrimos_prepare ($conn. <br
       designtimesp=27353>"select tablejd. table_name from sys.tables<br
       designtimesp=27354>where table_id=l"); if ($res ' = 0) { <br
       designtimesp=27355>echo "Prepare ok!"; if (ovnmos_execute ($res))<br
       designtimesp=27356>{ echo "Execute ok!\n". ovnmos_result_all ($res); <br
       designtimesp=27357>) else { echo "Execute not ok!"; } <br
       designtimesp=27358>ovnmos_free_result ($res): } else { <br
       designtimesp=27359>echo "Prepare not ok!\n": } ovnmos_close (Sconn);}
      ?&gt; </FONT>
      <P class=Text_Bold DESIGNTIMESP=27360><FONT face=Tahoma
      size=2 DESIGNTIMESP=27361>ovrimos_execute </FONT></P>
      <P DESIGNTIMESP=27362><FONT face=Tahoma size=2 DESIGNTIMESP=27363>Выполнение
      подготовленного запроса </FONT></P>
      <P DESIGNTIMESP=27364><FONT face=Tahoma size=2 DESIGNTIMESP=27365>int ovrimos_execute (int
      result_id [, array parameters_array]) </FONT></P>
      <P DESIGNTIMESP=27366><FONT face=Tahoma size=2 DESIGNTIMESP=27367>Запрос должен быть
      предварительно подготовлен функцией ovrimos_ preparet). Возвращает TRUE
      или FALSE — при ошибке. Если запрос имеет параметры (обозначенные знаком
      вопроса), их значения передаются в массиве parameters_array. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27368><FONT face=Tahoma
      size=2 DESIGNTIMESP=27369>ovrimos_exec </FONT></P>
      <P DESIGNTIMESP=27370><FONT face=Tahoma size=2 DESIGNTIMESP=27371>Выполнение запроса
      </FONT></P>
      <P DESIGNTIMESP=27372><FONT face=Tahoma size=2 DESIGNTIMESP=27373>int ovrimos_exec (int
      connection_id, string query) </FONT></P>
      <P DESIGNTIMESP=27374><FONT face=Tahoma size=2 DESIGNTIMESP=27375>Возвращает дескриптор
      возвращенного набора записей или FALSE - при ошибке. Запрос не должен
      содержать параметров. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27376><FONT face=Tahoma
      size=2 DESIGNTIMESP=27377>ovrimos_num_rows </FONT></P>
      <P DESIGNTIMESP=27378><FONT face=Tahoma size=2 DESIGNTIMESP=27379>Получение числа
      измененных записей в БД </FONT></P>
      <P DESIGNTIMESP=27380><FONT face=Tahoma size=2 DESIGNTIMESP=27381>int ovrimos_num_rows (int
      result_id) </FONT></P>
      <P DESIGNTIMESP=27382><FONT face=Tahoma size=2 DESIGNTIMESP=27383>Функция возвращает число
      записей, которые были изменены запросом. </FONT></P>
      <P class=list DESIGNTIMESP=27384><FONT face=Tahoma size=2 DESIGNTIMESP=27385>&lt;?php Sconn
      = ovrimos_connect<br designtimesp=27386>("dbjiost". "8001". "admin",
      "password"). <br designtimesp=27387>if ($conn i= 0) { echo "Connection
      ok!": <br designtimesp=27388>Sres - ovrimos_exec (Sconn. "update test
      set i=5"): <br designtimesp=27389>if ($res != 0) { echo "Statement ok!":
      <br designtimesp=27390>echo ovrimos_num_rows ($res).<br
       designtimesp=27391>" Записей изменено \п": ovnmos_free_result (Sres): }
      <br designtimesp=27392>ovrimos_close (Sconn): } ?&gt; </FONT>
      <P class=Text_Bold DESIGNTIMESP=27393><FONT face=Tahoma
      size=2 DESIGNTIMESP=27394>ovrimos_num_fields </FONT></P>
      <P DESIGNTIMESP=27395><FONT face=Tahoma size=2 DESIGNTIMESP=27396>Получение числа полей,
      возвращенных запросом </FONT></P>
      <P DESIGNTIMESP=27397><FONT face=Tahoma size=2 DESIGNTIMESP=27398>int ovrimos_num_fields
      (int result_id) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27399><FONT face=Tahoma
      size=2 DESIGNTIMESP=27400>ovrimos_fetch_into </FONT></P>
      <P DESIGNTIMESP=27401><FONT face=Tahoma size=2 DESIGNTIMESP=27402>Занесение записи в массив
      </FONT></P>
      <P DESIGNTIMESP=27403><FONT face=Tahoma size=2 DESIGNTIMESP=27404>int ovrimos_fetch_into
      (int resu!t_id, array resu!t_array [, string how [, int rownumber]])
      </FONT></P>
      <P DESIGNTIMESP=27405><FONT face=Tahoma size=2 DESIGNTIMESP=27406>Функция сохраняет поля
      записи в массиве result_array, который должен передаваться по ссылке.
      Какая запись будет сохранена, указывается в аргументе how, который может
      принимать одно из значений: «Next» (по умолчанию), «Prev», «First»,
      «Last», «Absolute» (для этого случая требуется указать номер записи в
      аргументе rownumber). Регистр не учитывается. Возвращает TRUE или FALSE —
      при ошибке. </FONT></P>
      <P class=list DESIGNTIMESP=27407><FONT face=Tahoma size=2 DESIGNTIMESP=27408>&lt;?php
      $conn=ovrimos_connect <br designtimesp=27409>("neptune", "8001".
      "admin", "password"); <br designtimesp=27410>if ($conn!=0) { echo
      "Connection ok": <br designtimesp=27411>$res=ovrimos_exec (Sconn."select
      t_id. t_name from tbl"): <br designtimesp=27412>if ($res != 0) { <br
       designtimesp=27413>echo "Statement ok!"; if (ovrimos_fetch_into<br
       designtimesp=27414>($res. &amp;Srow)) { list ($table_id. $table_name)<br
       designtimesp=27415>= $row. echo "t_id=".$table_id.". tjiame=",<br
       designtimesp=27416>$table_name."\n"; if <br
       designtimesp=27417>(ovnmos_fetch_into ($res. &amp;$row)) <br
       designtimesp=27418>{ / list ($table_id, $table_name) = $row: <br
       designtimesp=27419>echo "t_id=".$table_id.". t_name=",$table_name."\n";
      j <br designtimesp=27420>} else { \. echo "Next; error\n"; } else { <br
       designtimesp=27421>echo "First; error\n"; } ovnmos_free result ($res); }
      <br designtimesp=27422>ovnmos_close ($conn); ?&gt; </FONT>
      <P class=Text_Bold DESIGNTIMESP=27423><FONT face=Tahoma
      size=2 DESIGNTIMESP=27424>ovrimos_fetch_row </FONT></P>
      <P DESIGNTIMESP=27425><FONT face=Tahoma size=2 DESIGNTIMESP=27426>Получение записи
      </FONT></P>
      <P DESIGNTIMESP=27427><FONT face=Tahoma size=2 DESIGNTIMESP=27428>int ovrimos_fetch_row
      (int result_id [, int how [, int rowjiumber]]) </FONT></P>
      <P DESIGNTIMESP=27429><FONT face=Tahoma size=2 DESIGNTIMESP=27430>Выбирает запись из
      возвращенных запросом для того, чтобы ее данные можно было получить
      функцией ovrimos_resu"lt(). Возвращает TRUE или FALSE — при ошибке.
      </FONT></P>
      <P class=list DESIGNTIMESP=27431><FONT face=Tahoma size=2 DESIGNTIMESP=27432>&lt;?рhр Sconn
      = ovrimos_connect <br designtimesp=27433>("remote.host". "8001".
      "admin", "password"); <br designtimesp=27434>if (Sconn !- 0) { echo
      "Connection ok!"; <br designtimesp=27435>$res=ovrimos_exec ($conn,
      "select t_id. t_name from tbl"): <br designtimesp=27436>if ($res != 0) {
      echo "Statement ok!":<br designtimesp=27437>if (ovnmos_fetch_row ($res.
      "First")) { $table_id = ovrimos_result ($res. 1): $table_name =
      ovrimos_resu1t ($res. 2): echo "t_id=" $table_id.".<br
       designtimesp=27438>t_name=".$table_name."\n"; if <br
       designtimesp=27439>(ovrimos_fetch_row ($res. "Next")) { <br
       designtimesp=27440>$table_id = ovnmos_result ($res. "t_id"):<br
       designtimesp=27441>$t_name = ovrimos_result ($res. "t_name");<br
       designtimesp=27442>echo "t_id=" Stable_id ". t_name=" Stjname "\n";<br
       designtimesp=27443>} else { echo "Next errorXn": } } else { <br
       designtimesp=27444>echo "First- error\n". } <br
       designtimesp=27445>ovnmos_free_result ($res); } ovnmos_close<br
       designtimesp=27446>(Sconn); </FONT>
      <P class=Text_Bold DESIGNTIMESP=27447><FONT face=Tahoma
      size=2 DESIGNTIMESP=27448>ovrimos_result </FONT>
      <P DESIGNTIMESP=27449><FONT face=Tahoma size=2 DESIGNTIMESP=27450>Получение поля записи
      </FONT></P>
      <P DESIGNTIMESP=27451><FONT face=Tahoma size=2 DESIGNTIMESP=27452>int ovrimos_result (int
      resultjid, mixed field) </FONT></P>
      <P DESIGNTIMESP=27453><FONT face=Tahoma size=2 DESIGNTIMESP=27454>Возвращает поле записи,
      возвращенной запросом. Поле может быть указано его именем (или порядковым
      номером, начиная с 1) в аргументе field. Запись должна быть предварительно
      выбрана функцией ovrimos_fetch_row(). </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27455><FONT face=Tahoma
      size=2 DESIGNTIMESP=27456>ovrimos_result_all </FONT></P>
      <P DESIGNTIMESP=27457><FONT face=Tahoma size=2 DESIGNTIMESP=27458>Распечатка результата
      запроса в таблице HTML </FONT></P>
      <P DESIGNTIMESP=27459><FONT face=Tahoma size=2 DESIGNTIMESP=27460>int ovrimos_result_all
      (int resultjd [, string format]) </FONT></P>
      <P DESIGNTIMESP=27461><FONT face=Tahoma size=2 DESIGNTIMESP=27462>Возвращает TRUE или FALSE
      — при ошибке. </FONT></P>
      <P class=list DESIGNTIMESP=27463><FONT face=Tahoma size=2 DESIGNTIMESP=27464>&lt;?php Sconn
      = ovnmos_connect<br designtimesp=27465>("db_host". "8001". "admin",
      "password"); <br designtimesp=27466>if (Sconn != 0) { echo "Connection
      ok!"; <br designtimesp=27467>$res = ovrimos_prepare <br
       designtimesp=27468>(Sconn. "SELECT tablejid. table_name <br
       designtimesp=27469>FROM sys.tables WHERE tablejd = 7"); <br
       designtimesp=27470>if (Sres != 0) { echo "Prepare ok!"; <br
       designtimesp=27471>if (ovnmos_execute (ires. array(3))J { <br
       designtimesp=27472>ovrimos_result_all (Sres); } else { <br
       designtimesp=27473>erho "Fxecute not ok!": } <br
       designtimesp=27474>ovnmos_free_result (Srts); } else { <br
       designtimesp=27475>echo "Prepare not ok!\n". } ovnmos_close<br
       designtimesp=27476>(Sconn): } ?&gt; </FONT>
      <P DESIGNTIMESP=27477><FONT face=Tahoma size=2 DESIGNTIMESP=27478>Далее приводится
      расширенная версия приведенного выше сценария, выводящая метаинформацию.
      </FONT></P>
      <P class=list DESIGNTIMESP=27479><FONT face=Tahoma size=2 DESIGNTIMESP=27480>Example 2.
      Ovnmos_result_all with meta-information <br designtimesp=27481>&lt;?php
      Sconn - ovrimos_connect<br designtimesp=27482>("db_host". "8001".
      "admin", "password"): <br designtimesp=27483>if (Sconn '= 0) { echo
      "Connection ok.1". <br designtimesp=27484>$reb ^ ovnmos_exec (Sconn.<br
       designtimesp=27485>"select table_id. tablejiame from <br
       designtimesp=27486>sys.tables where tabloid = 1") if (Sres != 0) { , <br
       designtimesp=27487>echo "Statement ok! cu&gt;-sor="<br
       designtimesp=27488>ovrimos_cursor (Sres) "\p"; f <br
       designtimesp=27489>Scolnb = ovnmos_num_fields (Sres): <br
       designtimesp=27490>echo "Полей = " .Scolnb."\n". [ <br
       designtimesp=27491>for ($1=1: Si&lt;=$colnb: $i++) { <br
       designtimesp=27492>Sname = ovrimos_field_name (Sres. Si); <br
       designtimesp=27493>Stype = ovnmos_field_type (Sres. Si). <br
       designtimesp=27494>Slen = ovrimos_field_len (Sres. Si): <br
       designtimesp=27495>echo "Поле Si Имя: Sname <br
       designtimesp=27496>Тип: Stype разиер=" $!РП."\П"; } <br
       designtimesp=27497>ovnmos_result_all (Sres). <br
       designtimesp=27498>ovrimos_free_result (Sres): } ovrimos_close (Sconn).
      } ?&gt; </FONT>
      <P class=Text_Bold DESIGNTIMESP=27499><FONT face=Tahoma
      size=2 DESIGNTIMESP=27500>ovrimos_field_num </FONT></P>
      <P DESIGNTIMESP=27501><FONT face=Tahoma size=2 DESIGNTIMESP=27502>Получение порядкового
      номера поля </FONT></P>
      <P DESIGNTIMESP=27503><FONT face=Tahoma size=2 DESIGNTIMESP=27504>int ovrimos_field_num
      (Int result_id. string fieldjiame) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27505><FONT face=Tahoma
      size=2 DESIGNTIMESP=27506>ovrimos_field_name </FONT></P>
      <P DESIGNTIMESP=27507><FONT face=Tahoma size=2 DESIGNTIMESP=27508>Получение имени поля
      </FONT></P>
      <P DESIGNTIMESP=27509><FONT face=Tahoma size=2 DESIGNTIMESP=27510>int ovrimos_field_name
      (int result^id, int fieldjiumber) </FONT></P>
      <P DESIGNTIMESP=27511><FONT face=Tahoma size=2 DESIGNTIMESP=27512>Поле указывается его
      порядковым (начиная с 1) номером fieldjiumber. </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27513><FONT face=Tahoma
      size=2 DESIGNTIMESP=27514>ovrimos_field_type </FONT></P>
      <P DESIGNTIMESP=27515><FONT face=Tahoma size=2 DESIGNTIMESP=27516>Получение типа поля
      </FONT></P>
      <P DESIGNTIMESP=27517><FONT face=Tahoma size=2 DESIGNTIMESP=27518>int ovrimos_field_type
      (int resu!t_id, int field_number) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27519><FONT face=Tahoma
      size=2 DESIGNTIMESP=27520>ovrimos_field_len </FONT></P>
      <P DESIGNTIMESP=27521><FONT face=Tahoma size=2 DESIGNTIMESP=27522>Получение размера поля
      </FONT></P>
      <P DESIGNTIMESP=27523><FONT face=Tahoma size=2 DESIGNTIMESP=27524>int ovrimos_fieldjen (int
      result_id, int field_number) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27525><FONT face=Tahoma
      size=2 DESIGNTIMESP=27526>ovrimos_free_result </FONT></P>
      <P DESIGNTIMESP=27527><FONT face=Tahoma size=2 DESIGNTIMESP=27528>Уничтожение набора
      возвращенных записей </FONT></P>
      <P DESIGNTIMESP=27529><FONT face=Tahoma size=2 DESIGNTIMESP=27530>int ovrimos_free_result
      (int result_id) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27531><FONT face=Tahoma
      size=2 DESIGNTIMESP=27532>ovrimos_commit </FONT></P>
      <P DESIGNTIMESP=27533><FONT face=Tahoma size=2 DESIGNTIMESP=27534>Завершение транзакции
      </FONT></P>
      <P DESIGNTIMESP=27535><FONT face=Tahoma size=2 DESIGNTIMESP=27536>int ovrimos_commit (int
      connection_id) </FONT></P>
      <P class=Text_Bold DESIGNTIMESP=27537><FONT face=Tahoma
      size=2 DESIGNTIMESP=27538>ovrimos_rollback</FONT></P>
      <P DESIGNTIMESP=27539><FONT face=Tahoma size=2 DESIGNTIMESP=27540>Отмена транзакции
      </FONT></P>
      <P DESIGNTIMESP=27541><FONT face=Tahoma size=2 DESIGNTIMESP=27542>int ovrimos_rollback (int
      connection_id) </FONT></P></td>
  </tr>
</table>
</body>


Графика, Flash, pdf

  • Графика, Flash, pdf

  • Shockwave Flash
  • Ming для Flash
  • PDF-документы
  • ClibPDF
  • Forms Data Format

Графика, Flash, pdf

РНР позволяет выводить не только HTML-текст, но и создавать (и отсылать браузеру) графические данные в различных форматах (gif, png, jpg, wbmp, xpm). Для того чтобы РНР мог работать с графикой, требуется библиотека GD. Вероятно, также потребуются дополнительные библиотеки для поддержки особенных форматов. Начиная с версии 1.6, GD не поддерживает работу с форматом GIF; вместо него используется формат png.

Библиотека GD library доступна по адресу http://www.boutell.com/gd/.

Для работы с рисунками jpeg используется библиотека jpeg-6b (ftp:// ftp.uu.net/graphics/jpeg/), которую следует прикомпилировать с Gd, используя параметр компиляции РНР -with-jpeg-dir=/path/to/jpeg-6b. Для поддержки шрифтов Туре 1, используя параметр —with-tllib[= dir] установите tllib (ftp://ftp.neuroinformatik.ruhr-uni-bochum.de/pub/software/ tllib/).< /FONT>

Следующий пример (сценарий button.php) вызывается со страницы тегом вида <img src= "button.php?text">(в данном случае на рисунке images/buttonl.png будет выведена надпись «text» и затем этот рисунок будет отослан браузеру). Это более удобный способ, использующий готовый макет рисунка, не требующий его перерисовки с начала, но добавляющий в него дополнительные элементы. < /FONT>

<?prip // файл button.php
Headert"Content-type: image/png");
$stnng=implode($argv." "):
$1m = imageCreateFromPngC'images/buttonl.png"):
Sorange = ImageColorAllocate($1m. 220. 210. 60);
$px = (imagesx($im)-7.5*strlen($string))/2;
ImageStri ng($1m.3.$px.9.$stri ng.Sorange):
ImagePng($im); ImageDestroy($im); ?>

ImageTypes

Определение графических форматов, поддерживаемых РНР

int imagetypes(void);

Возвращает битовую маску графических форматов, поддерживаемых используемой библиотекой GD: IMG_GIF | IMG_JPG IMG_PNG | IMG_WBMP.

<?php if (ImageTypesO & IMG_PNG)
{ echo "формат PNG поддерживается". } ?>

ImageCreate

Создание рисунка

int imagecreate (int x_s1ze, int y_size)

Возвращает дескриптор созданной картинки размером x_size на y_size.

<?php header ("Content-type: image/png").
$ni = @ImageCreate (50. 100) or die
("Нельзя создать GD image ");
Sbackground_color -- ImageColorAllocate
(Sim. 255. 255. 255): $text_co1or = ImageColorAllocate
(Sim. 233. 14. 91): ImageStnng
($im, 1. 5. 5. "A Simple Text String". $text_color)
ImagePrg ($im): // передать рисунок браузеру ?>

ImageCreateFromGIF

Создание рисунка из файла GIF

Int imagecreatefromgif (string filename)

Возвращает дескриптор рисунка filename (можно указать URL) или пустую строку при ошибке (с выдачей предупреждения).

function LoadGif (Simgname) {
Sin1 @ImdgeCreateFromGIF ($imgname):
/* Attempt to open */ if (!$im) { /* See if it failed */
$im = ImageCreate (150. 30);
/* Create a blank image */ Sbgc =
ImageColorAl locate ($im. 255. 255. 255);
$tc = ImageColorAllocate ($im. 0. 0. 0):
ImageFilledRectangle (Sim. 0. 0. 150. 30, Sbgc);
ImageStnng($im. 1. 5. 5. "Error loading Simgname". Stc): }
return Sim. }

Так как GD, начиная с версии 1.6, не поддерживает GIF, функция недоступна для этих версий.

ImageCreateFromJPEG

Создание рисунка из файла JPEG

int imagecreatefromjpeg (string filename)

Возвращает дескриптор рисунка filename (можно указать URL) или пустую строку при ошибке (с выдачей предупреждения).

ImageCreateFromPNG

Создание рисунка из файла PNG

int imagecreatefrompng (string filename)

Возвращает дескриптор рисунка filename (можно указать URL) или пустую строку при ошибке (с выдачей предупреждения).

GetlmageSize

Получение свойств рисунка GIF, JPEG, PNG, SWF

array getimagesize (string filename [, array imageinfo])

Возвращает массив, содержащий информацию о графическом файле (4 элемента): [0] и [1] — ширина и высота рисунка в пикселах, [2] — тип файла (1 = GIF, 2 - JPG, 3 - PNG, 4 = SWF), [3] - строка вида «height= xxx width = xxx», которая может использоваться непосредственно в HTML-теге IMG.< /FONT>

<?php $size = GetlmageSize ("img/flag.jpg"): ?>
<IMG SRC= "img/flag.jpg"<7php echo $size[3]. ?> < /FONT>

Указав необязательный массив imageinfo, в нем можно сохранить дополнительную информацию о файле, например различные маркеры JPG APP (внедренную информацию). Часто в маркер АРР13 заносят информацию IPTC http://www.iptc.org/. Функция iptcparse() позволяет конвертировать эти данные АРР13 в читаемый вид.

<?php Ssize = GetlmageSize ("testimg.jpg".&$info):
if (isset ($info["APP13"])) {
Siptc = iptcparse ($info["APP13"]):
var_dump (Siptc): ; } ?>

Функция не требует библиотеки GD.

read_exif_data

Чтение заголовков EXIF из файла JPEG

array read_exif_data (string filename)

Возвращает ассоциативный массив, в котором индексами являются имена заголовков Exif. Заголовки Exif обычно хранят информацию цифровых камер (в различном виде).

<?php Sexif = read_exif_data Cp0001807.jpg');
while(list($k.$v)=each($exif))
{ echo "$k: $v<br>\n"; } ?> Output
FileName: p0001807.jpg
FileDateTime: 929353056 FileSize 378599
CameraMake: Eastman Kodak Company
CameraModel: KODAK DC265
ZOOM DIGITAL CAMERA (V01.00)
DateTime: 1999:06:14 01-37:36
Height: 1024 Width: 1536 IsCoIor: 1
FlashUsed 0 Focal Length: 8.0mm
RawFocalLength: 8 ExposureTime: 0.004 s
(1/250) RawExposureTime.
0.0040000001899898
ApertureFNumber: f/ 9.5
RawApertureFNumber:
9.5100002288818
FocusDi stance: 16.66m
RawFocusOistance: 16.659999847412
Orientation: 1 ExifVersiori: 0200

Функция доступна, только если PHP 4 компилировался с параметром --enable-exif. Библиотека GD не требуется.

ImageSX

Определение ширины рисунка

int imagesx (int lm)

См. также: ImageCreate() и ImageSY().

ImageSY

Определение высоты рисунка

int imagesy (int im)

См. также: ImageCreate() и ImageSX().

Imagelnterlace

Установка чересстрочности

int imageinterlace (int im [, int interlace])

Если interlace = 1, то это делает рисунок отображаемым чересстрочно, если 0 — последовательно. Возвращается текущая установка чересстрочности. < /FONT >

ImageGIF

Отсылка рисунка GIF браузеру или сохранение его в файле int imagegif (int im [, string filename])

Cos/част файл формата GIF из рисунка im. Затем файл сохраняется под именем filename, или, если имя не указано, содержимое файла передается непосредственно браузеру (не забывайте предварительно отослать браузеру заголовок, сообщающий, что передается графический файл). Файл имеет формат GIF87a, а если он был сделан прозрачным функцией ImageColorTransparent(), то формат будет GIF89a.

Так как GD, начиная с версии 1.6, не поддерживает GIF, функция недоступна для этих версий.

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

 <?php if (function_exists("imagegif"))
{ Header("Content-type: image/gif"): ImageGif(Sim): }
elseif (function_exists("imagejpeg")) {
Header("Content-type: image/jpeg").
ImageJpeg($lm. "". 0 5): }
elseif (function_exists("imagepng")) (
Header("Content-type: image/png"):
ImagePng($im). } else
dieC'No image support in this PHP server"):
      ?>

Используйте функцию imagetypes() вместо function_exists() для проверки поддержки различных форматов:

if (ImageTypes()& IMG_GIF) {
Header("Content-type: image/gif"): ImageGif(Jim): }
elseif (ImageTypesO & IMG_JPG) { ... etc.

См. также: ImagePng(), ImageJpeg(), ImageTypes().

ImagePNG

Отсылка рисунка PNG браузеру или сохранение его в файле int imagepng (int im [, string filename])

Выводит GD рисунок im в формате PNG на стандартный поток вывода (обычно браузер), или если указано имя файла filename, то в этот файл.

<?php $im = ImageCreateFromPngC'test.png").
ImagePng($im). ?>

См. также: ImageGif(), ImageJpeg(), ImageTypes().

ImageJPEG

Отсылка рисунка JPEG браузеру или сохранение его в файле

int imagejpeg (int im [, string filename [, int quality]])

Выводит рисунок im в формате JPEG на стандартный поток вывода (обычно браузер), или если указано имя файла filename, то сохраняет в этот файл. Аргументом quality можно указать качество изображения (обратно пропорционально размеру файла) от 0 до 100.

Imagejpeg($im.'' .20);// вывести рисунок

Поддержка JPEG была добавлена в GD 1.8 и более поздние версии.

См. также: ImagePng(), ImageGif(), ImageTypes().

ImageDestroy

Уничтожение рисунка

int imagedestroy (int im)

ImageCopy

Копирование части рисунка

int ImageCopy (int dst_im, int src_im, int dst_x, int dst_y, ] int src_x, int src_y, int src_w, int src_h)

Копирует прямоугольную область src_x, src_y, src_w (ширина), src_h / (высота) рисунка src_im в рисунок dst_im со смещением dst_x, dst_y.

ImageCopyResized

Копирование части рисунка с масштабированием

int imagecopyresized (int dst_im, int src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH)

Функция подобна ImageCopy(), но область рисунка масштабируется, так что его ширина и высота становятся равными dstW и dstH.

Цвета и палитра

ImageColorAllocate

Выделение цвета для рисунка

int imagecoloral locate (int im, int red, int green, int blue)

Возвращает индекс добавленного в палитру цвета, составленного из компонентов red (красный), green (зеленый), blue (синий).

Swhite =   ImageColorAllocate ($im. 255. 255. 255);
// белый Sblack = ImageColorAl locate ($irp. 0. 0. 0).
//
      черный

ImageColorDeAllocate

Исключение цвета из палитры рисунка

int imagecolordeal locate (int im, int index)

$white - ImageColorAllocate($im. 255, 255. 255);
ImageColorDeAl locate($im. $white);

ImageColorSet

Замена цвета определенного элемента палитры

boo! imagecolorset (int im, int index, int red, int green, int blue)

Устанавливает для элемента палитры index рисунка im значения компонент цвета: red (красный), green (зеленый), blue (синий). При этом все части рисунка, закрашенные данным цветом, также изменят свой оттенок.

См. также imagecolorat().

ImageColorsForlndex

Получение цвета элемента палитры

array imagecolorsforindex (int im, int index)

Возвращает ассоциативный массив трех элементов: red, green, blue, содержащий значение компонентов цветности указанного цвета index.

См. также: imagecolorat() и imagecolorexact().

ImageColorExact

Получение индекса цвета палитры

int imagecolorexact (int im, int red, int green, int blue)

Если точно соответствующего цвета в палитре не имеется, то возвращается -1.

См. также imagecolorclosest().

ImageColorClosest

Получение цвета палитры, наиболее близкого к указанному

int imagecolorclosest (int im, int red, int green, int blue)

Возвращает индекс цвета палитры рисунка. Близость вычисляется согласно RGB.

См. также imagecolorexact().

ImageColorResolve

Нахождение или создание указанного цвета

int imagecolorresolve (int im, Int red, int green, Int blue)

Возвращает индекс указанного цвета в палитре. Если такой цвет отсутствует, он создается.

См. также imagecolorclosest().

ImageGammaCorrect

Применение гамма-коррекции рисунка

Int Imagegammacorrect (int im, double inputgamma, double outputgamma)

ImageColorsTotal

Получение числа цветов в палитре

int imagecolorstotal (int im)

См. также: imagecolorat() и imagecolorsforindex().

ImageColorTransparent

Определение цвета прозрачности

int imagecolortransparent (int im [, int col])

Устанавливает (возвращает) индекс цвета палитры, используемого как прозрачный. Возвращает индекс текущего (или установленного) «прозрачного» цвета.

ImageColorAt

Получение индекса цвета пиксела

int imagecolorat (int im, int x, int y)

См. также: imagecolorset() и imagecolorsforindex().

Черчение фигур

ImageSetPixel

Установка пиксела

int imagesetpixel (int im, int x, int y, int color) Верхний левый угол рисунка имеет координаты (О, О).

См. также: ImageCreate() и ImageColorAllocate().

ImageLine

Черчение линии

int imageline (int im, int xl, int yl, int x2, int y2, int color)

ImageDashedLine

Черчение прерывистой линии

int imagedashedline (Int im, int xl, int yl, int x2, int y2, int col)

См. также ImageLine().

ImageRectangle

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

int imagerectangle (Int im, int xl, int yl, int x2, int y2, int col) Левый верхний угол задается (xl, yl), а правый нижний — (x2, y2).

ImageFilledRectangle

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

int imagefilledrectangle (int im, int xl, int yl, int x2, int y2, int col)

ImagePolygon

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

int imagepolygon (int im, array points, int numjreints, int col)

Аргумент points содержит координаты углов в виде: points[0] = xO, points[l] = yO, points[2] = xl, points[3] = yl и.т. д. num_points задает число углов. < /FONT >

См. также imagecreate().

ImageFilledPolygon

Закраска многоугольника

int imagefilledpolygon (int im, array points, int num_points, int col)

ImageArc

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

int imagearc (int im, int ex, int cy, int w, int h, int s, int e, int col)

ex, су задают центр эллипса, w и h — ширину и высоту, s и е — начальный и конечный угол в градусах, со! — цвет.

ImageFill

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

int imagefill (int im, int x, "int y, int col)

ImageFillToBorder

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

int imagefilltoborder (int im, int x, int y, int border, int col)

Индекс цвета окантовки задается аргументом border, а заливки — col. Заливка начинается от точки с координатами (х,у).

Шрифты и надписи

. ImageLoadFont

Загрузка шрифта

int image!oadfont (string file)

Загружает шрифт из файла file и возвращает назначенный ему идентификатор. Встроенные шрифты имеют идентификаторы 1-5 (меньший-больший). Формат файла зависит от системы. В общем случае он имеет следующую структуру:

Байты | Тип | Описание
0-3 | int | Число символов в файле
4-7 | int | Код первого символа (обычно 32 — пробел)
8-11 | int | Ширина символов в пикселах
12-15 | int | Высота
16-... | int | Массив ланных символов (байт на пиксел для каждого символа). Общий размер: (псЬаг5хвысотахширипа) байт.

См. также: ImageForitWidth() и ImageFontHeight().

ImageFontHeight

Установка высоты шрифта

int imagefontheight (int font)

См. также: ImageFontWidth() и ImageLoadFont().

ImageFontWidth

Установка ширины шрифта

int imagefontwidth (int font)

См. также: ImageFontHeight() и ImageLoadFont().

ImageChar

Вывод символа горизонтально

int imagechar (int im, int font, int x, int y, string c. int col) Шрифт указывается его номером font (1-5 — встроенные шрифты).

См. также imageloadfont().

ImageCharUp

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

int imagecharup (int im, int font, int x, int y, string c, int col)

См. также image!oadfont().

ImageString

Вывод строки горизонтально

int imagestring (int im, int font, int x, int y, string s, int col)

См. также ImageLoadFont().

ImageStringUp

Вывод строки вертикально

int imagestringup (int im, int font, int x, int y. string s. int col)

См. также ImageLoadFont().

ImageTTFBBox

Расчет площади, занимаемой строкой шрифта ТуреТуре

array imagettfbbox (int size, int angle, string fontfile, string text) Аргументы, от которых зависит результат функции:

  • text — строка текста;
  • size — размер шрифта в пикселах;
  • Fontfile — имя файла, содержащего шрифт TrueType (можно указать URL); ,
  • angl e — угол наклона текста.

Возвращает массив из 8 элементов, определяющих прямоугольник вывода текста:

  1. нижний левый угол, Х-координата;
  2. нижний левый угол, Y-координата;
  3. нижний правый угол, Х-координата;
  4. нижний правый угол, Y-координата;
  5. верхний правый угол, Х-координата;
  6. верхний правый угол, Y-координата;
  7. верхний левый угол, Х-координата;
  8. верхний левый угол, Y-координата.

Возвращаемые координаты зависят от угла наклона строки (точкой отсчета служит нижний левый угол первого символа). Координаты могут иметь отрицательные значения. Функция требует библиотеки GD и FreeType

См. также ImageTTFText().

ImageTTFText

Рисование текста шрифтом TrueType

array imagettftext (int im, int size, int angle, int x, int y, int col, string fontfile, string text)

Выводит строку text в рисунок im - в координаты х, у (верхний левый угол является началом координат), под углом angle (задается в градусах) цветом col, используя шрифт TrueType из файла fontfile. Аргументами х, у задастся базовая точка первого символа (нижний левьн"! угол символа), что отличает данную функцию от ImageString(), где координаты х, у определяют верхний правый угол символа. Строка текста может включать символьные последовательности UTF-8 (в виде &#123;) для вывода символов с кодами, большими 255.

При использовании отрицательного значения индекса цвета отключается сглаживание шрифта (antialiasing).

Возвращает массив из 8 элементов, определяющих прямоугольник вывода текста подобно функции imagettfbbox(). Функция требует библиотеки GD и FreeType.

<?php Header ("Content-type: image/gif").
$im = imagecreate (400. 30).
Sblack = ImageColorAllocate ($im. 0 0. 0);
$white = ImageColorAl locate ($im. 255. 255. 255);
ImageTTFText ($щ. 20. 0. 10. 20.
Swhite. "/path/anal .ttf", "Testing Omega: &#937;"):
ImageGif (Sin). ImageDestroy (Sim); ?>

Следующий пример выводит строку по центру рисунка:

 <?
$gi =

          ImageCreate(200.100):
$bg =

          ImageColorAllocate($gi.0.220.0);
$tx =

          ImageColorAllocate($gi.25.2.228).
$w=imagesx(Igi): // ширина рисунка
$h=imagesy($9i): // высота
ImageFilledRectang]6($gl.0.0.$w,$h.$bg):
$szf=20; // размер шрифта
$ang=240; // угол поворота строки
$str="Heyou". // текст строки
$font="symbol.ttf": // файл шрифта
$sz=imagettfbbox($szf.$ang.$font.$str).
$sdx=$sz[4]/2; $sdy=($sz[7]+$sz[3])/2;
imagettftext($gi.$szf.$ang.
$w/2-$sdx.$h/2-$sdy.$tx.$font.$str);
//header("content-type, image/png"):
ImagePng($gi."n2.png"); ?>

См. также ImageTTFBBox().

ImagePSLoadFont

Загрузка из файла шрифта PostScript Type 1 int imagepsloadfont (string filename)

Возвращает дескриптор загруженного шрифта или FALSE при ошибке (также выводится предупреждение).

См. также ImagePSFreeFont().

ImagePSFreeFont

Выгрузка шрифта PostScript Type 1

void imagepsfreefont (int fontindex)

См. также ImagePSLoadFont().

ImagePSEncodeFont

Установка схемы перекодировки текста

int imagepsencodefont (int fontjindex, string encodingfile)

Загружает файл перекодировки encodingfile для шрифта font_index. Поскольку шрифты PostScript по умолчанию не используют символы с кодами, большими 127, перекодировка требуется при необходимости использования не английского языка. Формат файла описан в документации Tllibs, также с библиотекой поставляются 2 готовых файла: IsoLatinl.enc и IsoLatinZ.enc.

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

ImagePsExtendFont

Масштабирование шрифта

bool imagepsextendfont (int fontjindex. double extend)

ImagePsSlantFont

Установка наклона шрифта

bool imagepsslantfont (int font_index, double slant)

ImagePSBBox

Расчет площади, занимаемой строкой шрифта PostScript Type 1

array imagepsbbox (string text, int font, ifft size [, int space [, int tightness [, float angle]]])

Расчеты производятся на основании аргументов: Size — размер шрифта в пикселах; Space — изменение размера пробелов по отношению к нормальному (может быть отрицательным); Tightness — промежутки между символами по отношению к нормальному (может быть отрицательным); Angle — угол наклона строки в градусах. Значения space п tightness измеряются в долях пробела (1/1000).

Аргументы space, tightness, angle не обязательны.

Результаты расчета недостаточно точны. Функция возвращает массив:

  • 0 — нижний левый угол, Х-координата;
  • 1 — нижний левый угол, У-координата;
  • 2 — верхний правый угол, Х-координата;
  • 3 — верхний правый угол, Y-координата.

См. также imagepstext().

ImagePSText

Вывод текста поверх рисунка шрифтом PostScript Type 1

array imagepstext (int image, string text, int font, int size, int foreground, int background, int x, int у [, int space [, int tightness [, float angle [, int antialias_steps>)

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

Аргументами Foreground и Background задаются цвета текста и фона (фон необходим только для сглаживания шрифта). Аргумент Antialias_steps позволяет указать число цветов, используемых при сглаживании текста (допустимые значения 4 и 16). Для шрифтов размером меньше 20 используйте большее значение, так как это улучшает читабельность; для больших шрифтов используйте меньшее значение, так как это увеличивает быстродействие.

Функция возвращает массив, подобно imagepsbbox().

См. также imagepsbbox().

Shockwave Flash

PHP позволяет создавать файлы Shockwave Flash посредством библиотеки (созданной Paul Haeberli) Libswf, которую можно загрузить с http://reality.sgi.com/grafica/flash/. Прикомпилировать libswf к РНР можно параметром --w1th-swf[= OIR],где DIR — место размещения каталогов include (содержит файл swf.h) и lib (содержит файл libswf.a). < /FONT>

Следующий пример демонстрирует создание Flash-анимации:

<?php swf_openfile ("test.swf". 256. 256. 30. 1, 1. 1
. swf_ortho2 (-100. 100. -100. 100): swfjJefinelme
(1. -70. 0. 70. 0. .2). swfjiefinerect (4. 60. -10. 70. 0. 0).
swfjtefinerect (5. -60. 0. -70. 10. 0):
sv,f_addcolor (0. 0. 0. 0):
swfjjefinefont (10. "Mod"): swf_fontsize (5):
swfjfontslant (10).
swf_definetext (11. "This be Flash wit PHP!". 1):
swf_pushmatnx (): swf_translate
(-50. 80. 0). swf_placeobject (11. 60). swf_popmatrix ():
for ($1 0; $1 < 30: $i++) { p $p = $i/(30-l):
svrf_pushmatnx (): m
swf_scale (l-($p*.9). 1. 1). 1
swf_rotate (60*$p. 'z'):
swf_translate (20+20*$p. Sp/1 5. 0):
swf_rotate (270*$p. 'i );
swf_addcolor ($p. 0. $p/l,2. -$p);
swf_placeobject (1. 50);
swf_placeobject (4. 50).
swf_p1aceobject (5. 50).
swfjpopmatnx (): swf_showframe (): }
for ($1 = 0: $1 < 30: $т++)
{ swfj-emoveobject (50): if {($i*4) == 0) { swf_showframe (): } }
swf_startdoactiof():
swf_actionstop (): swf_enddoaction():
swf_closeflle() ?>

Просмотреть результат исполнения сценария можно но адресу:
http:// www.designmultimedia.com/swfphp/test.swf.

libswf не поддерживается Windows. Разработка библиотеки была прекращена, а исходные коды недоступны.

swf_openfile

Открытие нового файла Shockwave Flash

void swf_openfile (string filename, float width, float height, float framerate, float r, float g, float b)

Создает файл filename с анимацией (шириной width, высотой height, частотой кадров framerate и цветом фона R.G.B).

Данная функция должна вызываться первой, иначе в сценарии возникнет ошибка «segfault». Если необходимо непосредственно отсылать файл браузеру, можно задать его имя как php://stdout.

swf_closefile

Закрытие текущего файла Shockwave Flash

void swf_cl osef "Л е ([int return_file])

Закрывает файл, открытый функцией swf_openfile(). При установке аргумента return_file функция возвращает содержимое SWF-файла.

// создает flash й'айл: выводит его и сохраняет в БД <?php
// Stext - аргумент сценария
// Параметры БД (для swf_savedata()) SDBHOST
"localhcst": SOBUSER = "иьег"; $DBPASS "secret1.
swf_openfile ("php //stdout". 256. 256. 30. 1. 1, i):
swf_def,nefont (10. "Ligon-Bold"): swfjon'size (12):
swf_fon.blant (10)
swf_definetext (11. $text. 1):
swf_pushmatnx ():
swf_translate (-50. 80. 0)
swf_placeobject (11. 60). swf_popmatnx ();
swf_showframe ():
swf_startdoaction (). swf_actiOPStop ():
swf_enddoaction ():
Sdata = swf_closefile (1):
Sdata ?swf_savedata (Sdata) :
die ("Невозможно сохранить SWF файл"):
// сохранить файл в БД function swf_savedata ($data) {
global SD6HOST. SDBUSER. SDBPASS:
Sdbh = (amysql_connect
(SDBHOST. SDBUSER. SDBPASS):
if (!$dbh) { die (spnntf ("Error [Id]: us".
mysql_errno (). mysql_error(): }
Sstmt = "INSERT INTO swf_files
(file) VALUES f'$data')":
$sth - @mysql_query (Sstmt. Sdbh): if (!Ssth) {
die (sorintf ("Error [ВД: *s".
mysql_errno (). mysql_error ())); }
?mysql_free_result (Ssth);
(amysql_clo^e (Sdbh). } >

swf_labelframe

Пометка текущего кадра

void swf_labelframe (string name)

swf_showframe

Отображение текущего кадра

void swf_showframe (void);

swf_setframe

Переключение кадра

void swf_setframe (int framenumber)

swf_getframe

Получение номера текущего кадра

int swf_getframe (void);

swf_mulcolor

Установка множителя цвета RGBA

void swfjnul col or (float r, float g, float b, float a)

Функция устанавливает значения (они могут быть положительными или отрицательными), на которые будут умножаться цвета выводимых объектов. Этот цвет затем (косвенно) используется функциями swf_placeobject(), swfjnodifyobject() и swf_addbuttonrecord().

swf_addcolor

Установка слагаемого цвета RGBA

void swf_addco1or (float г, float g, float b, float a)

Функция устанавливает значения (они могут быть положительными или отрицательными), которые будут добавляться к цвету выводимых объектов. Этот цвет затем (косвенно) используется функциями swf_placeobject(), swfjnodifyobject() и swf_addbuttonrecord().

swf_placeobject

Размещение объекта в текущем кадре

void swf_placeobject (int objid, int depth)

Размещает объект objid на уровне depth. Аргументы могут иметь значения от 1 до 65 535. При этом используются текущие: множитель и слагаемое цвета (swfjnulcolor() и swf_addcolor()) и матрица позиционирования объекта.

Полностью поддерживаются цвета RGBA.

swf_modifyobject

Изменение объекта

void swfjnodifyobject (int depth, int how)

Изменяет объект, расположенный на уровне depth, согласно аргументу how: если он имеет значение MOD_MATRIX, то изменяется положение объекта; если MOD_COLOR, то изменяется цвет. Эти константы можно комбинировать (MOD_MATR1X|MOD_COLOR).

MOD_COLOR использует текущие множитель и слагаемое цвета (swf_ mulcolor() и swf_addcolor()), a MOD_MATRIX — матрицу позиционирования объекта.

swf_removeobject

Удаление объекта

void swf_removeobject (int depth)

Удаляет объект, расположенный на уровне depth.

swf_nextid

Получение идентификатора следующего свободного объекта

int swfjiextid (void);

swf_startdoaction

Начало описания списка действий текущего кадра

void swf_startdoaction (void);

Функцию следует вызывать после завершения определения действий.

swf_actiongotoframe

Проигрывание кадра и остановка

void swf_actiongotoframe (int framenumber)

swf_actiongeturl

Получение URL анимации Shockwave Flash

void swf_actiongetur1 (string url, string target)

swf_actionnextframe

Перемещение вперед на один кадр

void swf_actionnextframe (void);

swf_actionprevframe

Перемещение назад на один кадр

void swf_actionprevframe (void);

swf_actionplay

Начало проигрывания анимации с текущего кадра

void swf_actionplay (void)

swf_actionstop

Остановка flash-анимации текущего кадра

void swf_actionstop (void);

swf_actiontogglequality

Переключение между высоким/низким качеством

void swf_actiontogglequality (void);

swf_actionwaitforframe

Пропуск действия, если кадр не был загружен

void swf_actionwaitforframe (int framenumber, int skipcount)

Функция проверяет видимость кадра framenumber и, если он не был загружен, пропускает указанное число действий skipcount. Полезно для анимаций типа "Loading...".

swf_actionsettarget

Установка контекста всех действий

void swf actionsettarget (string target)

Используется для управления другими flash-анимациями, проигрываемыми в текущий: момент.

swf_actiongotolabel

Отображение кадра с указанной меткой

void swf_actiongotolabel (string label)

После отображения проигрывание останавливается.

swf_enddoaction

Завершение текущего действия I void swf_enddoaction (void). Завершает текущее действие, начатое функцией swf_startdoaction().

swf_defineline

Создание линии

void swf_defineline (int objid, float xl, float yl, float x2, float y2. float width)

Рисует линию ((xl, yl) - (x2, y2)) шириной width.

swf_definerect

Создание прямоугольника

void swf_definerect (int objid, float xl. float yl, float x2, "float y2, float width)

Верхний левый угол задается (xl, yl), левый нижний (х2, у2). Ширина задается width (если она равна 0.0, прямоугольник будет закрашен).

swf_definepoly

Создание многоугольника

void swfjdefinepoly (int objid, array coords, int npoints, float width)

Углы задаются координатами (х, у) в массиве coords. Число углов — npoints. Ширина задастся width (если она равна 0.0, многоугольник будет закрашен).

swf_startshape

Начало создания сложной фигуры

void swf_startshape (int objid)

swf_shapelinesolid

Установка текущего стиля линии

void swf_shapelinesolid (float г, float g, float b, float a, float width)

Задаются параметры цвета rgba и ширина width (если указывается ширина 0.0, то линии рисоваться не будут).

swf_shapefilloff

Выключение заполнения текущей фигуры

void swf_shapefilloff (void);

swf _shapefillsolid

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

void swf_shapefillsolid (float г, float g, float b, float a)

Устанавливает 100 % стиль заполнения цветом

swf_shapefillbitmapclip

Установка заполнения усеченной текстурой рисунка

void swf_shapefillbitmapclip (int bitmapid)

swf_shapefillbitmaptile

Установка заполнения размноженной текстурой рисунка

void swf_shapefillbitmaptile (int bitmapid)

swf_shapemoveto

Перемещение текущей позиции

void swf_shapemoveto (float x, float y)

swf_shapelineto

Черчение линии

void swf_shapelineto (float x, float y)

Чертит линию от текущей позиции до указанной.

swf_shapecurveto

Рисование квадратической кривой Безье

void swf_shapecurveto (float xl, float yl. float x2, float y2)

Чертит кривую от точки (xl, yl) до точки (х2, у2). Текущая позиция затем устанавливается в точке (х2, у2).

swf_shapecurveto3

Рисование кубической кривой Безье

3void swf_shapecurveto3 (float xl. float yl, float x2. float y2. float x3, float y3)

Чертит кривую, используя точки (xl, yl) и (х2, у2) как внешне ориентирующие, а точку (хЗ, уЗ) — как конечную. Текущая позиция затем устанавливается в точке (хЗ, уЗ).

swf_shapearc

Рисование дуги

void swf_shapearc (float x, float у, float г, float angl, float ang2)

Начальный и конечный угол дуги задается angl и ang2; центр — (х,у); радиус - г.

swf_endshape

Завершение определения текущей фигуры

void swf_endshape (void);

swf_definefont

Определение шрифта

void swf_definefont (int fontid, string fontname)

Задает шрифт fontname в качестве текущего и присваивает ему идентификатор fontid.

swf_setfont

Смена текущего шрифта

void swf_setfont (int fontid)

swHontsize

Смена размера текущего шрифта

void swf_fontsize (float size)

swHontslant

Установка наклона текущего шрифта

void swf_fontslant (float slant)

Угол задается значением slant (положительное значение создает наклон вперед, отрицательное — назад).

swf_fonttracking

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

void swf_fonttracking (float tracking)

Положительное значение увеличивает, а отрицательное — уменьшает интервал.

swf_getfontinfo

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

array swf_getfontinfo (void);

Возвращает ассоциативный массив из двух элементов:

  • Aheight — высота в пикселах заглавной буквы А;
  • xheight — высота в пикселах маленькой буквы х.

swf_definetext

Создание строки текста

void swfjlefinetext (int objid. string str, int docenter)

Строка текста str создается с использованием текущего шрифта и его размера. Если в значении аргумента docenter указывается 1, то текст центрируется по горизонтали.

swf_textwidth

Расчет ширины строки

float swf_textwidth (string str)

Расчет использует размеры текущего шрифта.

swf_definebitmap

Определение рисунка

void swf_definebitmap (int objid, string image_name)

Добавляет рисунок GIF, JPEG, RGB или FI (он автоматически конвертируется в формат Flash JPEG или Flash color map).

swf_getbitmapinfo

Получение информации о рисунке

array swf_getbitmapinfo (int bitmapid)

Возвращает массив с информацией о рисунке bitmapid, содержащий элементы:

  • «size» — размер рисунка в байтах;
  • «width» — ширина рисунка в пикселах;
  • «height» — высота рисунка в пикселах.

swf_startsymbol

Определение символа

void swf_startsymbol (int objid)

Превращает объект в символ. Символы — это микроанимации flash, которые могут проигрываться одновременно.

swf_endsymbol

Завершение определения символа

void swf_endsymbol (void);

Завершает определение символа, начатое функцией swf_startsymbo1().

swf_ startbutton

Начало определения кнопки

void swf_startbutton (int objid. int type)

Аргументом type задается, может ли фокус перемещаться без нажатия на кнопку мышью (TYPE_MENUBUTTON) или нет (TYPE_PUSHBUTTON).

swf_addbuttonrecord

Управление расположением, видом и активной областью текущей кнопки void swf_addbuttonrecord (int states, int shapeid, int depth)

Аргументом states определяется, какие состояния может принимать кнопка: BSHitTest, BSDown. BSOver, BSUp; аргументом shapeid определяется внешний вид кнопки (идентификатор объекта), a depth -уровень расположения кнопки.

swf_startButton ($objid. TYPEJCNUBUTTON):
swf_addButtonRecord (BSDown|BSOver. Sbuttonlmageld. 340).
swf_onCondition (MenuEnt?r).
swf_actionGetUrl ("http-//www desTgnmultimed-a.com". "Jevell"):
swf onCondltion (MenuExH):
swf_actTonGetUrl ("". "_levell"); swf_endButton ();

swf_oncondition

Назначение события

void swf_oncondition (int transition)

Для кнопок TYPE_MENUBUTTON возможны параметры:

  • IdletoOverUp;
  • OverUptoIdle;
  • OverllptoOverDown;
  • OverDowntoOverUp;
  • IdletoOverDown;
  • OutDowntoIdle;
  • MenuEnter (Id!etoOverl)p| IdletoOverDown):
  • MenuExit (OverUptoIdlejOverDowntoIdle).

Для кнопок TYPE_PUSHBUTTON возможны параметры:

  • IdletoOverllp;
  • OverUptoIdle;
  • OverUptoOverDown;
  • OverDowntoOverUp;
  • OverDowntoOutDown;
  • OutDowntoOverDown;
  • OutDowntoIdle;
  • ButtonEnter (IdletoOverUp|OutDowntoOverDown);
  • ButtonExit (OverUptoIdle]OverDowntoOutDown).

swf_endbutton

Завершение определения текущей кнопки

void swf_endbutton (void);

swf_viewport

Выбор области для.последующего рисования

void swf_viewport (double xmin. double xmax. double ymin, double ymax)

swf_ortho

Выбор объемной системы координат текущей области рисования

void swf_ortho (double xmin. double xmax. double ymin, double ymax. double zmin. double zmax)

swf_ortho2

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

2void swf_ortho2 (double xmin, double xmax, double ymin. double ymax)

Для преобразований перспективы может использоваться функция swf_ perspective().

swf_perspective

Определение трансформации перспективы проекции

void swf_perspective (double fovy. double aspect, double near, double far)

Аргумент fovy задает угол зрения по отношению к оси у, aspect — масштаб текущей области рисования. Аргументы near,far определяют границы проекции — ближнюю и дальнюю. Поскольку flash-проигрыватели имеют только двумерную матрицу, возможны искажения проецирования.

swf_polarview

Установка позиции наблюдения в полярных координатах

void swf_polarview(double dist, double azimuth, double Incidence, double twist)

dist задает расстояние от наблюдателя до начала системы координат; azimuth — угол азимута в плоскости х,у, измеренный от оси у; incidence — угол обзора в плоскости y,z, измеренный относительно оси z; twist — вращение видимой области относительно линии наблюдения (по правилу правой руки).

swf_lookat

Установка трансформации наблюдения

void swfjookat (double view_x, double view_y. double view_z, double reference_x, double reference_y, double reference_z, double twist)

Аргументами view_x, view_y, view_z задается позиция наблюдения; reference_x, reference_y, reference_z указывают наблюдаемую точку; a twi st — угол поворота наблюдения относительно оси z.

swf_pushmatrix

Занесение текущей матрицы трансформации в стек

void swf_pushmatrix (void);

swf_popmatrix

Извлечение матрицы трансформации из стека

void swf_popmatrix (void);

swf_scale

Масштабирование текущей трансформации

void swf_scale (double x. double y, double z)

Масштабные коэффициенты задаются аргументами х, у, z.

swf_trnslate

Транслирование текущей трансформации

void swf_translate (double x, double y, double z)

swf_rotate

Поворот текущей трансформации

void swf_rotate (double angle, string axis)

Угол поворота angle задается относительно оси axis. Допустимые значения axis: "x", "у" и "z".

swf_posround

Разрешение или запрет округления координат объектов

void swf_posround (int round)

Значение 1 разрешает, а 0 запрещает округление.

Ming для Flash

Ming является библиотекой с открытым исходным кодом (LGPL), позволяющей создавать анимации SWF («Flash»). Ming поддерживает почти все возможности Flash 4, включая: фигуры (shapes), цветовые переходы (gradients), картинки (bitmaps: jpeg), превращения (morphs или «shape tweens»), текст, кнопки, действия, клипы (sprites), потоковую музыку трЗ и преобразования цветов; единственное, чего не поддерживает Ming, это звуковые события. Использование Ming предпочтительнее модуля libswf. Ming работает на большинстве платформ, включая Windows, использует РНР объекты для представления объектов SWF и продолжает разрабатываться1 (адрес разработчиков ming@opaque.net). Библиотеку Ming можно загрузить с сайта: http://www.opaque.net/ming/.

Все размеры указываются в единицах «твипс» (twips), что равно I 1/20 пиксела. Но масштаб может изменяться проигрывателем.

Ming использует PHP-объекты тринадцати классов:

  • swfmovie();
  • swfshape();
  • swfdisplayitem();
  • swfgradient();
  • swfbitmap();
  • swf fill ();
  • swfmorph();
  • swftext();
  • swffont();
  • swftextfield();
  • swfsprite();
  • swfbutton();
  • swfaction().

SWFMovie — объект анимации SWF 4

SWFMovie->output

Вывод созданной анимации

void swfmovie->output (void)

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

<?php headert'Content-type: apolication/x-Shockwave-flash'); ?>

См. также swfmovie->save().

SWFMovie->save

Сохранение анимации в файле

void swfmovie->save (string filename)

См. также output().

SWFMovie->add

Добавление компонентов анимации

void swfmovie->add (resource instance)

Этим методом можно добавлять объекты различных типов: фигуры, текст, шрифты и т. п. Для отображаемых объектов (shape, text, button, sprite) возвращается дескриптор объекта SWFDisplayltemO, внесенный в список отображения. При многократном добавлении одного объекта каждый раз будет возвращаться другой дескриптор.

См. также: swfmovie->remove() и пример в swfdisplayitem->rotateto().

SWFMovie->remove

Удаление объекта из списка отображения

void swfmovie->remove (resource instance) Функция противоположна swfmovie->add().

SWFMovie->setbackground

Установка цвета фона

void swfmovie->setbackground (int red, int green, int blue)

Цвет задается значениями (0-255) компонентов: красного, зеленого и синего.

SWFMovie->setdimension

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

void swfmovie->setdimension (int width, int height)

SWFMovie->setrate

Установка частоты кадров анимации

void swfmovie->setrate (int rate)

Значение rate — число кадров в секунду. Анимация будет тормозиться, если проигрыватель не будет успевать перерисовывать кадры. Если одновременно проигрывается звук, то для его нормального воспроизведения частота перерисовки будет при необходимости снижаться.

SWFMovie->setframes

Установка общего числа кадров анимации

void swfmovie->setframes (string number_of_frames)

SWFMovie->nextframe

Переход к новому кадру анимации

void swfmovie->nextframe (void)

SWFMovie->streammp3

Воспроизведение потокового звука МРЗ

3void swfmovie->streammp3 (string mpSFileName)

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

<?php
$m = new SWFMovie()
      ; $m->setRat.eC10.0);
// кадров в секунду
      $m->streamMp3("distortobass.mp3"):
// use your
      own MP3
// длительность проигрывания анимации:
100/10.0 = 10 секунд $m->setFrames(100);
// кадров в анимации
headert'Content-type: application/x-shockwave
      flash'):
$m~>output(). ?>

SWFDisplayltem - объект списка отображения

Используется для хранения компонентов анимации; после того, как объекты shape, text, sprite или button декларированы (созданы экземпляры классов swfshape(), swfbutton(), swftext(). swfspnte()) и добавлены в анимацию (методом swfmovie->add()), для каждого из них возвращается дескриптор (объект типа SWFDisplayltem), который можно использовать для перемещения, вращения, масштабирования и наклона объекта.

SWFDisplayltem - >moveTo

Репозиционирование объекта

void swfdisplayitem->moveto (int x, int у) Указываются абсолютные координаты.

См. также swfdisplayitem->move().

SWFDisplayltem->move

Смещение объекта

void swfdisplayitem->move (int dx. int dy)

Указываются координаты относительно текущей позиции.

См. также swfdisplayitem->moveto().

SWFDisplayltem - >scaleTo

Задание новых размеров объекта

void swfdisplayitem->scaleto (int x, int у)

См. также swfdisplayitem->scale().

SWFDisplay!tern->scale

Масштабирование объекта

void swfdisplayitem->scale (int dx, int dy)

Указываются коэффициенты масштабирования.

См. также swfdisplayitem->scaleto().

SWFDisplayltem->rotateTo

Установка абсолютного угла поворота объекта

void swfdisplayitem->rotateto (double degrees)

Угол указывается в градусах.

<?php // три вращающиеся строки Sthetext =
      "ming!";
$f = new SWFFontC'Bauhaus 93.fdb"):
$m = new SWFMovieO : $m->setRate(24.0):
$m->setDimension(2400. 1600).
$m->setBackground(Oxff. Oxff. Oxff):
function texKSr. $g. $b. $a. $rot. Sx. $y. Sscale.
      Sstring) {
global $f. $m; $t = new SWFText();
$t->setFont($f). $t->setCo1or($r. $g. $b. $a):
$t->setHeight(960)-.
$t->moveTo(-($f->getWidth($stnng))/2.
      Sf->getAscent()/2):
$t->addString($string):
      $1 $m->add($t);
$i->/ - $x: $i->y = $y.
      $1->rot - trot: $i->s ' Sscale.
$1->rotateTo($rot): $i->scale($scale. Sscale):
return $1: function step($i) {
soldrot = $i->rot. $i->rot = 19*$i->rot/20;
Si >x = (19*$i->x + 1200)/2C: Sv>y =
      (19*$v>y + 800)/20;
?i->s = (19*$i->s +
      1.01/20.
Si->rotateTo(Si->rot):
$i->scaleTo(Si ->s. Ii->s):
      $-i->moveTo($i->x. $i->y).
return ii. }
      Sil = text(0xff. 0x33. 0x33.
Oxff. 900. 1200 800.
      0 03. Sthetext):
$12 = text(0x00. 0x33. Oxff.
      Ox7f. -560.
1200. 800. 0.04. $thetext); $13 =
text(Oxff. Oxff. Oxff. Ox9f. 180. 1200. 800. 0.001
      Sthetext):
for($i=l; Si<=100: ++$1) {
$11 = step($11); $12 = step($12); $13 = step($13):
$m->nextFrame(): }
headert'Content-type:
      application/x-shockwave-flash');
$m->output();
      ?>

См. также swfdisplayitem->rotate().

SWFDisplayltem->Rotate

Поворот объекта

void swfdisplayitem->rotate (double ddegrees)

Указывается относительный угол поворота в градусах.

См. также swfdisplayitem->rotateto().

SWFDisplayltem->skewXTo

Установка наклона по X

void swfdisplayitem->skewxto (double d)

Указывается коэффициент смещения основания вправо, то есть 1.0 означает искажение в 45 градусов. Возможны отрицательные значения для смещения основания влево.

См. также: swfdisplayitem->skewx(), swfdisplayitem->skewy() и swfdisplayitem-> skewyto().

SWFDisplayltem->skewX

Наклон объекта по X

void swfdisplayitem->skewx (double d)

SWFDisplayltem->skewYTo

Установка наклона по Y

void swfdisplayi-tem->skewyto (double degrees)

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

SWFDisplayltem->skewY

Наклон объекта по Y

void swfdisplayitem->skewy (double ddegrees)

SWFDisplayltem - >setDepth

Установка порядка отображения (z-order)

void swfdisplayitem->setdepth (double depth)

Размещает объект на указанном уровне. (При добавлении следующий объект размещается поверх предыдущего.)

SWFDisplayltem->remove

Удаление объекта из анимации

void swfdisplayitem->remove (void)

SWFDisplayltem->setName

Присвоение объекту имени

void swfdisplayitem->setname (string name)

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

SWFDisplayltem->setRatio

Установка увеличения объекта

void swfdisplayitem->setratio (double ratio)

Полезно только для объектов SWFMorph().

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

<?php $р = new SWFMorphC);
$g = new SWFGradient():
$g->addEntry(0.0. 0. 0. 0):
$g->addEntry(0.16. Oxff. Qxff. Oxff):
$g->addEntry(0.32. 0. 0. 0):
$g->addEntry(0.48. Oxff. Oxff. Oxff);
$g->addEntry(0.64. 0, 0. 0);
$g->addEntry(0.80, Oxff. Oxff. Oxff):
$g->addEntry(l.'00. 0. 0. 0);
$s = $p->getShapel():
$f
      = $s->addFill($g. SWFFILL_RAD!AL_GRADIENT);
$f->scaleTo(0.05):
$s->setLeftFill($f):
$s->iTOvePenTo(-160, -120);
$s->drawLine(320. 0);
$s->drawLine(0. 240);
$5->drawLine(-320. 0);
$s->drawL1ne(0. -240):
$g
      = new SWFGradientO:
$g->addEntry(0.0. 0. 0.
      0):
$g->addEntry
(0.16. Oxff. 0. 0);
$9->addEntry(0.32. 0. 0. 0):
$g->addEntry(0.48. 0. Oxff. 0):
$g->addEnti-y(0.64. 0. C. 0):
$g->addEntryC0.80. 0. 0. Oxff):
$g->addEntry(1.00. 0. 0. 0).
$s - $p->getShape2():
$f
      $s->addFill($g.
S/:FFILL_RADIAL_GRADIENT);
$f->scaleTo(0.05):
$f->skewXTo(1.0):
$s->setLeftFill($f):
$s->movePenTo(-160. -120):
$s->drawLine(320. 0):
$s->drawl_ine(0. 240):
$s->drawLine(-320. 0):
$s->drawLine(0. -240):
$m
      = new SWFMovie():
$m->setDimension(320.
      240):
$n = $m->add($p):
$i->moveTo'160. 120):
for($n-0: $n<-l 001. $n+=0.01) {
Si->setRatio($n):
$m->nextFrame(): }
header('Content - type: appli cati on/x-Shockwave-fl
      ash');
fm->output(); ?>

SWFDisplayltem->addColor

Увеличение значений компонентов цвета

void swfdisplayltem->addco"lor ([integer red [. integer green [, integer blue [, integer a>)

SWFDisplayltem->multColor

Умножение значений компонентов цвета

void swfdisplayitem->multcolor ([integer red [. integer green [, integer blue [. integer a>)

<?php $b = new SWFB1traapCbackyard.jpg");
// note use your own picture :-)
$s = new SWFShape():
      $5->setRightFilU$s->addFill($b)):
$s->drawLine($b->getWidth(). 0):
$s->drawLine(0. $b->getHeight()):
$b->drawLine(-$b->getWidth(). 0).
$s->drawLine(0. -$b->getHenght());
$m = new SWFMovieO
      $m->setDimension($b->getWTdth().
$b->getHeight()). $1 - $m->add($s);
for($n-0: $n<-20: ++$n) {
$v>multColor(1.0-$n/10. 1.0. 1 0).
$1 >addColor(Oxff*$n/20. 0. 0):
$m->nextFrame(): }
headerCContent type:
      application/x-shockwave-flash');
$m->output().
      ?>

SWFShape - объект Фигура

<?php $m = new SWFMovie() ;
$m->setDimension(800. 800): // размер рисунка
$m->setbackground(50.100.200). // цвет фона
$s = new SWFShape() . $s->setLine(160. Ox7f. 0.
      0).
// стиль линии
      $s->setRightFill($s->addFill(Oxff. 0. 0)):
// заливка $s->movePenTo(200. 200):
// начальная точка $s->drawLineTo(620. 400):
$s->drawLine(-200. 60):
$s->drawCurveTo(400. 0. 200. 200):
$m->add($s): headert'Content-type-
application/x-shockwave-flash'): $m->output():
      ?>

SWFShape->setLine

Установка типа линий фигуры

void swfshape->setline (Int width [, integer red , integer green , integer blue [, integer a]])

Число аргументов может быть 1, 4 или 5 (но не 3 или 2). Для линии задается ширина width, цвет (значениями компонент красного, зеленого и синего) и альфа-параметр.

<?php $s = new SWFShape():
$fl - $s->addFill(Oxff. 0. 0):
$f - new SWFFontf'Techno.fdb'):
$s->setRightFill($fl): $5.>setLine(40. Ox7f. 0.
      0).
$s->drawGlyph($f. '!');
      $s->movePen($f.>getWidth('!'). 0):
$m = new
      SWFMovie():
$m->setDimension(3000.2000):
$m-><;etRate(12.0).
$-, _ $m->add($s).
$i.>rnoveTo(1500-$f->get;«hdth
("n/2. 1000+$f->getAscent()/2):
headt'r('Content-type:
application/x-Shockwave-flash'}; $m->oiitput():
      ?>

SWFShape->addFill

Задание стиля заливки

void swfshape->addfill (Integer red. Integer green, Integer blue [, Integer a])

void swfshape->addfill (SWFbitmap bitmap [, integer flags]) void swfshape->addfill (SWFGradient gradient [, integer flags])

Возможны три стиля заливки (см. синтаксис): цветом, рисунком, градиентная заливка.

Для ригунка задастся дескриптор объекта swfbitmap() и необязательный параметр SWFFILL_CLIPPED_BITMAP (обрезанный рисунок) или SWFFILL_ TILED_BITMAP (размноженный рисунок, по умолчанию).

Для градиентной заливки задается дескриптор объекта swfgradientO и необязательный параметр SWFFILL_RADIAL_GRADIENT или SWFFILL_ LINEAR_GRAOIENT (линейный, по умолчанию).

Возвращает дескриптор объекта swffill() для
      использования в функциях swfshape->setleftfill() и
      swfshape->setrightfill().

<?php $Р . new SWFMorph().
$b - new SWFBitmapCaTphafin.jpg"):
// используйте собственный рисунок
$width = Ib->getWidth(): SheigHt =
      №->getHeight():
$s - $p->getShapel():
$f = $5->addFill($b. SWFFILL_T!LED_BITMAP).
$f->moveTo(-$width/2. -$height/4):
$f->scaleTo(i 0. 0.5): $s->
setLeftFill($f): $s->movePenTo
(-$w1dth/2. -SheightM):
$s->drawL1ne($width, 0): $s->drawLine
(0. $height/2): $s->drawLine(-$wicSth. 0).
$s->drawl_ine(0. -$henght/2).
$s - $p->getShape2():
$f
      = $s->addFill($b. SWFFILL_TILED_BITMAP):
//
      these two have no effect! $f->
tnoveTo(-$width/4. -$height/2):
$f->scaleTo(0.5. 1.0):
$s->setLeftF1l1($f);
$s->movePenTo(-$width/4. -$height/2):
$s->drawLine($width/2. 0).
$s->drawl_ine(0. Sheight): $s->drawLnne
(-$width/2. 0): $s->drawLine(0. -Sheight):
$m = new SKFMovie();
$m->setDimension($width. Sheight):
$1 = $m->add($p):
$v>moveTo($width/2. $height/2):
for($n-0. $n<1.001: $n+=0.03)
$i->setRatio($n): $m->nextFrame(): }
header('Content-type:
      application/x-shockwave-flash'):
$m->output():
      ?>

SWFShape->setLeftFill

Заливка фигуры налево

void swfshape->setleftfill (swfgradient fill)

void swfshape->setleftfill (int red. int green, int blue [. int a])

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

Второй вариант является аббревиатурой swfshape->setleftfiTI($s-> addfill($r. $g, $b [, $a]));.

См. также swfshape->setrightfill().

SWFShape->setRightFill

Заливка фигуры направо

void swf shape->setnghtf nil (swfgradient fill)

void swfshape->setrightfill (int red. int green, int blue [, int a])

См. также swfshape->setleftfi"ll().

SWFShape->movePenTo

Задание точки вывода

void swfshape->raovepento (integer x, integer y)

Указывается точка, от которой будет чертиться фигура.

См. также: swfshape->movepen(), swfsh"ape->drawcurveto(), swfshape-> drawlineto() и swfshape->drawline().

SWFShape->movePen

Смещение точки вывода

void swfshape->movepen (integer dx, integer dy)

См. также: swfshape->movepento(), swfshape->drawcurveto(), swfshape-> drawlineto() и swfshape->drawline().

SWFShape->drawLineTo

Черчение линии

void swfshape->drawlineto (integer x, integer y)

Создает линию (используя текущий стиль) от текущей точки вывода до указанной.

См. также: swfshape->movepento(), swf shape ->drawcurveto(), swfshape-> movepen(), swfshape->drawline().

SWFShape->drawLine

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

void swfshape->drawline (integer dx, integer dy)

См. также: swf shape->movepento(), swfshape->drawcurveto(), swfshape-> movepen() и swfshape->drawlineto().

SWFShape->drawCurveTo

Черчение кривой void swfshape->drawcurveto (int controlx, int controly, int endx, int endy)

Создает квадратичную кривую (используя текущий стиль) от текущей точки вывода до указанной (endx, endy), используя точку (endx, endy) как ориентирующую.

См. также: swfshape->drawlineto(), swfshape->drawline(), swfshape-> movepento() и swfshape->movepen().

SWFShape->drawCurve

Проведение кривой

void swfshape->drawcurve (int controldx. int controldy, int dx, int dy)

Координаты указываются относительные.

SWFGradient — объект градиентной заливки

Градиентные заливки используются для заполнения фигур методом swfshape->addfilH).

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

<?php $m = new SWFMovie() :
      $m->set.Dimension(320. 240):
$s = new
      SWFShape():// first gradient- black to white
$g =
      new SWFGradient(); $g->addtntry(0 0. 0. 0. 0).
$g->addEntry(1.0. Oxff. Oxff. Oxff); 1
$f = $s->addFill($g. SWFFILL_LINEAR_GRADIENT):
$f->scaleTo(0.03); $f-xnoveTo(160. 120)-
$s->setRightFill($f). $s->drawLine(320, 0).
$s->drawLine(0. 240): $s->drawLine(-320. 0):
$s->drawLme(0. -240): $rc->add{$s).
$s - new SWFShape():
//
      second gradient- radial gradient from red
to
      transparent $g = new SWFGradient();
$g->addEntry(0.0. Oxff. 0. 0. Oxff):
$g->addEntry(1.0. Oxff. 0. 0. 0):
$f = $s->addF111($g. SWFFILL_RADIAL_GRADIENT):
$f->scaleTo(0.05): $f->moveTo(160. 120):
$s->setRightFill($f): $s->drawLine(320. 0):
$s->drawline(0. 240): $s->drawLine(-320. 0):
$s->drawLine(0. -240): $m->add($s):
header('Content-type:
      application/x-shockwave-flash'):
$m->output():
      ?>

SWFGradient- >add Entry

Добавление экстремума градиентной заливки

void swfgradient->addentry (double ratio, int red, int green, int blue [, int a])

Аргумент ratio указывает позицию диапазона градиентной заливки (от 0 до 1), для которой указывается цвет. Необязательным аргументом а указывается прозрачность (0—255).

SWFBitmap - загрузка рисунка

new swfbitmap (string filename [, integer alphafilename])

i Загружает рисунок из файла JPEG или DBL-файла filename. Можно указать дополнительный рисунок alphafilename для использования в качестве альфа-маски. JPEG-рисунок должен быть в формате baseline (frame 0), другие форматы — baseline optimized и progressive scan jpeg — не поддерживаются.

Импортировать рисунки PNG напрямую нельзя, хотя можно использовать утилиту png2dbl для конвертирования в формат DBL («define bits lossless»).

<?php $s = new SWFShape():
$f = $s->addFill(new SWFBitmapC'p.dbl")):
$s->drawLine(32. 0): Ss->drawLine(0. 32):
$s->drawl_ine(-32. 0): $s->draw!_ine(0. -32):
$m = new SWFMovie() :
$m->setDimension(32. 32): $m->add(Ss);
header('Content-type:
      application/x-Shockwave-flash'):
$m->output():
      ?>

Пример с использованием альфа-маски:

<?php $s = new SWFShape():
// .msk файл генерирован утилитой gif2mask
$f = $s->addFill(new SWFBitmapC'alphafill. jpg".
"alphafill.msk")): $s->set.RightFill($f):
$s->drawLine(640. 0): $s->drawLine
(0. 480); $s->drawl_ine(-640. 0):
      $s->drawLine(0. -480):
$c = new SWFShape():
      $c->setRightFill($c->
addFill(Ox99. 0x99.
      0x99)): $c->drawUne(40, 0):
$c->drawLine(0,
      40): $c->drawLine(-40. 0);
$c->drawLine(0.
      -40):
$m = new SWFMovie() :
      $m->setDimension(640, 480):
$m->setBackground(Oxcc. Oxcc. Oxcc);
// нарисовать шахматный фон for($y=0;
$y<480: $y+=40) { for($x-0; $x<640; $x+=80) {
$i = $m->add($c); $1->moveTo($x. $y): }
$y+=40; for($x=40: $x<640: $x+=80) {
$i = $m->add($c); $i->moveTo($x, $y): }
$m->add($s): header('Content-type:
applтcation/x-shockwave-fl ash'):
      $m->output().?>

SWFBitmap->getWidth

Установка ширины рисунка в пикселах

int swfbitmap->getwidth (void)

См. также swfbitmap->getheight().

SWFBitmap->getHeight

Установка высоты рисунка в пикселах

int swfbitmap->getheight (void)

См. также swfbitmap->getwidth().

SWFFill — объект Заполнитель

С помощью этого объекта можно трансформировать (масштабировать, наклонять, вращать) рисунки и градиентные заливки, используемые как заполнители. Этот объект создается методом swfshape ->addfil1().

SWFFill->moveTo

Установка точки, от которой начинается заполнение

void swffill->movetc (integer x, integer y)

SWFFill->scaleTo

Установка масштаба заполнителя

void swffill->scaleto (integer kx, integer ky)

SWFFill->rotateTo

Установка угла поворота заполнителя

void swffill->rotateto (double degrees)

SWFFill->skewXTo

Установка угла х-наклона заполнителя

void swffill->skewxto (double x)

Указывается коэффициент смещения основания вправо, то есть 1.0 означает искажение в 45 градусов. Возможны отрицательные значения для смещения основания влево.

SWFFill->skewYTo

Установка у-наклона заполнителя

void swffill->skewyto (double у)

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

SWFMorph — объект Превращение

Объект представляет собой превращение одной фигуры в другую («shape tween»).

В приведенном ниже примере большой красный квадрат, вращаясь, превращается в маленький синий.

<?php $р = new SWFMorph().
$s = $p->getShapel(): $s->setLine(0.0.0.0):
$s->setLeftFill($s >addFill(Oxff. 0. 0)):
$s->movePenTo(-1000.-1000).
      $s->drawl_-ine(2000.0);
$s->drawl_ine(0.2000):
$5->drawLine(-2000.0): $s->drawline(0.-2000),
$s - $p->getShape2O;
$s->setLine(60.0.200.0):
$s->setLeftFill($s->addFilKO. 0. Oxff));
$s->movePenTo(0.-1000):
$s->drawLine(1000.1000):
$s->drawLine(-1000.1000):
$s >drawLine(-1000.-1000):
$s->drawLine(1000.-1000):
$m = new SWFMovie() .
Sm->setDimension(3000.2000):
$m->setBackground(Oxff. Oxff, Oxff);
$1 - $m->add($p): $i->moveTo(1500.1000):
for($r=0.0: $r<=1.0: $r+=0.1) {
$v>setRatio(Sr): $m->nextFrame(): }
header С Content-type:
      application/x-Shockwave-flash'):
$m->output():
      ?>

SWFMorph->getshape1

Установка начальной фигуры превращения

Imixed swfmorph->getshapel (void)

Возвращает объект swfshape().

SWFMorph->getshape2

Установка конечной фигуры превращения

2mixed swfmorph->getshape2 (void)

Возвращает объект swfshape().

SWFText — объект текста

<?php$f new SWFFontt"Techno fdb");
$t - new SWFText(): $t->setFont($f):
$t->moveTo(200. 2400). $t->setColor(Oxff. Oxff.
      0):
lt->setHenght(1200):
$t->addString("PHP
generates Flash with Ming!!");
$m = new SWFMovie(); $m->setDimension
(5400. 3bOO). I $m->add($t).
headerСContent-type: application/x-shockwave-flash');
$m->output(): ?>

SWFText->setFont

Установка текущего шрифта

void swftext->setfont (font)

SWFText->setHeight

Установка высоты шрифта

void swftext->setheight (integer height) Значение но умолчанию — 240.

SWFText->setSpacing

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

void swftext->setspacing (double spacing)

Значение по умолчанию — 1.0. Значение 0 указывает, что следующий символ будет выводиться непосредственно за последним. Вычисления не отличаются точностью.

SWRext->setColor

Установка цвета шрифта

void swftext->setcolor (int red, int green, int blue [, int a]) Значение по умолчанию — черный.

SWRext->moveTo

Установка позиции вывода

void swftext->moveto (integer x. integer y)

SWFText->addString

Рисование строки

void swftext->addstring (string string)

SWFText->getWidth

Вычисление ширины строки

double swftext->addstring (string string)

Возвращает размер с учетом размеров шрифта, масштаба и т. п.

SWFFont — Загрузка шрифта

new swffont (string filename)

В аргументе указывается имя FDB-файла или имя шрифта, поддер живаемого браузером. Формат FDB («font definition block») содер жит описание шрифта следующего вида: «SWF DefineFont2 block». Файл FDD можно получить из файлов-шаблонов «SWT Generator» с помощью утилиты makefdb библиотеки ming.

Три специальных шрифта должны быть доступны всегда: _serif, _sans и _typewriter.

<Php $f - newSWFFont("_sans"): ?>

Дескриптор шрифта, возвращенный swffont(),
      используется как аргумент методов SWFText->setFont() и
      SWFTextField->setFont().

swffont->getwidth

Вычисление ширины строки

int swffont->getwidth (string string)

Метод подобен методу SWFText(), но используется значение масштаба по умолчанию.

SWFTextField — объект текстового поля

new swftextfield ([int flags])

Текстовые ноля менее функциональны, нежели объекты swftext(): их нельзя вращать, непропорционально масштабировать, наклонять, но они могут использоваться для ввода в формах и использовать шрифты браузера.

Поведение поля можно изменить, указав необязательные флаги; следующие значения можно комбинировать, используя битовый оператор ИЛИ:

  • SWFTEXTFIELD_NOEDIT — нередактируемое поле;
  • SWFTEXTFIELD_PASSWORD — скрывает вводимые данные;
  • SWFTEXTFIELD_DRAWBOX — чертит обрамление;
  • SWFTEXTFIELD_MULTILINE — многострЪчный режим;
  • SWFTEXTFIELD_WORDWRAP — позволяет автоматически разносить длинный текст на несколько строк;
  • SWFTEXTFIELD_NOSELECT — делает текст поля невыделяемым.

Например, следующая строка создает поле с нсвыделяемым и нередактируемым текстом:

$t = newSWFTextField(SWFTEXTFIELD_NOSELECT
SWFTEXTFIELO_NOEDIT).

SWFTextField->setFont

Установка шрифта поля

void swftextfield->setfont (string font)

SWFTextField->setbounds

Установка ширины и высоты поля

void swftextfield->setbounds (int width, int height)

SWFTextField->align

Установка выравнивания текста в поле

void swftextfield->align (int alignement)

Допустимые значения аргумента: SWFTEXTFIELD_ALIGN_LEFT, SWFTEXTFIELD_ ALIGN_RIGHT, SWFTEXTFIELD_ALIGN_CENTER и SWFTEXTFIELD_ALIGN_JUSTIFY.

SWFTextField->setHeight

Установка высоты шрифта текстового поля

void swftextfield->setheight (int height)

Значение по умолчанию — 240.

SWFTextField->setLeftMargin

Установка ширины левого отступа поля

void swftextfield->setleftmargin (int width)

Значение по умолчанию — 0.

SWFTextField->setrightMargin

Установка ширины правого отступа поля

void swftextfield->setrightmargin (int width)

Значение по умолчанию — 0.

SWFTextField - >setM argi ns

Установка ширины левого и правого отступов поля

void swftextfield->setmargins (int left, int right)

Это комбинация двух вышеописанных методов.

SWFTextField->setindentation

Установка ширины отступа первой строки

void swftextfield->setindentation (int width)

SWFTextField->setLineSpacing

Установка межстрочного расстояния

void swftextfield->set1inespacing (int height)

Значение по умолчанию — 40.

SWFTextField->setcolor

Установка цвета поля

void swftextfield->setcolor (int red, int green, int blue [, int a])

Значение по умолчанию — прозрачный.

SWFTextField->setname

Присвоение полю имени

void swftextfield->setname (string name)

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

SWFTextField->addstring

Добавление строки к тексту поля

void swftextfield->addstring (string string)

SWFSprite — создание клипа (sprite)

Спрайт («movie clip») позволяет создавать анимации с собственной системой отсчета времени. Поэтому спрайты функционируют подобно основным анимациям.

<?php $ь - new SWFShape();
$s->setRngntFill($s->addFill(Oxff. 0. 0)):
$s->movePenTo(-500.-500):
$s->drawLineTo(500.-500):
$s->drawLineTo(500.500):
$s->drawLineTo(-500.500):
$s->drawnneTo(-500.-500).
$p = new SWFSpnte():
$1 =
      $p->add($s):
for($j-0;$j<8:$J++){
$p->nextFrame().
$1
      >rotate(10):
} $p-?nextFrame():
$m = new SWFMovie().
$, = $m
      >add($p):
$i->moveTo(1500.1000):
      $setNameC'blah");
$m->setDimension(3000.2000);
header( 'Content-type,
      application/x-shockwave-flash'):
$m->output().
      ?>

SWFSprite->add

Добавление объекта к спрайту

void swfsprite->add (resource object)

Этот метод позволяет добавлять объекты swfshape(), swfbutton(), swftext(), swfaction(), swfsprite(). Метод возвращает дескриптор объекта в списке отображения.

SWFSprite->remove

Удаление объекта из спрайта

void swfsprite->remove (resource object)

Метод, обратный предыдущему.

SWFSprite->setframes

Установка общего числа кадров

void swfsprite->setframes (integer numberofframes)

SWFSprite->nextframe

Переход к следующему кадру

void swfsprite->nextframe (void)

SWFbutton — объект Кнопка

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

<?php $f new SWFFont("_senf"):
$p - new SWFSpnte(). function label(Sstring) { global
      $f:
$t = new SWFTextField(). $t->setFont($f):
$t->addStnng($stnng) $t->setHenght(200):
$t->setBounds(3200.200): return $t: }
function addLabel (Sstnng) { global $p.
$1 = $p->add(label($stnng)):
$p- nextFrame(): $p >remove($i). }
$p->add(new SWFAction("stop():"))
; addLabelC'NO ACTION"):
addLabel{' SWFBUTTON_MOUSEUP"):
addLabeli"SWFBUTTONJdUSEDOWN"):
addLabel ("SWFBUTTONJWUSEOVERLL).
addLabel("SWFBUTTON_MOUSEOUT"):
addLabel("SWFBUTTON_MOUSEUPOUTSIDE");
addLabel("SWFBUTTON_DRAGOVER"):
addLabel ("SWFBUnON_DRAGOUT"):
function rect($r. $g. $b) { $s - new bWFShape():
$s->setRightFill($s->addFill($r. $g. $b)):
$s->draidine(600.0): $s->drawUne{0.600):
$s-»drawLine(-600.0): $s->drawL"'ne(0.-600);
return $s: } $b - new SWFButton():
$b->addShape(rect(Oxff. 0. 0).
SWFBUTTONJJP SWFBUTTONJHIT);
$b->addShape(rect(0. Oxff. 0). SWFBUTTONJWER).
№->addShape(rect(0. 0. Oxff). SWFBUTTON_DOWN);
$b->addAction(new SWFAction
("setTarget( '/label'): goto^ramed):").
SidFBUTTON_MOUSEUP):
$b->addAction(new SWFAction
("setTarget( '/label'); gotoFrame(2).").
SWFBUTTON_MOUS£DOkN):
$b->addAction(new SWFAction
("setTarget( '/label'): gotoFrame()):").
SWFBUnON_HOUSEOVER):
$b->addAction(nen
      SWFActionC"setTarget('/label'):
gotoFrame(4):").
SWFBUnON_MOUSEOUT):
$b->addAction(new SWFAction("setTarget('/label'):
gotoFrame(S):").
SWrBUTTON_MOUSLUPOUTSIOE):
$b->addAction(new
      SKFActlonC'setTargett'/label'):
gotoFrame(6):").
SWF8UTTON_DRAGOVER):
$b->addAction(new SWFAction
("setTarget('/label'/: gotoFrame(7):").
SWFBUTTON_DRAGOUT);
$m = new
      iWFMovie() : $m->setDimension(4000.3000);
$1 -
      $m->add($p); $1 ->setName("label");
$1->тоуеТо(400 1900):
$1
      = $m >add($b): $i->moveTo(400.900);
header('Content-type applicatlon/x-shockwave-flash'):
$m->output(). ?>

Следующий пример позволяет перетаскивать кнопку по экрану.

<?php $s = new SWFS^dpe'):
$s->setRightFill($s->addFill(Oxff. 0. 0)).
$s->drawLine(1000.0): $s->drawLine(0.1000);
$s->drawLine(-1000.0): $s->drawLine(0.-1000):
$b = new SWFButton():
$b->addShape($s. SWFBUTTON_H1T
SWFBUTTONJJP SWFBUTTON_OOWN
SWFBUTTONJ3VER) -
.
      $b->addAction(new SWFAction("startDrag('/test'. 0):")
SWFBUTTON_MOUSEDOWN);
// '0'
      указывает на неблокировку мыши
$b->addAction(new SWFActionC'stopDragO;").
SWFBUTTON_MOUSEUP
SWFBUTTON_MOUSEUPOUTSIDE).
$p - new SWFSpnte(): $p->add($b).
      $p->nextFrame():
$m = new SWFMovie(): $1 =
      $m->add($p):
$1 >setName('test'):
      $i->moveTo(1000.1000):
header('Content - type:
      application/x-shockwave-flash'):
$m->output():
      ?>

SWFbutton->addShape

Назначение кнопке фигуры

void swfbutton->addshape (resource shape, integer flags)

Возможны флаги: SWFBUTTONJJP, SWFBUTTONJWER, SWFBUTTON_DOWN, SWFBUHON_ HIT. Кнопка SWFBUTTON_HIT не отображается, а определяет область, реагирующую на нажатия.

SWFbutton->setUp

Синоним addShape (shape, SWFBUTTON_UP)

void swfbutton->setup (resource shape)

См. также: swfbutton->addshape() и SWFAction().

SWFbutton ->setOver

Синоним addShape (shape, SWFBUTTON_OVER)

void swfbutton->setover (resource shape)

SWFbutton->setdown

Синоним addShape (shape, SWFBUTTON_DOWN))

void swfbutton->setdown (resource shape)

SWFbutton->setHit

Синоним addShape (shape, SWFBUTTON_HIT)

void swfbutton->sethit (resource shape)

SWFbutton->addAction

Назначение кнопке действия

void swfbutton->addaction (resource action, integer flags)

Назначает обработчик событий кнопки (action — дескриптор объекта swfactionO) для следующих событий (flags): SWFBUTTON_MOUSEOVER, SWFBUTTON_MOUSEOUT, SUFBUTTON_MOUSEUP, SWFBuTTONJOUSEUPOuTSIDE, SWFBUTTON_ MOUSEDOWN, SWFBUnON_DRAGOUT и SWFBUTTON_DRAGOVER.

SWFbutton->setAction

Синоним addAction (shape, SWFBUTTON_MOUSEUP)

void swfbutton->setaction (resource action)

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

SWFAction — объект Действие

Объект компилирует сценарий в действие.

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

Компилятор распознает следующие инструкции:

  • break;
  • for;
  • continue;
  • if;
  • el se;
  • do;
  • while.

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

  • tirae() — возвращает число миллисекунд, прошедшее с начала проигрывания анимации;
  • randora(seed) — возвращает случайное число из диапазона (0-seed);
  • length(expr) — возвращает длину выражения;
  • int(number) — округление до ближайшего целого;
  • concat(expr, expr) — соединение строк;
  • ord(expr) — возвращает ASCII-код данного символа;
  • chr(num) — возвращает символ с указанным ASCII-кодом;
  • substr(stnng, location, length) — возвращает часть строки string длиной length, начиная с позиции location.

Также могут быть использованы дополнительные команды:

  • duplicateClipCclip, name, depth) — дублирует клип (sprite), присваивая ему имя name и располагая на уровне depth;
  • removed ip(expr) — удаляет именованный клип анимации;
  • trace(expr) — записывает сообщение в журнал отладки (пока команда бесполезна);
  • startDragCtarget. lock, [left, top, right, bottom]) — начать перетаскивание объекта target. Аргумент lock определяет, блокировать ли мышь: 0 (нет) или 1 (да). Можно указать область, в которой осуществляется перетаскивание;
  • stopDrag() — прекратить перетаскивание;
  • callFrame(expr) — вызвать именованный кадр как функцию;
  • getURUurl, target, [method]) — загрузить данный url в именованную область target (имя кадра или зарезервированное значение «_level()» для замены текущей анимации или «_levell» для загрузки анимации поверх текущей). В необязательном аргументе можно указать метод отсылки: POST или GET для отсылки серверу , данных;
  • loadMovieCurl, target) — подобие предыдущей команды;
  • nextFrame() — перейти к следующему кадру;
  • prevFrame() — перейти к предыдущему кадру;
  • play() — начать проигрывание анимации;
  • stop() — закончить проигрывание анимации;
  • toggleQuality() — переключиться между низким и высоким качеством;
  • stopSounds() — прекратить проигрывание звуков;
  • gotoFrame(num) — перейти к кадру с указанным номером (нумерация начинается с 0);
  • gotoFrame(name) — перейти к именованному кадру;
  • setTarget(expr) — установить контекст действия;
  • frameLoaded(num) — может использоваться в условных и циклических конструкциях для проверки того, был ли уже загружен кадр с указанным номером. Можно использовать альтернативное выражение /:framesLoaded.

Клипы и анимации имеют следующие свойства:

  • х;
  • у;
  • xScale — масштаб по горизонтали;
  • yScale — масштаб по вертикали;
  • currentFrame — текущий кадр (только для чтения);
  • total Frames — общее число кадров (только для чтения);
  • alpha — уровень прозрачности;
  • visible — видимость (l=on, 0=off);
  • width — (только для чтения);
  • height — (только для чтения);
  • rotation — угол поворота;
  • target — (только для чтения);
  • framesLoaded — (только для чтения);
  • name;
  • dropTarget — (только для чтения);
  • url — (только для чтения);
  • highQuality — качество (1=высокое, 0=низкое);
  • focusRect;
  • soundBufTime.

Например, установить значение позиции спрайта можно выражением Bох.х = 100;. Поскольку Flash сохраняет все компоненты анимации в древовидной структуре (наподобие файловой системы Unix), начальный слеш указывает на массив объектов верхнего уровня; если спрайт box находится внутри спрайта biff, то выражение записывается так: box/biff.x = 100;.

Следующий пример перемещает красный квадрат по экрану.

<?php $s = new SWFShape():
$f = $s->addFill(Oxff. 0. 0);
Js->setRightFill($f):
$s->movePenTo(-500.-500):
$s->dravvLineTo(500. -500);
$s->drawLineTo(500.500):
$5->drawLineTo(-500.500):
$s->drawl_ineTo(-500.-500).
$p = new SWFSprite(); $1 = $p->add'.Ss):
$i->setDepth(l); $p->nextrrame().
for($P=0: $n<5; ++$n) {
$i->rotate(-15)- $p->nextFrame(). }
$m = new SWFMovie(); $m->setBackground
(Oxff. Oxff. Oxff):
      $m->setDimens->on(6000.4000).
$- -
      $m->add($p). $1->
<:etDepths.l).
      $i->movpTo(-600.2000):
$1->setName("box"):
Sm->add(new SUFActionC'/box x += 3;")):
$m->nextFrame():
$m->add(new SWFActionC" gotoFrame(()):
play(): ")): $m->nextFrame().
headert'Content-type:
      application/x-shockwave-flash'):
Sm-'0utput():
      ?>

Приведенный ниже пример отслеживает перемещение мыши по экрану.

<?php
$m = new
      SWFMovie(): $ra->setRate(36.0);
$m->setDimension(]200 800):
      $m->setBackgrouncK(), 0. 0):
/* пустой спрайт
      для отслеживания х и у координат мыши */
$i =
      $m->add(new SWFSpriteO): $1->setName('mouse');
$m->add(new SWFActionC' startDrag('/mouse'. 1):
      ")):
// antialiasing можно выключить для
      квадратов.
$m->add(new SWFActionC' this quality
      = 0. ')):
$r = new SWFMorph() :/* morphing box */
      $s = $r->getShapel():
$s->setLeftFill(Ss->addFill(Oxff. Oxff. Oxff)):
$s->movePenTo(-40. -40). Ss->drawLine(80.
      0).
$s->drawLine(0. 80). $s->drawLine(-80.
      0);
$s->drawl_me(0. -80): $s =
      $r->getShape2():
Ss->setLeftFill($s->addFill{OxOO. 0x00.
      0x00)):
$s->movePenTo(-l. -1). .
$s->drawLine(2. 0): $s->drawLine(0. 2):
$s->drawLine(-2. 0). $s->drawl_ine(0. -2).
$box = new SWFSprite():
$box->add(new SWFActionC' stop(): ")):
$1 = $box->add($r) for($n=0; $n<-20: ++$n) {
$1->setRatio($n/20).
$box->nextFrame(): )
/*
      споайт контейнер позволяет многократно
использовать действие */
Scell - new SWFSpnteO: $1 - $cell->add($box):
$i->setNarne( 'box'):
$cell->add(new SWFActionC'
setTarget('box'):
/* x -
      родительская координата, i.e. (..) x */
dx =
      (/mouse x + randoni(6)-3 - . ,x)/5
dy = (/mouse.у
      + random(6)-3 - .. y)/5:
gotoFramednt(dx*dx +
      dy*dy)): ")):
$cell->nextFrame():
Scell->add(new SWFActionC' gotoFrame(O): playO;
      "));
Scell->nextFrame():
/* добавим ячейки в анимацию */ for($x-0: $x<12:
      ++$х)
{ for($y-0- $y<8: ++$у) { $i =
      $m->add($cell):
$i->moveTo(100*$x+50.
      100*$у+50): } }
$in->nextrrane():
$m->add(new SWFAcbon'" qotoFrame(l): playO. ")):
heacter('Content-type, application/x
      shockwave-flash1):
$m->output(): ?>

Тот же сценарий, но с цветными шариками...

<?рhр $т - new SWFMovie():
$m->setDimension(11000. 8000):
$m-->setBackground(OxOO. 0x00. 0x00):
$m >add(new SWFActionC' this.quality = 0
/frames.visible = 0: startDrag\'/mouse'. 1); ")):
// mouse tracking sprite $t nev. SWFSpnte():
$1 = $m->add($t): $1->setNdme('mouse'):
$g = new SWFGradientO $g->addEntry
(0. Oxff. Oxff. Oxff. Oxff). $g->addEntry
(0.1. Oxff. Oxff. Oxft. Oxff)' $g->addEntry
(0 5. Oxff. Oxff. Oxff. Ox5f): $g->addEntry
(1.0. Oxff. Oxff. Oxff. 0).
// gradient shape thing $ь - nev» SWFShape() .
$f - $s->addFill
($g.
      SWFFILL_RADiAL_GRADIENT):
$f->scaleTo(0.03):
      $s->setRightFni($f):
$5->movePenTo(-600.
      -600): $s->
drawLine(1200. 0):
      $s->drawLine
(0. 1200): $s->drawLine(-1200.
      0):
$s->drawLine(0. -1200):
// need to make this a sprite so we
can multColor it $p = new SWFSprite():
$p->add($s): $p->nextFrame();
II put the shape in here, each frame
a different color Sq = new SWFSprite() :
$q->add(new SWFAction("gotoFrame(random
(7)+l). stop():")): $1 = $q->add($p);
$i->multColor(l.0. 1.0. 1.0):
      $q->nextFrame():
$i->multColor(1.0. 0.5.
      0.5): $q->nextFrame().
$i->multColor(1.0.
      0.75. 0.5): $q->nextFramef):
$i->multColor(1.0. 1.0. 0.5):
      $q->nextFrame():
$l->multColor(0.5. 1.0.
      0.5): $q->nextFrame():
$i->multColor(0.5.
      0.5. 1.0): $q->nextFrame():
$i->multfolor(1.0. 0.5. 1.0): $q->nextFrame().
// finally, this one contains the action code
$p = new SWFSpriteO: $1 = $p->add($q):
$i->setNameOframes'): $p->add(new
      SWFAction()
dx = (/:mousex-/:lastx)/3 +
      random(10)-5:
dy = (/:mousey-/:lasty)/3: x =
      /.mousex:
у = /:mousey; alpha = 100: ")):
$p->nextFrame(); $p->add(new SWFActionC
this.x = x: this у = у: this.alpha alpha:
x += dx: у += dy: dy +- 3; alpha -= 8; ")):
$p->nextFrame(). $p->add(new
SWFActlonC'prevFrame(): play():")):
$p->nextFrame(). Si = $m->add($p):
$1 ->setName('frames'): $m->nextFrame().
$m->add(new SWFActlonC1
lastx - mousex: lasty = mousey:
mousex - /mouse.x: mousey = /mouse.у: ++num:
if(num == 11) num = 1: removedip('char' &
      num):
duplicateClTp(/frames. 'char' & num.
      num): ")):
$m->nextFrame():
$m->add(new SWFActlonC'prevFrame(). play():")):
headert'Content-type:
application/x-shockwave-flash'): $m->output():
      ?>

Следующий пример отслеживает нажатия клавши. Необходимо, чтобы фокус окна был активен.

<?php /* спрайт с буквой в каждом кадре */
$р = new SWFSprite():
$р->add(new SWFAction("stop():")):
Schars - "abcdefghijklmnopqrstuvwxyz".
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"1234567890!l3|$^"&*()_+-=/[]{} ::..<>?'-";
$f = new SWFFont("_sans"):
for($n-0: $nremove($i); $t =
new SWFTextFieldO. $t->setFont($f).
$t->setHeight(240): $t->setBounds(600.240):
$t->align(SWFTEXTFIELD_ALIGN_CENTER):
$t->addString($c):
$т =
      $p->add($t); $p->labelFrame($c);
$p->nextFrame(): )
/*
      область нажатия для кнопки - кадр целиком */
Ss =
      new SWFShape():
is->setFillStyleO($s->addSolidFill(0. 0. 0.
      0)).
;s->drawline(600. 0); :5->drawLine(0.
      400).
Ss->drawLine(-600. 0);
      Ss->drawLine(0. -400):
/* кнопка проверяет
      нажатую клавишу и
переходи к соответствующему
      кадру */
5b = new SWFButton():
Sb->addShape($s. SWFBUTTON_HIT):
for($n=0; $naddAction(new SWFActionC'
setTargeK'/char');gotoFrame('$c');").
SWFBUTTON_KEYPRESS($c)):
$n
      = new SWFMovie(); Sm->setDimension(600.400):
S-. *= $m->add($p): Si->setName( 'char');
$i->moveTo(0.80), Sra->add($b)
heeder('Content-type:
      application/x-shockwave-flash'):
Sa->output().
      ?>

PDF-документы

PDF-функции позволяют PHP создавать PDF-файлы с помощью библиотеки PDF, созданной Томасом Мерзем (http://www.pdflib.com/ pdflib/index.html); также могут потребоваться библиотеки JPEG (ftp:// ftp.uu.net/graphics/jpeg/) и TIFF (http://www.libtiff.org/).

С pdflib поставляется хорошая документация, описывающая возможности библиотеки. Имена функций и аргументы идентичны в библиотеке и РНР. Размеры и координаты измеряются в единицах Postscript (72 на дюйм), но это зависит от выбранного разрешения.

Аналогом библиотеки является ClibPDF (см. ниже).

Версии ниже 3.0 pdflib не поддерживаются в РНР 4. Для компиляции РНР с библиотекой pdflib используйте параметр — enable-shared-pdftib.

<?php $fp = fopenC'test.pdf". "w"):
$pdf = pdf_open($fp):
pdf_set_info($pdf. "Author". "Uwe Steinmann").
pdf_set_info($pdf. "Title". "Test for PHP PDFlib");
pdf_set_info($pdf. "Creator". "See Author"):
pdf_set_info($pdf. "Subject". "Testing");
pdf_begin_page(*pdf. 595. 842):
pdf_add_outline($pdf. "Page 1").
pdf_set_font($pdf. "Times-Roman". 30. "host").
pdf_set_value($pdf. "textrendenng". 1):
pdf_show_xy($pdf. "Times Roman outlined". 50.
      750);
pdf_moveto($pdf. EO. 740); .
pdf_hneto($pdf. 330. 740).
pdf_stroke($pdf). pdf_end_page($pdf):
pdf_close($pdf): fclose($fp):
echo "<A HRFF=getpdf.php>finished</A>":
<?php // сценарий getpdf.php.
просто возвращает документ pdf '
$fp = fopenC'test.pdf". "r")
headert"Content-type: applncation/pdf").
fpassthru(Sfp); fclose($fp): ?>

Пример из комплекта pdflib создает документ, состоящий из страниц с изображением часов (каждая страница показывает текущее время создания):

<?php $pdffilename = "clock.pdf": // имя файла
Sradius = 200: // радиус циферблата
Smargin =20: // поля страницы
Spagecount =40; // число страниц
$fp = fopen($pdffilename. "w"). $pdf = pdf_open($fp);
while($pagecount-- > 0) {
pdf_begin_page($pdf. 2 * (Sradius + Smargin).
2 * (Sradius + Smargin)):
pdf_set_parameter($pdf. "transition", "wipe"):
pdf_set_value($pdf. "duration". 0.5).
pdf_translate(Spdf. $radius + Smargin. Sradius +
      Smargin):
pdf_save(Spdf): pdf_setrgbcolor($pdf.
      0.0 0 0. 1.0):
/* минутные метки */
      pdf_cetlinewidth($pdf. 2 0):
for (.«alpha - 0:
      Salpha < 360: Salpha += 6) {
pdf_rotate($pdf.
      6.0): pdf_moveto($pdf. Sradius. 0.0):
pdf_lineto($pdf. Sradius-Smargin/3. 0.0):
pdf_stroke(Spdf): } pdf_restore($pdf):
      pdf_save($pdf):
/* 5 минутные метки */
      pdf_setlinewidth($pdf. 3.0):
for (Salpha - 0:
      Salpha < 360: Salpha += 30) {
pdf_rotate($pdf.
      30.0):
pdf_moveto(Spdf. Sradius. 0.0):
L pdf_11neto($pdf. $radius-$margin. 0.0).
pdf_stroke(Spdf): $ltime = getdate():
/* часовая стрелка */ pdf_save($pdf):
pdf_rotate($pdf.-((SItime['minutes']/60.0)+
ntfme['hours']-3.Q)*30.0): pdf_moveto
($pdf. -Sradius/10. -Sradius/20):
pdf_lineto($pdf. $radius/2. 0.0):
pdf_lineto($pdf. -Sradius/10. Sradius/20):
pdf_closepath($pdf). pdf_fill($pdf):
      pdf_restore(Spdf):
/* минутная стрелка */
      pdf_save(Spdf):
paf_rotate($pdf.(($ltime['seconds']/60 0)+
SltimeC'rmnjtes'MS.): pdf_moveto
($pdf. -$radius.'10. -$radius/20); pdf_lineto
($pdf. Sradius * 0.8. 0 0): pdf_lineto(
$pdf. -$radius/i(). $radius/20):
      pdf_closepath($pdf):
pdf_fi)l($pdf);
      pdf_restore($pdf):
/* секундная стрелка */
pdf_setrgbcolor($pdf. 1.0. 0.0. 0.0);
pdf_setlinewidth($pdf. 2): pdf_save($pdf):
pdf_rotate($pdf. -((SltTmei'seconds'] - 15.0) *6.0)):
pdf_moveto($pdf. -$radius/5. 0.0).
pdf_lineto($pdf. Sradius. 0.0);
pdf_stroke($odf); pdf_restore($pdf):
/* центр */ pdf_circle($pdf. 0. 0. $radius/30):
pdf_fnH$pdf): pdf_restore($pdf);
pdf_end_page($pdf); } $pdf - pdf_close($pdf):
fclose($fp): $fp = fopen($pdffilename. "r");
header("Content - type: appli cati on/pdf");
fpassthru($fp): fclose($fp): ?>

pdf_set_info

Заполнение поля информации документа

void pdf set_info (int pdf_document. string fieldname, string value)

Возможные поля fieldname: «Subject», «Title», «Creator», «Author», «Keywords» и одно, определяемое пользователем. Функция должна вызываться до создания страниц.

<?рhр $fd = fopent"test.pdf". "w"):
Spdfdoc - pdf open($fd).
pdf_set_1nfo($pdfdoc. "Author". "Имя автора");
pdf_setjnfo($pdfdoc. "Creator". "Название создателя");
pdf set info($pdfdoc. "Title", "Заголовок");
pdf_set_mfo($pdfdoc. "Subject". "Тема");
pdf_set_info($pdfdoc. "Keywords". "Ключевые, слова");
pdf_set_info($pdfdoc. "CustomField".
"Чего-то еще"); pdf_beg-in_page($pdfdoc. 595. 842);
pdf_end_page($pdfdoc). pdf_close($pdfdoc); ?>

Эта
      функция заменяет собой pdf_set_infoj<;e.ywords(), pdf_set_info_
      title(), pdf_set_info_subject(), pdf_set_info_creator(), pdf_set_info_
      sybject().

pdf_open

Открытие нового документа pdf 'int pdf_open (int file)

Функция делает файл, открытый функцией fopen(), документом pdf. Если не указывать дескриптор файла, он создается в памяти и затем может выводиться на стандартный поток вывода или отсылаться браузеру. Функция возвращает дескриптор документа, который следует указывать в последующих pdf-функциях.

См. также: fopen(), pdf_close().

pdf_close

Закрытие документа pdf

void pdf_close (int pdf_document)

См. также: pdf_open(), fclose().

pdf begin_page

Начало новой страницы

void pdf_begin_page (int pdf_document, double width, double height)

Аргументы height и width задают высоту и ширину страницы. После внесения на страницу информации ее следует закрыть функцией pdf_end_page().

См. также pdf_end_page().

pdf_end_page

Завершение страницы

void pdf_end_page (int pdf_docuraent)

После этого модификация этой страницы невозможна.

См. также pdf_begin_page().

pdf_show

Вывод текста в текущую позицию

void pdf_show (int pdf_document, string text)

Для вывода используются текущая позиция и текущий шрифт.

См. также: pdf_show_xy(), pdf_show_boxed(), pdf_set_text_pos(), pdf_set_ font().

pdf_show_boxed

Вывод текста в прямоугольную область

int pdf_show_boxed (int pdfjJocument, string text, double x, double y. double width, double height, string mode [, string feature])

Левый нижний угол области вывода задается (х,у); высота и ширина — height, width. Аргумент mode определяет выравнивание текста: если высота и ширина равна нулю, то возможны значения: «left», «right» или «center», если они не равны нулю, то — «justify» или «full justify».

Если аргумент feature содержит значение «blind», текст не отображается.

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

См. также: pdf_show(), pdf_show_xy().

pdf_show_xy

Вывод текста в указанную позицию

void pdf_show_xy (int pdf_doc, string text, double x, double y)

См. также: pdf_show(), pdf_show_boxed().

pdf_set_font

Выбор шрифта, его размера и кодировки

void pdf_set_font (int pdf_document, string fontjiame, double size, string encoding [, int embed])

Аргумент вида кодировки encoding может принимать значения: «win-ansi» (по умолчанию), <-builtin», «host», «macroman» и т. п. Если для последнего аргумента задано значение 1, шрифт будет внедрен в документ pdf (иначе, нет). Если шрифт распространен, внедрять его не следует из-за увеличения размера документа.

Функция должна вызываться после pdf_begin_page().

pdf_ set_ leading

Установка промежутка между строками текста void pdf_set_leading (int pdf_document, double distance) Используется при выводе текста функцией pdf_continue_text().

См. также pdf continue text().

pdf_set_parameter

Установка строкового значения параметра pdflib

void pdf_set_parameter (Int pdf_document, string name, string value)

См. также: pdf_get_value(), pdf_set_value(), pdf_get_parameter().

pdf_get_parameter

Получение строкового значения параметра pdflib

string pdf_get_parameter (int pdf_doc, string name [, double modifier])

Аргумент modifier используется при необходимости.

См. также: pdf_get_value(), pdf_set_value(), pdf_set_parameter().

pdf_set_value

Установка численного значения параметра pdflib

void pdf_set_value (int pdf_document, string name, double value)

См. также: pdf_get_value(), pdf_get_parameter(), pdf_set_parameter().

pdf_get_value

Получение численного значения параметра pdflib

double pdf_get_value (int pdf_document, string name [, double modifier])

Аргумент modifier используется при необходимости.

См. также: pdf_set_value(), pdf_get_parameter(), pdf_set_parameter().

pdf_set_text_rendering

Установка метода вывода текста

void pdf_set_text_rendering (int pdf_document, int mode)

Устарела, используйте PDF_set_value().

pdf_set_horiz_scaling

Установка масштабирования текста по горизонтали

void pdf_set_horiz_scaling (int pdf_document, double scale)

pdf_set_text_rise

Установка подъема текста

void pdf_set_text_rise (int pdf_document, double rise)

pdf_set_text_matrix

Установка матрицы преобразования шрифта

void pdf_set_text_matrix (Int pdf_document, array matrix)

Начиная с версии pdflib 2.3 эта функция недоступна.

pdf_set_text_pos

Установка позиции текста

void pdf_set_text_pos (int pdf_document, double x-coor, double y-coor)

Устанавливает позицию вывода текста последующим вызовом pdf_ show().

См. также: pdf_show(), pdf_show_xy().

pdf_set_char_spacing

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

void pdf_set_char_spacing (int pdf_document, double space)

Устарела, используйте PDF_set_value().

См. также: pdf_set_word_spacing(), pdf_set_leading().

pdf_set_word_spacing

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

void pdf_set_word_spacing (int pdf_document, double space)

Устарела, используйте PDF_set_value().

См. также: pdf_set_char_spacing(), pdf_set_leading().

pdf_skew

Поворот системы координат

void pdf_skew (int pdf_document, double alpha, double beta) \

Угол поворота в градусах указывается относительно осей alpha (x) и beta (у). Углы не могут принимать значения 90 или 270 градусов.

pdf_continue_text

Вывод текста со следующей строки

void pdf_continue_text (int pdf_docuraent, string text)

Расстояние между строками может быть установлено функцией pdf_set_leading().

См. также: pdf_show_xy(), pdf_set_leading(), pdf_set_text_pos().

pdf_stringwidth

Вычисление ширины текста

double pdf strnngwidth (int pdf document, string text)

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

См. также pdf_set_font().

pdf_save

Сохранение текущих установок

void pdf_save (int pdf_document)

Действует подобно команде postscript gsave. Полезна при необходимости масштабировать или развернуть объект, не воздействуя на другие объекты. pdf_save() требует, чтобы затем была вызвана функция pdf_restore().

См. также pdf_restore().

pdf_restore

Восстановление ранее сохраненных установок

void pdf_restore (int pdf_document)

Восстанавливает установки, сохраненные pdf_save(). Действует подобно команде postscript grestore.

<?php rdf_save($pdf):
// всякие вращения и трансформации ...
pdf_reitore($pdf) ?>

См. также pdf_save().

pdf_translate

Установка начала системы координат

j void pdf_translate (int pdf_document, double x, double y) Координаты указываются относительно текущей точки отсчета. Затем, до начала рисования объектов, требуется установить текущую точку.

<?php pdf_moveto($pdf. 0. 0). pdf_lireto
($pdf. 100. 100). pdf_stn>ke($pd*):
pdfJranslateOpdf. 100. 100): pdf_mweto($pdf. 0. 0);
pdfjireto($pdf. 100. 100): pdf_stroke($pdf): ?>

pdf_scale

Установка масштабирования

void pdf_scale (int pdf_document, double x_scale, double y_scale)

<?pho pdf_scale($pdf. 72 0, 72.0).
pdf_llneto($pdf. l. 1): // дюйм
pdf_stroke($pdf). ?>

pdf_rotate

Установка угла вращения в градусах

void pdf_rotate (int pdf_document, double angle)

pdf_setflat

Установка равномерности

void pdf_setflat (int pdf_document, double value)

Возможные значения параметра — от 0 до 100.

pdf_setlinejoin

Установка параметра linejoin

void pdf_setlinejoin (int pdf_document. long value)

Возможные значения параметра — от 0 до 2.

pdf_setlinecap

Установка параметра linecap

void pdf_setlinecap (int pdf document, int value)

Возможные значения параметра — от 0 до 2.

pdf_setmiterlimit

Установка параметра miter limit

void pdf_setmiterlimit (int pdf_document. double value)

Возможные значения параметра — 1 и более.

pdf_setlinewidth

Установка ширины строк

void pdf_setlinewidth (int pdf_document. double width)

pdf_setdash

Установка вида штриховки

void pdf_setdash (int pdf_document. double white, double black)

Устанавливает размер белых и черных полос. Если оба аргумента равны 0, то линия будет непрерывной.

pdf_moveto

Установка текущей точки

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

pdf_curveto

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

void pdf_curveto (int pdf_document, double xl, double yl, double x2, double y2, double x3, double y3)

Чертит кривую Безьс от текущей точки до (хЗ.уЗ), используя точки (xl.yl) и (х2,у2) как ориентирующие.

См. также: pdfjnoveto(), pdf_lineto(), pdf_stroke().

pdf_lineto

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

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

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

См. также: pdf_moveto(), pdf_curveto(), pdf_stroke().

pdf_circle

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

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

См. также: pdf_arc(), pdf_stroke().

pdf_arc

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

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

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

См. также: pdf_circle(), pdf_stroke().

pdf_rect

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

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

Левый нижний угол задается (х,у); высота и ширина — height, width.

См. также pdf_stroke().

pdf_closepath

Завершение текущего пути

void pdf_closepath (int pdf_document)

Чертит линию от текущей точки до точки, где начиналась первая линия. Многие функции, например pdfjnovetoO, pdf_circle(), pdf_rect(), начинают новый путь.

pdf_stroke

Заштриховка пути

void pdf_stroke (int pdf_document)

Текущий путь — это совокупность всех линий. Без этой функции линии начерчены не будут.

См. также: pdf_closepath(), pdf_c1osepath_stroke().

pdf_closepath_stroke

Черчение и закрытие пути

void pdf_closepath_stroke (int pdf_document)

Это комбинация pdf_closepath() и pdf_stroke().

См. также: pdf_closepath(), pdf_stroke().

pdf_fill

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

void pdf_fill (int pdf_document)

См. также: pdf_closepath(), pdf_stroke(), pdf_setgray_fill(), pdf_setgray(), pdf_setrgbcolor_fiTl (), pdf_setrgbcolor().

pdf_fill_stroke

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

void pdf_fill_stroke (int pdf_document)

См. также: pdf_closepath(), pdf_stroke(), pdf_fill(), pdf_setgray_fill(), pdf_setgray(), pdf_setrgbcolor_fill(), pdf_setrgbcolor().

pdf_closepath_fill_stroke

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

void pdf_dosepath_fin_stroke (int pdfjjocument)

См. также: pdf_closepath(), pdf_stroke(), pdf_fill(), pdf_setgray_fill()) pdf_setgray(), pdf_setrgbcolor_fiTI(), pdf_setrgbcolor().

pdf_endpath

Завершение пути без его закрытия void pdf_endpath (int pdf_document)

См. также pdf_dosepath().

pdf_clip

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

void pdf_c!ip (int pdf_docuraent)

pdf_setgray_fill

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

void pdf_setgray_fill (int pdfjjocument, double gray_value)

См. также pdf_setrgbcolor_fill ().

pdf_setgray_stroke

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

void pdf_setgray_stroke (int pdf_document, double gray_value)

См. также pdf_setrgbcolor_stroke().

pdf_setgray

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

void pdf_setgray (int pdf_document, double grayj/alue)

См. также: pdf_setrgbcolor_stroke(), pdf_setrgbcolor_fill().

pdf_setrgbcolor_fill

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

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

См. также pdf_setrgbcolor_fill().

pdf_setrgbcolor_stroke

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

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

См. также pdf_setrgbcolor_stroke().

pdf_setrgbcolor

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

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

См. также: pdf_setrgbcolor_stroke(), pdf_setrgbcolor_fill().

pdf_add_outline

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

int 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().

pdfset_duration

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

void pdf_set_duration (int pdfjiocument, double duration)

См. также pdf_set_transition().

pdf_open_gif

Открытие рисунка GIF

int pdf_open_gif (int pdf_document, string filename)

Используйте функцию pdf_open_image_file().

<?php $im = pdf_open_gif($pdf. "test.gif"):
pdf_place_image($pdf. $im. 100. 100. 1):
pdf_close_image($pdf. Sim): ?> "

pdfopen_png

Открытие рисунка PNG

int pdf_open_png (int pdf, string png_file)

Используйте функцию pdf_open_image_file().

pdf_openjpeg

Открытие рисунка JPEG

int pdf_ppen_jpeg (int pdf_document, string filename)

Используйте функцию pdf_open_image_file().

pdf_open_tiff

Открытие рисунка TIFF

int pdf_open_tiff (int PDF-document, string filename)

Используйте функцию pdf_open_image_file().

pdf_open_image_file

Чтение рисунка из файла

int pdf_open_image_file (int PDF_document, string format, string filename)

Загружает рисунок формата format из файла filename и возвращает его идентификатор. Возможные форматы: PNG, TIFF, JPEG и GIF.

<?php $pim = pdf_open_image_file
($pdf. "png". "picture.png");
pdf place_image($pdf. $plm. 100, 100. 1):
pdf_close_image($pdf. Spim); ?>

Функция заменяет pdf_open_jpeg(), pdf_open_gif(), pdf_open_tiff(), pdf_ open_png().

См. также: pdf_close_image(), pdf_execute_image(), pdf_place_image(), pdf_ put_image().

pdf_open_memory_image

Открытие рисунка, созданного графическими функциями PHP

int pdf_open_memory_image (int pdfjJocument, int image)

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

<?php // Example: Including a memory image
$im = ImageCreateClOO. 100);
$col = ImageColorAllocate($im. 80. 45. 190);
ImageFiimim. 10. 10, $col);
$pim = pdf_open_memory_image($pdf. $im):
ImageDestroy($im):
pdf_place_image($pdf. $pim. 100. 100, 1);
pdf_close_image($pdf. Spim): ?>

См. также: pdf_clo.scjmage(), pdf_executejmage(), pdf_place_image(), pdf_ put_iraage().

pdf_closejmage

Закрытие рисунка

void pdf_close_image (int image)

Закрывает рисунок, открытый функциями pdf_open_ ().

См. также: pdf_open_jpeg(), pdf_open_gif(), pdf_open_memory_image().

pdf_get_image_height

Установка высоты рисунка в пикселах

string pdf_get_image_height (int pdf_document, int image)

См. также: pdf_open_image_file(), pdf_open_memory_image(), pdf_get_image_ width().

pdf_get_image_width

Установка ширины рисунка в пикселах

string pdf_get_image_width (int pdf_document. int image)

См. также: pdf_open_itnage_file(), pdf_openjnemory_image(), pdf_get_image_ height().

pdf_placejmage

Размещение рисунка на странице

void pdf_p!ace_image (int pdf_doc, int image, double x, double y, double scale)

Позиция размещения задается (х,у); масштаб — scale.

См. также pdf_put_image().

pdf_put_image

Сохранение рисунка в PDF для дальнейшего использования

void pdf_put_inage (int pdf_document, int image)

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

Начиная с версии 2.01 pdflib функция бесполезна и выводит только предупреждение.

См. также: pdf_place_image(), pdf_execute_image().

pdf_execute_image

Размещение сохраненного рисунка на странице

void pdf_execute_image (int pdf_document, int image, double x, double y, double scale) :

Отображает рисунок, внедренный функцией pdf_put_image().

Начиная с версии 2.01 pdflib функция бесполезна и выводит только предупреждение.

Example I. Multiple show of an image
<?php
Sim = ImageCreatedOO. 100);
Scoll = ImageColorAllocate($im. 80. 45. 190);
ImageFill($im. 10. 10. Scoll):
$pim = pdf_open_memory_image($pdf. Sim);
pdf_put_image($pdf. $pim);
pdf_execute_image($pdf, $pim. 100. 100. 1);
pdf_execute_image($pdf. $pim. 200. 200. 2); // 200 %
pdf_close_image($pdf. $pim); ?>

pdf__add_annotation

Добавление примечания

void pdf_add_annotation (int pdf_document, double llx. double lly, double urx. double ury, string title, string content)

Примечание располагается в левом нижнем углу (Их, Пу), верхний правый угол (urx. ury).

pdf_set_border_style

Установка стиля обрамления примечаний и гиперссылок

void pdf_set_border_style (int pdf_document. string style, double width)

Аргумент style может принимать значения «solid» или «dashed». Ширина задастся аргументом width.

См. также: pdf_set_border_color(). pdf_set_border_dash().

pdf_set_border_color

Установка цвета обрамления ссылок и примечаний

void pdf_set_border_color (int pdf_document, double red, double green, double blue)

Три компонента цвета могут принимать значения из диапазона от 0.0 до 1.0.

См. также: pdf_set_border_style(), pdf_set_border_dash().

pdf_set_border_dash

Установка стиля окантовки ссылок и примечаний

void pdf_set_border_dash (int pdf_document. double black, double white)

Устанавливает длину черных и белых полос прерывистых линий.

См. также: pdf_set_border_style(), pdf_set_border_color().

ClibPDF

Библиотека ClibPDF позволяет PHP создавать документы PDF. Она не является полностью свободно распространяемой. Библиотека действует подобно pdflib, но создает документы меньшего размера с большей скоростью.

При необходимости воспользуйтесь документацией, поставляемой с ClibPDF.

Все функции, за исключением cpdf_open(), принимают в качестве своего первого аргумента дескриптор открытого документа.

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

<?php defineC'PPM". 2.83464566929):
// пойнтов в миллиметре Scpdf = cpdf_open(0)
cpdf_page_imt($cpdf. 1. 0. 595. 842. PPM);
cpdf_add_outlт netScpdf. 0. 0. 0. 1. "Page 1"):
cpdf_begin_text(Scpdf).
cpdf_set_font($cpdf. "Times-Roman" 30.
"WinAnsiEncoding"); cpdf_set_text_rendering($cpdf. 1):
cpdf_text($cpdf. "Times Roman outlined". 50. /50).
cpdf_end_text(Scpdf): cpdf_moveto(Scpdf. 50. 740).
cpdf_11neto(Scpdf. 330. 740). cpdf_stroke(Scpdf):
cpdf_final1ze($cpdf);
Header("Content-type: application/pdf"):
cpdf_output_buffer(Scpdf):
cpdf_close(Scpdf); ?>

Пример из комплекта pdflib можно использовать для сравнения двух библиотек.

<?php Sradius - 200-
Smargin - 20: Spagecount * 40.
$pdf -= cpdf_open(0):
cpdf_set_creator(Spdf. "pdf_clock.php3");
cpdf_set_title(Spdf. "Analog Clock").
while(Spagecount-- > 0) {
cpdf_page_imt(Spdf. $pagecount+l. 0. 2 *
(Sradius + Smargin). 2 * (Sradius * Smargin). 1.0).
cpdf_set_page_ammation($pdf. 4. 0 5. 0. 0. 0); /* wipe */
cpdf_translate
(Spdf. Sradius + Smargin. Sradius + Smargin):
cpdf_save(Spdf); cpdf_setrgbcolor(Spdf. 0.0. 0.0. 10):
/* minute strokes */ cpdf_setl-mew1dth($pdf. 2.0):
for ($alpha = 0: $alpha < 360: $alpha += 6) {
pdf_rotate($pdf. 60). cpdf_moveto($pdf. Sradius. 0 0).
cpdf_lineto($pdf. $radius-$margin/3. 0.0):
cpdf_stroke($pdf): }
cpdf_restore($pdf): cpdf_save($pdf):
/* 5 minute strokes */ cpdf_setlinewidth($pdf. 3.0):
for (Salpha = 0: $alpha < 360: $alpha += 30) {
cpdf_rotate($pdf. 30.0): cpdf_moveto($pdf. $radius. 0.0):
cpdf_lineto($pdf. $radius-$margin. 0 0):
cpdf_stroke($pdf); } Sltime -= getdatet):
/* draw hour hand */ cpdf_save($pdf):
cpdf_rotate($pdf. -(($ltime['minutes']/60 0)
+ $ltime['hours'] - 3.0) * 30.0): cpdf_moveto
($pdf. -$radius/10. -$radius/20): cpdfjineto
($pdf. $radius/2. 0 0): cpdf_hneto
($pdf. -$radius/10. $radius/20): cpdf_closepath
($pdf): cpdf_filK$pdf): cpdf_restore($pdf):
/* draw minute hand */ cpdf_save($pdf):
cpdf_rotate($pdf. -(($ltime['seconds']/60 0)
+ $ltime['minutes'] - 15.0) * 6.0): cpdf_moveto
($pdf. -$radius/10. -$radius/20). cpdf_lineto
($pdf. Sradius * 0.8. 0.0): cpdf_lineto
($pdf. -$radius/10. $radius/20): cpdf_closepath($pdf).
cpdf_fill($pdf): cpdf_restore($pdf):
/* draw second hand */ cpdf_setrgbcolor($pdf. 1.0. 0.0. 0.0):
cpdf_setlmewidth($pdf. 2): cpdf_save($pdf).
cpdf_rotate($pdf. -((Sltimefseconds'] - 15.0) * 6.0)):
cpdf_moveto($pdf. -$radius/5. 0.0): cpdf_lineto($pdf. Sradius. 0.0):
cpdf_stroke($pdf): cpdf_restore($pdf):
/* draw little circle at center
*/ cpdf_circle($pdf. 0. 0. $radius/30): cpdf_fill($pdf):
cpdf_restore(Spdf); cpdf_finalize_page($pdf. $pagecount+l); }
cpdf_finalize($pdf):
cpdf_save_to_file($pdf."e:\\clock.pdf"); cpdf_close($pdf): ?>

cpdf_global_set_document_limits

Установка ограничения для всех документов

void cpd8f_global_set_document_limits (int maxpages. int maxfonts, int maximages, int raaxannotations. int maxobjects)

Функцию следует вызывать до cpdf_open().

См. также cpdf_open().

cpdf_set_creator

Заполнение поля «создатель документа»

void cpdf_set_creator (string creator)

См. также: cpdf_set_subject(), cpdf_set_title(), cpdf_set_keywords().

cpdf_set_title

Заполнение поля «заголовок документа»

void cpdf_set_title (string title)

См. также: cpdf_set_subject(), cpdf_set_creator(), cpdf_set_keywords().

cpdf_set_subject

Заполнение поля «тема документа»

void cpdf_set subject (string subject)

См. также: cpdf_set_title(), cpdf_set_creator(), cpdf_set_keywords().

cpdf_set_keywords

Заполнение поля «ключевые слова документа»

void cpdf_set_keywords (string keywords)

См. также: cpdf_set_tit!e(), cpdf_set_creator(), cpdf_set_subject().

cpdf_open

Открытие нового документа

int cpdf_open (int compression [, string filename])

Первым аргументом можно указать необходимость сжатия документа (если он не равен 0). Если указывается второй аргумент, то документ будет создаваться в файле, а не в памяти. Имя файла «-» указывает на стандартный поток вывода (это пока не работает с Apache).

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

См. также: cpdf_close(), cpdf_output_buffer(), cpdf_save_to_file().

cpdf_close

Закрытие документа pdf

void cpdf_close (int pdfjJocument)

Эту функцию следует вызывать последней, даже после cpdf_finalize(), cpdf_output_buffer() или cpdf_save_to_file().

См. также cpdf_open().

cpdf_page_init

Начало новой страницы

void cpdf_page_init (int pdf_document, int pagejiumber, int orientation, double height, double width [, double unit])

Параметры новой страницы: page_number — ее номер, orientation — ориентация (0 — вертикальная, 1 — горизонтальная), высота height и ширина width; необязательный аргумент unit указывает разрешение в точках на дюйм (по умолчанию — 72).

См. также cpdf_set_current_page().

cpdf_finalize_page

Завершение указанной страницы

void cpdf_finalize_page (int pdf_document, int page_number) После этого страница не может модифицироваться.

См. также cpdf_page_init().

cpdf_finalize

Завершение документа

void cpdf_fina!ize (int pdf_document)

После этого необходимо вызвать cpdf_close().

См. также cpdf_close().

cpdf_output_buffer

Вывод документа из буфера памяти

void cpdf_output_buffer (int pdf_document)

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

См. также cpdf_open().

cpdf_save_to_file

Запись документа в файл

void cpdf save_to_file (int pdf_document, string filename)

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

См. также: cpdf_output_buffer(), cpdf_open().

cpdf_set_current_page

Установка текущей страницы

void cpdf_set_current_page (int pdf_document, int page number)

Все последующие операции будут проводиться на данной странице. Между страницами можно переключаться до вызова cpdf_fina1ize_ page().

См. также cpdf_finalize_page().

cpdf_begin_text

Начало текстового раздела

void cpdf_begin_text (int pdf_document)

Раздел должен быть завершен функцией cpdf_end_text().

<?php cpdf_begi n_text($pdf);
cpdf_set_font($pdf. 16. "Helvetica". "WinAnsiEncoding"):
cpdf_text($pdf, 100. 100. "Some text"): cpdf_end_text($pdf) ?>

См. также cpdf_end_text().

cpdf_end_text

Завершение текстового раздела

void cpdf_end_text (int pdf_document) Завершает раздел, начатый cpdf_begin_text().

См. также cpdf_begin_text().

cpdf_show

Вывод текста в текущую позицию

void cpdf_show (int pdf_document, string text)

См. также: cpdf_text(), cpdf_begin_text(), cpdf_end_text().

cpdf_show_xy

Вывод текста в указанную позицию

void cpdf_show_xy (int pdfjjoc, string, text, double x, double у [, int mode])

Аргументом mode можно указать используемое разрешение (если указывается 0, то используется разрешение по умолчанию).

Функция идентична cpdf_text() без необязательных аргументов.

См. также cpdf_text().

cpdf_text

Вывод текста с параметрами

void cpdf_text (int pdf_document, string text, double x, double у [, int mode [, double orientation [, int alignmode]]])

Параметр orientation задает вращение строки в градусах, a alignmode — выравнивание текста.

См. документацию ClibPdf относительно возможных значений.

См. также cpdf_show_xy().

cpdf_set_font

Выбор текущего шрифта

void cpdf_set_font (int pdf_doc, string font_name, double size, string encoding)

Выбирает текущий шрифт, его размер и кодировку. В настоящее время поддерживаются только стандартные шрифты postscript. Кодировка может быть указана значениями «MacRomanEncoding», «Mac-ExpertEncoding», «WinAnsiEncoding» и «NULL» (использовать встроенную).

См. также документацию ClibPDF.

cpdf_set_leading

Установка межстрочного расстояния

void cpdf_set leading (int pdf_document, double distance) Используется при выводе текста функцией cpdf_continue_text().

См. также cpdf_continue_text().

cpdf_set_text_rendering

Установка режима вывода текста

void cpdf_set_text_rendering (int pdfjJocument, int mode)

Возможные значения аргумента mode: 0 (текст с заполнением), 1 (контурный текст), 2 (заполненный контурный текст), 3 (невидимый), 4 (заполненный текст, прикрепленный к пути), 5 (контурный текст, прикрепленный к пути), 6 (заполненный контурный текст, прикрепленный к пути), 7 (текст, прикрепленный к пути).

cpdf_set_horiz_scaling

Установка горизонтального разрешения

void cpdf_set_horiz_scaling (int pdfjJocument, double scale)

cpdf_set_text_rise

Установка подъема текста

void cpdf_set_text_rise (int pdf_document, double value)

cpdf_set_text_matrix

Установка матрицы преобразования шрифта

void cpdf_set_text_matrix (int pdfjJocument, array matrix)

cpdf_set_text_pos

Установка позиции текста

void cpdf_set_text_pos (int pdfjJocument, double x, double у [, int mode])

Устанавливает позицию вывода текста последующим вызовом cpdf_ show().

Параметром mode можно указать разрешение.

См. также: cpdf_show(), cpdf_text().

cpdf_set_char_spacing

Установка межсимвольного интервала

void cpdf_set_char_spacing (int pdf_document, double space)

См. также: cpdf_set_word_spacing(), cpdf_set_leading().

cpdf_set_word_spacing

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

void cpdf_set_word_spacing (int pdf_document, double space)

См. также: cpdf_set_char_spacing(), cpdf_set_leading().

cpdf_continue_text

Вывод текста со следующей строки

void cpdf_continue_text (int pdf_document, string text)

См. также: cpdf_show_xy(), cpdf_text(), cpdf_set_leading(), cpdf_set_text_ pos().

cpdf_stringwidth

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

double cpdf_stringwidth (int pdf_document, string text)

См. также cpdf_set_font().

cpdf_save

Сохранение текущих установок

void cpdf_save (int pdfjjocument)

См. также cpdf_restore().

cpdf_restore

Восстановление ранее сохраненных установок

void cpdf restore (int pdf document)

Восстанавливает установки, сохраненные cpdf_save().

<?php cpdf_save($pdf);
// всякие вращения и трансформации ...
cpdf_restore($pdf) ?>

См. также cpdf_save().

cpdf_translate

Установка начала системы координат

void cpdf_translate (int pdf_doc. double x, double у [. int mode])

cpdf_scale

Установка масштабирования

void cpdf_scale (int pdf_document, double x-scale, double-scale)

cpdf_rotate

Установка угла вращения в градусах

void cpdfj-otate (int pdf_document, double angle)

cpdf_setflat

Установка равномерности

void cpdf_setflat (int pdfjlocument. double value)

Возможные значения параметра — от 0 до 100.

cpdf_setlinejoin

Установка параметра linejoin

void cpdf_setlinejoin (int pdf_document, long value)

Возможные значения параметра — от 0 до 2 (0 = miter, 1 = round, 2 = bevel).

cpdf_setlinecap

Установка параметра linecap

void cpdf_setlinecap (int pdf_document, int value)

Возможные значения параметра — от 0 до 2 (0 = butt end, I = round, 2 = projecting square).

cpdf_setmiterlimit

Установка параметра miter limit

void cpdf_setmiterlimit (int pdf_document, double value)

Возможные значения параметра — 1 и более.

cpdf_setlinewidth

Установка ширины строк

void cpdf_setlinewidth (int pdf_document, double width)

cpdf_setdash

Установка вида штриховки

void cpdf_setdash (int pdf_document, double white, double black)

Устанавливает размер белых и черных полос. Если оба аргумента равны 0, то линия будет непрерывной.

cpdf_newpath

Начало нового пути

void cpdf_newpath (int pdfjjocument)

cpdf_moveto

Установка текущей точки

void cpdfjraveto (int pdf_document, double x. double у [, int mode])

cpdf_rmoveto

Смещение текущей точки

void cpdf_rmoveto (int pdf_doc, double x, double у [, int mode])

См. также cpdf_moveto().

cpdf_curveto

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

void cpdf_curveto (int pdf_document. double xl, double yl. double x2, double y2, double x3, double y3 [, int mode])

Чертит кривую Безье от текущей точки до (хЗ.уЗ), используя точки (xl.yl) и (х2,у2) как ориентирующие.

См. также: cpdf_moveto(), cpdf_rmoveto(), cpdf_rlineto(), cpdf_lineto().

cpdf_lineto

Черчение линии

void cpdf_lineto (int pdf_document, double x, double у [, int mode])

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

См. также: cpdf_moveto(), cpdf_rmoveto(), cpdf_curveto().

cpdf_rlineto

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

void cpdf_rlineto (int pdf_document. double x, double у [, int mode]) Координаты (х,у) указываются относительно текущей точки.

См. также: cpdf_moveto(), cpdf_rmoveto(), cpdf_curveto().

cpdf_circle

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

void cpdf_circle (int pdf_document, double x, double y, double radius [, int mode])

См. также cpdf_arc().

cpdf_arc

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

void cpdf_arc (int pdf_document, double x-соог, double y-coor. double radius, double start, double end [, int mode])

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

См. также cpdf_circle().

cpdf_rect

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

void cpdf_rect (int pdf_document, double x, double y, double width, double height [, int mode])

Левый нижний угол задается (х,у); высота и ширина — height, width.

cpdf_closepath

Завершение текущего пути

void cpdf_closepath (int pdfjiocument)

cpdf_stroke

Заштриховывание пути

void cpdf_stroke (int pdfjiocument)

См. также: cpdf_closepath(), cpdf_closepath_stroke().

cpdf_closepath_stroke

Черчение и закрытие пути

void cpdf_closepath_stroke (int pdf_document)

Это комбинация cpdf_closepath() и cpdf_stroke().

См. также: cpdf_closepath(), cpdf_stroke().

cpdf_fill

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

void cpdfjfin (int pdf_document)

См. также: cpdf closepath(), cpdf_stroke(), cpdf_setgray_fill(), cpdf_ setgray(), cpdf_setrgbcolor_fill(), cpdf_setrgbcolor().

cpdf_fill_ stroke

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

void cpdf_fill_stroke (int pdf_document)

См. также: cpdf_closepath(), cpdf_stroke(), cpdf_fill(), cpdf_setgray_ fill(), cpdf_setgray(), cpdf_setrgbcolor_fill(), cpdf_setrgbcolor().

cpdf_closepath_fill_stroke

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

void cpdf_closepath_fill_stroke (int pdf_document)

См. также: cpdf_closepath(). cpdf_stroke(), cpdf_fill(), cpdf_setgray_ fill(), cpdf_setgray(), cpdf_setrgbcolor_fill(), cpdf_setrgbcolor().

cpdf_clip

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

void cpdf clip (int pdfjiocument)

pdf_setgray_fill

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

old cpdf_setgray_fill (int pdf_document, double value)

См. также cpdf_setrgbcol or_fill ().

pdf_setgray_stroke

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

poid cpdf_setgray_stroke (int pdf_document, double gray value)

См. также cpdf_setrgbcolor_stroke().

pdf_setgray

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

old cpdf_setgray (int pdf_document, double gray value)

См. также: cpdf_setrgbcolor_stroke(), cpdf setrgbcolor fill().

pdf_setrgbcolor_fill

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

oid cpdf_setrgbcolor_fill (int pdf_doc, double red, double green, double blue)

См. также: cpdf_setrgbcolor_stroke(), cpdf_setrgbcolor().

pdf_setrgbcolor_stroke

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

oid cpdf_setrgbcolor_stroke (int pdf_document, double red value, double green value, double blue value)

См. также: cpdf_setrgbcolor_fill(), cpdf_setrgbcolor().

pdf_setrgbcolor

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

oid cpdf_setrgbcolor (int pdf_document, double red_value, double green_value, double blue_value)

См. также: cpdf_setrgbcolor_stroke(), cpdf_setrgbcolor_fill().

pdf_add_outline

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

oid cpdf_add_outline (int pdf_document, string text)

Название закладки определяется аргументом text.

?php :pdf = cpdf_open(0).
3dfj>agejmt($cpdf. 1. 0. 595. 842):
3df_add_outline($cpdf. 0. 0. 0. 1. "Page 1"):
// ... /' some drawing // ... cpdf_f i nalт ze($cpdf):
Header("Content-type: application/pdf"):
cpdf_output_buf*?er($cpdf):
cpdf_close($cpdf). ?>

cpdf_set_page_animation

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

void cpdf_set_page_animation (int pdf_document, int transition. double duration)

Аргумент transition определяет метод перехода, a duration — его длительность в секундах.

cpdf_Import_jpeg

Открытие рисунка JPEG

int cpdfjmportjpeg (int pdf_doc. string filename, double x, double y. double angle, double width, double height. double x-scale, double y-scale [, int mode])

Открывает рисунок из файла filename и размещает его в позиции (х,у) на текущей странице. Для рисунка можно указать угол поворота в градусах и масштабирование.

См. также cpdf_placejnlinejmage().

cpdf_place_inlinejmage

Размещение сгенерированного рисунка на странице

void cpdf_plасеJnlineJmage (int pdf_document, int image, double x, double y, double angle, double width, double height [, int mode])

Внедряет рисунок, созданный графическими функциями PHP.

См. также cpdfJmportJpeg().

cpdf_add_annotation

Добавление примечания

void cpdf_add_annotation (int pdf_document, double Их, double lly, double urx, double ury. string title, string content [, int mode])

Примечание располагается в левом нижнем углу (Их, Ну), верхний правый угол — (urx. ury).

Forms Data Format

Функции форматирования данных форм (Forms Data Format, PDF) предназначены для работы с формами PDF-документов. Для предварительной информации ознакомьтесь с документом http://partners. adobe.com/asn/developer/acrosdk/forms.html.

Основная идея FDF сходна с формами HTML. Отличие состоит в передаче (отправке) данных, поскольку передаются как сами данные (FDF), так и документ формы (PDF). В обычном случае PDF-форма с данными создается на основе PDF-документа, используемого как шаблон формы. То есть сначала создается FDF-документ (fdf_create()) и устанавливаются значения для каждого ноля ввода (fdf_set_ value()), а затем ассоциируется форма PDF (fdf_set_file()). После этого происходит отправка PDF-формы браузеру (с заголовком: MiraeType appllcation/vnd.fdf). Надстройка браузера (Acrobat reader plugin) распознает MimeType и загружает ассоциированную PDF-форму, заполняя ее данными PDF-документа.

Следующий пример иллюстрирует обработку данных формы.

<?php // Save the FDF data into a temp file
$fdffp = fopenC'test.fdf". "w"):
fwnte($fdffp. $HTTP_FDF_DATA. strlen($HTTP_FDF_DATA));
fclose($fdffp);
// Open temp file and evaluate data
// pdf form содержит значения полей:
date, comment. // publisher, и checkbox: show_publisner.
$fdf = fdf_open("test.fdf"): $date = fdf_get_value($fdf. "date").
echo "The date field has the value '<B>$date</B>'<BR>":
Scomment = fdf_get_value($fdf, "comment");
echo "The comment field has the value ''e>$comment</B>
'<BR>";
if(fdf_get_value($fdf. "show_publisher")
== "On") { Spublisher = fdf_get_value($fdf. "publisher"):
echo "The publisher field has the value '<B>$publisher</B>
'<BR>": } else
echo "Publisher shall not be shown.<BR>":
fdf_close($fdf); ?>

fdf_open

Открытие документа PDF

int fdf_open (string filename)

Открываемый файл должен содержать данные, возвращенные формой PDF. В настоящее время файл необходимо создавать вручную, используя fopen() и записывая данные HTTP_FDF_DATA функцией fwrite().

<?php // Save the PDF data into a temp file
Sfdffp = fopen("test.fdf". "w"):
fwnte($fdffp, $HTTP_FDF_DATA. strlen($HTTP_FDF_DATA)):
fclose($fdffp):
// Open temp file and evaluate data $fdf = fdf_open("test fdf").
fdf_close($fdf): ?>

См. также fdf_close().

fdf_close

Закрытие документа FDF

boolean fdf_close (int fdf_document)

См. также fdf_open().

fdf_create

Создание нового документа FDF

int fdf_create (void )

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

<?рhр Soutfdf = fdf_create();
fdf_set_value($outfdf. "volume". Svolume. 0):
fdf set_file($outfdf. "http /testfdf/resultlabel.pdf"):
fdf_save($outfdf. "outtest.fdf").
fdf_close($outfdf):
Header("Content-type: application/vnd.fdf");
$fp = fopen("outtest fdf". "r"):
fpassthru(Sfp);
unlinkC'outtest.fdf"): ?>

См. также: fdf_close(), fdf_save(), fdf_open().

fdf_save

Сохранение документа PDF

int fdf_save (string filename)

Если имя файла указано как «.», то документ будет выводиться на стандартный поток вывода (отсылаться браузеру). Это не действует, если РНР является модулем apache (для вывода используйте fpassthru()).

См. также: fdf_close() и пример в fdf_create().

fdf_get_value

Получение значения поля

string fdf_get_value (int fdfjJocument, string fieldname)

См. также fdf_set_value().

fdf_set_value

Установка значения поля

bool fdf_set_value (int fdf_document, string fieldname, string value, int isName)

Последний аргумент определяет, будет ли значение поля преобразовываться в PDF Name (isName = 1) или в PDF String (isName = 0).

См. также fdf get value().

fdf_next_field_name

Получение имени следующего поля

string fdf_next_field_name (int fdf_document, string fieldname)

Возвращает имя первого поля (если аргумент fieldname имеет значение NULL) или имя поля, следующего за полем fieldname.

См. также: fdf_set_field(). fdf_get_field().

fdf_set_ap

Установка отображения поля

bool fdf_set_ap (int fdf_document. string field_name, int face, string filename, int page_number)

Устанавливается значение ключа АР. Возможные значения аргумента face: l=FDFNormalAP, 2=FDFRolloverAP, 3=FDFDownAP.

fdf_set_status

Установка ключа STATUS

bool fdf_set_status (int fdf_document, string status)

См. также fdf_get_status().

fdf_get_status

Получение значения ключа STATUS

string fdf_get_status (int fdf_document)

См. также fdf_set_status().

fdf_set_file

Назначение документа формы, установка ключа /F

boo! fdf_set_file (int fdf_document, string filename)

Ключ /F — это ссылка на документ PDF, который заполняется данными, обычно задаваемый URL (например: http:/testfdf/resuttlabel.pdf).

См. также: fdf_get_file() и пример в fdf_create().

fdf_get_file

Получение значения ключа /F

string fdf_get_file (int fdf_document)

См. также fdf_set_file().

fdf_set_flags

Установка флага поля

boo! fdf_set_flags (int fdf_doc, string fieldname, int whichFlags, int newFlags)

См. также fdf_set_opt().

fdf_set_opt

Установка параметра поля

bool fdf_set_opt (int fdf_document. string fieldname, int element, string strl, string str2)

См. также fdf_set_flags().

fdf_set_submit_form_action

Установка действия javascript для формы

bool fdf_set_submit_form_action (int fdf_document, string fieldname, int trigger, string script, int flags)

См. также fdf_set_javascript_action().

fdf_setjavascript_action

Установка действия javascript для поля

bool fdf_set_javascript_action (int fdf_document, string fieldname, int trigger, string script)

См. также fdf_set_submit_form_action().


Комплексная обработка данных

  • WDDX
  • DOM XML
  • XML-интерпретация
  • XSLT

WDDX

Данная группа функций позволяет работать с данными в формате WDDX (http://www.wddx.org/). WDDX (Web Distributed Data Exchange) — это технология для «Распределенного обмена данными в web». Этот формат (производный от XML) предназначен для переноса данных из одной системы в другую (например, обмена данными между ASP, Perl, ColdFusion и PHP). Он позволяет сохранять не только значения, но и типы, и структуру сложных данных. Поэтому данные WDDX, сериализированные в одной системе, могут использоваться в другой. Тип данных определяется автоматически и приводится к одному из следующих:

  • null — пустые значения;
  • bool — булевские значения;
  • number — числа (целые и дробные не различаются);
  • string — строки;
  • dateTime — значения даты и времени;
  • array — нумерованные массивы;
  • struct — ассоциативные массивы;
  • recordset — наборы записей (подобие таблиц);
  • binary — двоичные данные (в кодировке Base64).

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

<?php $pi =    3.1415926.
Spacketjd =
          wddx_packet_start("Комментарий пакета"):
wddx_add_vars($packet_id. "pi");
/* допустим Scities получено из БД
*/ Scities = arrayt"Austin". "Seattle");
wddx_add_vars($packet_id, "cities");
print Spacket =
        wddx_packet_end($packet_id); ?>  < /FONT

         >

Пример выведет:

<wddxPacket version='1.0'><header comnent='Комментарий пакета'/>
<data><struct><var name='pi'><number>3.1415926</number>
</var> <var name='cities'xarra.y 1 ength='2' >
<string>Austin</string<str1ng>Seattle</stnng>
</array> </var></btruct></data></wddxPacket>

wddx_serialize_value

Занесение одного значения в пакет WDDX

string wddx_serialize_value (mixed var [, string comment])

Создает пакет WDDX из значения одной переменной var, добавляя в заголовок пакета комментарий comment, и возвращает полученный пакет.

<?php print wddx_senalize_valueC"WDDX
packet example". "PHP packet"); ?>

Пример выведет:

<wddxPacket version='1.0'><header comment''PHP packet'/>
<data> <stnng>WDDX packet example</stnng></data>
</wddxPacket>

wddx_serialize_vars

Создание пакета WDDX из нескольких значений

string wddx_serialize_vars (mixed varjiame [. mixed ...])

<?php $a =    1; $b - 5.5; $c = arrayC'blue". "orange",
        "violet"):
$d = "colors";
        $clvars =    arrayC'c". "d")-.
print wddx_serialize_vars("a". "b", Sclvars); ?>

Пример выведет:

<wddxPacket version=   '1.0'><header/><data><st.ruct>
<va г name='a'><number>l</number></va r>
<vdr name='b'><number>5 5</number></var>
<var name='c'><array length='3'><string>blue
</string> <string>orange</string><stnng>violet</stnng>
</array></var> <var name='d'><stnng>colors</string>
</var>
      </struct></<jata></wddxPacket>

wddx_packet_start

Начало нового пакета WDDX

int wddx_packet_start ([string comment])

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

wddx_packet_end

Завершение пакета WDDX

string wddx_packet_end (int packetjid)

Возвращает содержимое пакета.

wddx_add_vars

Добавление следующей переменной в пакет WDDX

wddx_add_vars (int packet_id, mixed name_var [, mixed ...])

Используется для последовательного добавления данных в пакет packet_id, созданный функцией wddx_packet_start().

wddx_deserialize

Распаковка пакета WDDX

mixed wddx_deseria1ize (string packet)

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

DOM XML

Функции доступны при компиляции с параметром —with-dom= [DIR]при использовании библиотеки GNOME xml (не ниже libxml-2.0.0). < /FONT>

Модуль определяет следующие константы (типы элементов XML):

  1. XML_ELEMENT_NODE;
  2. XML_ATTRIBUTE_NODE;
  3. XML_TEXT_NOOE;
  4. XML_CDATA_SECTION_NODE;
  5. XML_ENTITY_REF_NODE;
  6. XMLJNTITYJODE;
  7. XML_PI_NODE;
  8. XML_COMMENT_NODE;
  9. XiCJDOCUMENTJODE;
  10. XML_DOCUMENT_TYPE_NODE;
  11. XML_DOCUMENT_FRA6_NODE;
  12. XMLJOTATIONJODE;
  13. XML_GLOBAL_NAMESPACE;
  14. XML_LOCAL_NAMESPACE.

Модуль использует следующие классы для работы с интерфейсом DOM документов XML: DomDocument, DomNode, Dtd, DomAttribute, Dom-Namespace, XpathContext, XpathObject.

Рекомендуется использовать объектный интерфейс, но возможно использование и функции с префиксом domxml_, как аналога методов DOM объектов.

Класс DomDocument:

  • метод root() - аналог domxml_root();
  • метод children() — аналог domxml_children();
  • метод add_root() — аналог domxm1_add_root();
  • метод dtd() — аналог domxml_intdtd();
  • метод dumpmem() — аналог domxmU);
  • метод xpath_init() — аналог xpath_init();
  • метод xpath_new_context() — аналог xpath_new_context();
  • метод xptr_new_context() — аналог xptr_new_context();
  • свойство doc — сам объект класса DomDocument;
  • свойство name — наименование документа;
  • свойство url — адрес документа;
  • свойство version — версия XML;
  • свойство encoding — название кодировки;
  • свойство standalone — 1, если файл одиночный;
  • свойство type — см. список констант;
  • свойство compression — 1, если файл сжатый;
  • свойство charset — номер кодировки.
Класс DomNode:
  • метод lastchild() - аналог domxmljast_child{);
  • метод children() — аналог domxmljrhildren();
  • метод parent() — аналог domxml_parent();
  • метод new_child() — аналог domxml_new_child();
  • метод get_attribute() — аналог domxml_get_attribute();
  • метод set_attribute() — аналог domxml_set_attribute();
  • метод attributes() — аналог domxml_attributes();
  • метод node() — аналог domxml_node();
  • метод set_content() — аналог domxml_set_contentО;
  • свойство node — сам обьект класса DomNode;
  • свойство type — см. список констант;
  • свойство name — строка, содержащая имя тега;
  • свойство content — строка содержимого тега.

 <?php $doc - new_xmldoc("l 0"); // DomDocument
Sroot =
          $doc->add__root;"HTML"). // DomNode
Shead - $root->new_child("HFAD". "");
$head->new_child("TITLE". "Hier der Titel"):
echo $doc->dumpmem(); ?>

Сценарий выводит следующее:

<?xml version="l 0"?>
<HTML><HEAD><TITLE>Hier der Titel
</TITLE></HEAD></HTML>

new_xmldoc

Создание нового документа DOM XML

object new_xmldoc (string version)

Возвращает объект класса DomDocument. Синоним функции domxml_new_xmldoc().

xmldoc

Создание DOM-объекта из документа XML

object xmldoc (string strXML)

Интерпретирует строку, содержащую документ XML, и возвращает объект класса DomDocument.

xmldocfile

Создание DOM-объекта из файла XML

object xmldocfile (string XMLfilename)

Интерпретирует файл, содержащий документ XML, и возвращает объект класса DomDocument.

xmltree

Создание дерева объектов PHP из документа XML

object xmltree (string strXML)

$sXML='<?xml version="l 0"?>
<HTML><HEAD Language="ge">
<TITLE>Title OF DOC</TITLE></HEAD></HTML>':
var_dump(xmltree($sXMD);

Будет выведено следующее:

 object(0om0ocument)(5) {
["version"]=> stnng(3) "1.0" ["standalone"]=>
        int(-l)
["type"]=> int(9) XML_DOCUMENT_NODE
["children"]=> array(l) {
[0]=> &object(DomNode)(5) { ["name"]=>
stnng(4) "HTML" ["type"]=> int(l) ["content"]=>
string(12) "Title OF DOC" ["node"]=>
resource(6) of type (domxml node) ["children"]=>array(D {
[0]=> object(DomNode)(6) {
["name"]=> stnng(4) "HEAD" ["type"]=>
int(l) ["content"]=> stnng(12) "Title OF DOC" ["node"]=>
resource(7) of type (domxml node) t"attnbutes"]=> array(l)
        {
[0]=> object(DomAttnbute)(2) {
["name"]=> string(8) "Language" ["children"]=>array(D
        {
[0]=> object(DomNode)(4) {
["name"]=> stnng(4) "text" ["type"]=>
        int(3) ["content"]=>
stnng(2) "ge" ["node"]=>resource(8) of type
(domxml node) ["children"]=> array(l) {
[0]=> object(DomNode)(5) {
["name"]=> stnng(5) "TITLE" ["type"]=>
        int(l)
["content"]=> stnng(12) "Title OF DOC"
["node">> resourceO) of type (domxml node)
["children"]=> array(l) {
[0]=> object(DomNode)(4) { ["name"]=>
stnng(4) "text" C"type"]=> int(3) ["content"]=>
string(12) "Title OF DOC" ["node"]» resource(lO)
of type (domxml node) ["root"]=>&object(DomNode)(5) {
["name"]=> stnng(4) "HTML"["type"]=>
        int(l)
["content"]=> stnng(12) "Title OF DOC"
["node"]=> resource(6) of type (domxml node)
["children"]=> array(l) { tO]=> object(DomNode)(6) {
["name"]=> stnng(4) "HEAD" ["type"]=>
        int(l)
["content"]=> string(12) "Title OF DOC"
["node"]=> resource(7) of type (domxml node)
["attributes"]=> array(l) { [0]=> object(DomAttnbute)(2)
        {
["name"]=> string(8) "Language" ["children"]=>array(D
        {
[0]=> object(DomNode)(4) {
["name"]=> stnng(4) "text" ["type"]=>int(3)
["content"]=> string(2) "ge" ["node"]=>
resource(8) of type (domxml node) ["children"]=>array(D {
[0]=> object(DomNode) (5) {
["name"]=> string(5) "TITLE" ["type"]=>
        int(l)
["content"]=> stnng(12) "Title OF DOC" ["node"]=>
resource(9) of type (domxml node) ["children"]=> array(l)
        {
[0]=? object(DomNode)(4) { ["name"]=> stnng(4)
"text" C"type"]=> int(3) ["content"]=>
        stnng(12)
"Title OF DOC" ["node"]=> resource(lO)
of type (domxml node)

Интерфейс DOM

domxml_root

Получение корневого элемента документа XML

object domxml_root (resource DomDocument)

Возвращает объект класса DomNode.

if($dom = xmldoc($xmlstr)) $root = $dom->root(): < /FONT >

domxml_add_root

Создание корневого элемента DOM XML

resource domxml_add_root (resource DomDocument. string name)

Возвращает объект класса DomNode, созданный внутри объекта DomDocument.

domxml_dumpmem

Создание XML документа из объекта DOM

string domxml_dumpmem (resource DomDocument)

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

domxml_children

Получение массива вложенных объектов раздела

array domxml_crri1dren (object node)

Возвращает массив дочерних объектов объекта класса DomNode.

$doc =   new_xmldoc("1.0"): // DomDocument
$root =
          $doc->add_root("ML").
// DomNode <ML></ML> $root->new_child("Hl". "1212");
// <H1>1212</H1>
$p=$root->new_child("Pp". "Tttt tt");
// <Pp>Tttt tt</Pp> $p->set_attnbute("Id"."8")
// <Pp Id="8"> echo $doc->dumpmem();
$d=domxml_children($doc->root()); // Sroot. <ML></ML>
var_dump($d);
$d=domxml_children($d[l]). // <Pp Id="8">Tttt tt</Pp>
varjJump($d); // "Tttt tt" $d=domxml_children($d[0]);
// = bool(FALSE)
        <  /FONT

        >

Пример выводит следующее:

 <?xml version="l 0"?> <ML>
<Hl>1212</Hl><Pp Id="8">Tttt tt</Pp></ML>
array(2) { [0]=> object(DomNode)(4) {
["name"]=> stnng(2) "HI"
["content"]=> stnng(4) "1212"
t"node"]=> resource(6) of type (domxml node)
["type"]=> int(l) )
[!]=> object(DomNode)(4) { ["name"]=> stnng(2) "Pp"
["content"]=> stnng(7) "Tttt tt"
["node"]=> resource(7) of type (domxml node)
["type"]=> int(l) } }
arr-ay(l) { [0]=> object(DomNode)(4) {
["name"]=> stnng(4) "text" ["content"]=>
        stnng(7) "Tttt tt"
["node"]=> resource(8)
of type (domxml node) ["type"]-> int(3) } }

domxml_new_child

Создание секции тега

resource domxml_new_chiId (string name, string content)

Возвращает объект класса DomNode, созданный внутри объекта Oom-Node.

domxml_ attributes

Получение атрибутов узла

array domxml_attributes (resource node)

Возвращает объект класса DomDocuraent.

$doc =   new_xmldoc("1.0"):
// OomDocument Sroot =
            $doc->add_root("ML");
// DomNode $h=$root->new_child("Hl". "1212"):
Sp-Sroot^newj^ildC'Pp'1! "Tttt tt"): $p->
set_attnbute("Id"."8"). $p->set_attnbute("Bold"."").
echo $doc->dumpmem(); var_dump($p->attributes()):
var_dump($h->attnbutes()): //
      var_dump($p->getattr("Id")):

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

 <?xml version="1.0"?> <ML><Hl>1212</Hl>
<Pp Id="8" Bold="">Tttt tt</Pp></ML>
array(2) { [0]=> object(DomAttnbute)(2)
{ ["name"]=> string(2) "Id" ["children"]=>
        array(l) {
[0]=> object(DomNode)(4) { ["name"]=> stnng(4)
"text" ["type"]=> int(3) ["content"J=>
        stnng(l)
"8" ["node"]=> resource(S) of type (domxml node)
[!]=> object(DomAttnbute)d) {
["name"]=> stnng(4) "Bold" } }
booHFALSE) stnng(I) "8"

domxml_getattr

Получение атрибута узла

object domxml_getattr (resource node, string name)

Возвращает значение атрибута узла. В документации функция почему-то значится под именем domxml_get_attribute(). См. пример выше.

domxml_set_attribute

Установка атрибута узла

object domxml_set_attribute (resource node, string name, string value)

См. пример выше. Имена атрибутов учитывают регистр символов.

XML-интерпретация

XML (extensible Markup Language) — формат обмена структурированными данными в пространстве web; стандарт, определенный Консорциумом World Wide Web (W3C). Информацию о XML и связанных технологиях можно получить по адресу http://www.w3.org/XML/. Для понимания материала главы необходимо разбираться в синтаксисе XML

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

  1. Использование объектной модели документа (DOM), которая удобна для работы с документом в целом, но расходует больше ресурсов.
  2. Интерпретация документа на основе модели событий, удобная при однократном просмотре документа и менее требовательная к ресурсам (что важно при работе с объемными документами).

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

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

Заметьте, что интерпретатор предназначен для обработки документа, но не для его проверки; документ должен соответствовать грамматике XML (и правилам DTD).

В РНР интерпретатор XML использует библиотеку expat (ее также использует Apache-1.3.9 и последующие версии), см.: http://www. jclark.com/xml/. Скомпилировать РНР с поддержкой expat можно, используя параметр --with-xml.

Для документов поддерживаются кодировки US-ASCII, ISO-8859-1 (по умолчанию), UTF-8 (UTF-16 не поддерживается). Разделяют исходную и целевую кодировки. Исходная кодировка — это набор символов документа (ее можно изменять в процессе интерпретации). (Внутри РНР символы всегда хранятся в кодировке UTF-8, позволяется использовать символы размером до 21 бита.) В функции-обработчики данные передаются в целевой кодировке (для всех типов данных). При нахождении в документе-символа, не соответствующего исходной кодировке, выдается ошибка; а если символ не может быть представлен в целевой кодировке, то он заменяется на знак вопроса.

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

xml__parser_set_option($xml_parser. XML_OPTION_CASE_FOLDING. 0);

Для интерпретатора можно определить следующие виды функций-обработчиков:

  • xml_set_element_handler() — обработчики начальных и конечных тегов;
  • xml_set_character_data_handler() — текст между тегами (с учетом пробелов);
  • xml set_processing_instruction_handler() — инструкции обработки (например, <?php ?> и подобные им; инструкция <?xml ?> зарезервирована);
  • xml_set__default_handler() — обработчик по умолчанию, используемый при невозможности использования иного обработчика;
  • xm"l_set_unparsed_entity_decl_handler() — обработчик необрабатываемых (NDATA) данных;
  • xml_set_notation_decljiandler() — обработчик нотаций;
  • xml_set_external_entity_ref_handler() — обработчик внешних ссылок.

Коды ошибок

Модулем интерпретатора XML определяются следующие константы кодов ошибок (возвращаемые функцией xml_parse()):

  • XML_ERROR_NONE;
  • XML_ERROR_NO_MEMORY;
  • XML_ERROR_SYNTAX;
  • XML ERRORJO ELEMENTS;
  • XML_ERROR_INVALIDJOKEN;
  • XML_ERROR_UNCLOSED_TOKEN;
  • XML_ERROR_PARTIAL_CHAR;
  • XMLJRRORJAG MISMATCH;
  • XML_ERROR_DUPLICATE_ATTRIBUTE;
  • XML_ERROR_JUNK_AFTER_DOC_ELEMENT;
  • XML_ERROR_PARAM_ENTITY_REF;
  • XML_ERROR_UNDEFINED_ENTITY;
  • XML_ERROR_RECURSIVE_ENTITY_REF;
  • XMLJRROR_ASYNC_ENTITY;
  • XML_ERROR_BAD_CHAR_REF;
  • XML_ERROR_BINARY_ENTITY_REF;
  • XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF;
  • XML_ERROR_MISPLACED_XML_PI;
  • XMLJRRORJJNKNOWN ENCODING;
  • XML_ERRORJNCORRECT_ENCODING;
  • XML_ERROR_UNCLOSED_CDATA_SECTION;
  • XML_ERROR_EXTERNAL_ENTITY_HANDLING.

Примеры

Следующие примеры демонстрируют возможности интерпретации документов XML.

Распечатка структуры XML документа

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

Sfile =   "data.xml": Sdeptti = аггау()
function startElement($parser. $name. Sattrs)
{ global Sdepth:
for ($1 =
           0. $1 < $depth[$parser]; $i++) { print "". }
print "$name\n": $depth[$parser]++; }
function endElement($parscr. $name)
{ global $depth- $depth[$parser]--; }
$xml_parser = xml_parser_create().
xml__set_element_nandler
($xml_parser. "startElement", "endElement"):
if (!($fp = fopen($file. "r"») {
dieC'could not open XML input")
while «data = fread($fp. 4096)) {
ll(!xml_parse($xml_parser, $data. feof($fp)))
{ die(sprintf("XML error: Xs at line id".
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_l ine__number($xml_parser)));
xml_parser_free($xml на-se"):

Преобразование тегов XML в HTML

$file = "data xml '. $jndp_array = arrayt
"BOLD" > "B". "EMPHASIS" => "I".
"LITERAL" => "TT' );
function startElement($parset . $пате. Sattrs)
{ global $map_array; if (ShtTiltag = $map_array[$namej)
{ print "<$htmltag>'. function endElanenttSparser. $namp)
{ global $mao_array. if (Shtmltag - $map_array[$name]) (
print "</$htmltag>"; } } function characterData(Sparser. $data) {
print Sdata: } $xml_parser = xml_parser_create();
// отключить чувствительность к регистру
xml_parser_set_option
($xml_parser. XML_OPTION_CASE_FOLDING. TRUE):
xml_set_element_handler
($xml_parser. "startElement". "endElement");
xml_set_character_data_handler
($xml_parser. "characterData");
if (!($fp = fopen($file. "r")))
{ dieC'could not open XML input"); } while (Sdata = fread(Sfp. 4096)) {
if (!xml_parse($xml_parser. Sdata. feof($fp)))
{ die(spnntf("XML error: £s at line %u".
xml_error_string(xml_get_error_code
(Sxml_parser)). xml_get_current_line_number($xml_parser))): }
} xml_parser_free($xml_parser).

Обработка специальных конструкций XML

Пример демонстрирует обработку подключенных внешних файлов и инструкций обработки. Использует при выводе разметку HTML.

$file = "xmltest.xml"; function trustedFile(Sflle) {
// исполнять код можно только в
собственных файлах if (!eregi(""([a-z]+)://". Sfile)
&& fileowner(Sfile) == getmyuid()) ( return TRUE; }
return FALSE. }
function startElement(Sparser. $name. Sattribs) {
print "&lt;<font color=\"#OOOOcc\">Sname</font>"
: if (sizeof(Sattnbs)) { while (list(Sk. $v) = each(Sattnbs))
{ print " <font color=\"#009900\">
$k</font>=\"<font color=\"#990000\">$v</font>\"": } }
print "&gt;": }function endElement(Sparser. Sname) {
print "&lt;/<font color=\"#0000cc\">$name</font>&gt;": }
function characterData(Sparser. $data)
{ print "<b>Sdata</b>"; }
function PIHandler($parser. Starget. $data)
{ switch (strtolower(Starget)) { case "php":
global $parser_file.
// Проверим допустимо ли выпрямить код PHP из документа
// или ограничиться его простым отображением
if (trustedFile($parser_file[Sparser]))
eval($data). else pnntfC'Kofl PHP: <i>fc</i>".
htmlspecialchars(Sdata)): break; } }
function defaultHandler($parser, Sdata) {
if (substrtSdata, 0. 1) == "&" && substr(Sdata. -1. 1)
== ".") { pnntf ('<font color="#aaOOaa">Us</font>'.
html sped a lchars (Sdata)): } else {
printf('<font size="-l">£s</font>'.
htmlspecialchars(Sdata)); } }
function externalEntityRefHandler
(Sparser, SopenEntityNames.
$base. Ssystemld. Spublicld) { if (Ssystemld) {
if (!list($parser. Sfp) = new_xml_parser(Ssystemld)) {
printf("Необрабатываемая секция %s в позиции
Zs\n". SopenEntityNames. Ssystemld);
return FALSE; } while (Sdata = fread($fp. 4096)) {
if (!xml_parse(Sparser. Sdata. feof(Sfp))) {
pnntfC'XML error: Is в стороке %d '%s'
\n". xml_error_string(xml_get_error_code($parser))
. xml_get_currentline_number($parser).
$openEntityNames): xml_parser_free($parser);
return FALSE: } }
xml_parser_free(Sparser). return TRUE; }
return FALSE: }
function new_xml_parser($file)
{ global $parser_file:
$xml_parser = xml_parser_create():
xml_parser_set_option
($xml_parser. XML_OPTION_CASE_FOLDING. 1):
xml_set_element_handler
($xml_parser. "startElement". "endElement"):
xml_set_character_datajiandler
($xml_parser. "characterOata");
xml_set_processing_instruction_handler($xml_parser.
"PIHandler"): xml_set_default_handler
($xml_parser. "defaultHandler"):
xml_set_external_entity_ref_handler
($xml_parser, "externalEntityRefHandler"):
if (!($fp = @fopen($file. "r"))) { return FALSE. }
if (!is_array($parser_file)) { settype($parser_file, "array"); }
Sparser_file[$xml_parser] =
$file. return array($xml_parser. $fp);}
//----------------------.......
if (!(list($xml_parser. $fp) =
new_xml_parser($file))) { dieC'could not open XML input"); }
print "<pre>"; while (Sdata = freadUfp. 4096)) {
if (!xml_parse($xml_parser. Sdata. feof($fp)))
{ die(spnntf("XML error ^s at line *d\n". xml_error_string
(xml_get_error_code
($xml_parser)). xml_get_current_line_number($xml_parser)));} }
print "</pre>": print "parse completed";
xml_parser_free($xml_parser):

Содержимое файла xmltest.xml:

<?xml version='1.0">>
<!DOCTYPE chapter SYSTEM "/just/a/test.dtd" [
<!ENTITY plainEntity "FOO entity">
<!ENTITY systemEntity SYSTEM "xmltest2.xml"> ]>
<chapter> <TITLE>Title &plainEntity:</TITLE> <para>
<informaltable> <tgroup cols="3">
<tbody> <row><entry>al</entry>
<entry morerows="l">bl</entry>
<entry>cl</entry></row> <row><entry>a2</entry>
<entry>c2</entry></row> <row><entry>a3</entry>
<entry>b3</entryxentry>c3</entry></row> </tbody>
</tgroup> </informaltable> </para> SsystemEntity.
<sectl id="about">
<title>About this Document</title> <para>
<!-- this is a comment -->
<?php print 'Hi! PHP version ' .phpverslon(): ?>
</para> </sectl> </chapter>

Подключаемый файл xmltest2.xml:

<?xml version="1.0"?> <!DOCTYPE foo [
<!ENTITY testEnt "test entity"> ]> <foo>
<element attnb="value"/> StestEnt;
<?php print "This is PHP code."; ?> </foo>

xml_parser_create

Инициализация интерпретатора XML

int xml_parser_create ([string encoding])

Необязательным аргументом можно указать кодировку, котор дует использовать: ISO-8859-1 (по умолчанию), US-ASCII, U

Возвращает дескриптор созданного интерпретатора (исполы последующими функциями) или FALSE — при ошибке.

xml_set_object

Разрешение использования интерпретатора XML внутри объекта

void xml_set_object (int parser, object Subject)

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

 <?php class xml { var Sparser.
function xml (){ // конструктор
$this->parser - xml_j>arser_create();
xml_set_object($this->parser.&$thi s):
xml_set_element_handler
($this->parser."tag_open"."tag_close"):
xml_set_character_data_handler($this->parser."cdata"); }
function parse($data) ( xml parse(5this->parser.$data). }
function tag_oper,(Sparser.Stag.tattnbutes) {
echo "** Tag open: ": var dump($tag.$attributes). }
function cdata($parser.$cdata) {
echo " ++ Data: ": varjJump($cdita): }
function tag_close(Sparser.$tag) {
echo "** Tag close: "; var_dump($tag): }
} // end of class xml $xml_parser = new xml():
$xml_parser-parse('<A ID="99">PHP
<z a= "d"/>aaa</A>')?>
      <
         /FONT>

При запуске пример выведет:

** Tag open: stnng(l) "A" array(l) { f"IO"]=> stnng(2) "99"}
++ Data stnng(4) "PHP "
** Tag open: stnng(l) "Z" array(l) { ["A">>
stnng(l) "d" } ** Tag close: stnng(l) "Z"
t-+ Data: stnng(3) "aaa" ** Tag close: stnng(l) "A"

xml_set element_handler

Назначение обработчиков открывающего и закрывающего тега

int xml_set_element_hand1er (int parser, string startElementHandler, string endElementHandler)

В аргументах startElementHandler и endElementHandler указываются имена пользовательских функций, вызываемых во время интерпретации (при вызове xml_parse()), когда интерпретатор встречает открывающие и закрывающие теги.

Функции должны принимать следующие аргументы:

  • startElementHandler (Int parser, string name, array attribs)
  • endElementHandler (int parser, string name)

Аргумент name содержит имя тега, attribs — ассоциативный массив, содержащий атрибуты тега (если они имеются).

xml_set_character_data_handler

Назначение обработчика данных

int xml_set_character_data_handler (int parser, string handler)

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

handler (int parser, string data).

В аргументе data функция получает текущий блок данных.

xml_set_processing_instruction_handler

Назначение обработчика инструкций обработки

int xml_set_processing_instruction_handler (int parser, string handler)

Инструкции обработки имеют следующий формат:

<?target data . ?>

Используя этот формат, можно вставлять в XML документы РНР-кода, но последовательность, обозначающая конечный тег (?>), не должна встречаться в середине кода, иначе оставшаяся часть кода будет рассматриваться интерпретатором как обычные данные. Функция, устанавливаемая в качестве обработчика, должна соответствовать следующему прототипу:

handler (int parser, string target, string data)

В аргументе target функция получает маркер, определяющий тип кода (это может быть не только «php», но и другой, кроме зарезервированного типа «xml»). В аргументе data передается текст всего кода, который содержится внутри тега.

xml_set_default_handler

Установка обработчика по умолчанию

int xml_set_default_handler (int parser, string handler)

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

handler (int parser, string data).

В аргументе data функция получает блок данных для обработки.

xml_set_unparsed_entity_decl_handler

Установка обработчика необрабатываемых данных

int xml_set_unparsed_entity_decl_handler (int parser, string handler)

Данные такого типа (NDATA) определяются спецификацией XML 1.0 (раздел 4.2.2) и имеют подобный следующему формат:

<!ENTITY name {publicld | systemld} NDATA notationName>

Функция обработчика должна соответствовать следующему прототипу:

handler (int parser, string entityNarae, string base, string systemld, string publicld, string notationName).

В аргументе entityName функция получает тип тега, в base в настоящее время всегда содержится пустая строка. В аргументах systemld и publicld содержатся соответственно системный и публичный внешние идентификаторы. Аргумент notationName содержит имя нотации (см. функцию xml_set_notation_decl_handler()).

xml_set notation decl_handler

Установка обработчика объявлений нотаций

int xml_set_notation_decl_handler (int parser, string handler)

Нотации (являющиеся частью документов DTD) описаны в спецификации XML 1.0 (раздел 4.7) и имеют следующий формат:

<!NOTATION na'ie [systemlcl \ publ,cld}>

Функция обработчика должна соответствовать следующему прототипу:

handler (int parser, string notationName, string base, string systemld, string publicld)

В аргументе notationName функция получает имя нотации, в base в настоящее время всегда содержится пустая строка. В аргументах systemld и publicld содержатся соответственно системный и публичный внешние идентификаторы.

xml_set_external_entity_ref_handler

Установка обработчика внешних ссылок

int xml_set_external_entity_ref_handler (int parser, string handler)

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

int handler (int parser, string openEntityNames, string base, string systemld, string publicld).

Если обработчик возвращает значение FALSE (или не возвращает никакого), интерпретатор XML прекращает интерпретацию и функция xml_get_error_code() возвращает значение XML_ERROR_EXTERNAL_ENTITY_ HANDLING.

В аргументе openEntityNames функция получает список имен, открываемых для рекурсивной интерпретации (в виде строки, где разделителями являются пробелы), в base в настоящее время всегда содержится пустая строка. В аргументах systemld и publicld содержатся соответственно системный и публичный внешние идентификаторы.

xml_parse

Начало интерпретации документа XML

int xml_parse (int parser, string data [, int isFinal])

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

До начала интерпретации следует инициализировать интерпретатор parser и установить все функции-обработчики, которые будет вызывать данная функция. Функция возвращает значение TRUE, если интерпретация блока документа прошла успешно. В случае ошибки возвращается значение FALSE, и затем может быть получена информация об ошибке с помощью функций xml_get_error_code(), xml_error_string(), xml _get_current_line_number (), xml _get_current_col umnjiumber (), xml _get_ current_ byte_index().

xml_get_error_code

Получение кода ошибки интерпретатора XML

int xml_get_error_code (int parser)

Перечисление возвращаемых кодов ошибок (констант) см. в начале главы.

xml_error_string

Получение описания ошибки по ее коду

string xml_error_string (int code)

Функция позволяет получить в строке описание кода ошибки (возвращаемое функцией xml_get_error_code()). Если код недействителен, возвращается FALSE.

xml_get_current_line_number

Получение номера текущей интерпретируемой строки документа

int xml_get_current_line_number (int parser)

xml_get_current_column_number

Получение номера обрабатываемого байта в текущей интерпретируемой строке документа

int xml_get_current_column_number (int parser)

xml_get_current_byte_index

Получение позиции текущего байта документа

int xml_get_current_byte_index (int parser)

Нумерация байтов начинается с 0.

xml_parse_into_struct

Занесение документа XML в структурированный массив

int xml_parse_into_struct (int parser, string data, array &values, array &index)

Функция заносит XML-документ в 2 параллельные структуры: массив values содержит структуру тегов и их содержимое, a Index содержит вспомогательные индексы для облегчения нахождения начальных и конечных тегов в первом массиве (массивы следует передавать по ссылке).

$simple = "<para><note>simple note</note>
</para>"; $р = xml_parser_create();
xml_parse_i nto_struct($p.Ssimple.&$vais.&$т ndex);
xml_parser_free($p). echo "Index "; pnnt_r($index),
echo "\nVals ": pnnt_r($vals);

При запуске сценарий выводит:

 Index Arrayf [PARA] » Array ( [0] => 0 [1] =>
        2 )
[NOTE] => Array ( [0] => 1 ) ) Vals Array(
[0] => Array ([tag] => PARA
[type] => open [level] => 1 ) [1] -> Array ([tag] => NOTE
[type] => complete [level] => 2 [value] => simple note )
[2] => Array ([tag] => PARA k [type] => close
[level] =>
        1 ; } < /FONT
        >

Интерпретация сложных документов становится громоздкой при использовании обработчиков. Хотя эта функция и не создает объект, подобный DOM, она генерирует структуру, которую легко преобразовать в древовидную. Можно, например, создавать объекты, представляющие данные. Следующий пример демонстрирует создание объектов из xml базы данных химических элементов.

Файл, moldb.xml

<?xml version="1.0"7> <moldb>
<molecule> <name>Al am ne</name>
<symbol>ala</symbol> <code>A</code>
<type>hydrophobic</type> </molecule>
<molecule> <name>Lysine</name>
<symbol>lys</symbol> <code>K</code>
<type>cha rged</type> </molecule> </moldb>

Сценарий parsemoldb.php, интерпретатор файла moldb.xml:

 <?php class AminoAcid { // класс аминокислот
var Sname; // aa имя var Ssymbol:
// трехбуквенный символ var Scode:
// однобуквенный код var Stype: // свойства
function AminoAcid ($aa) { foreach ($aa as $k=>$v)
Sthis->$k = $aa[$k]; } }
function readDatabase(Sfllename) {
// read the xml database of arrrinoacids
Sdata = implode("",file(Sfilename));
Sparser = xml_parser_create();
xml_parser_set_option
($parser.XML_OPTION_CASE_FOLDING,0):
xml_parser_set_option
($parser.XML_OPTION_SKIP_WHITE.l).
xml_parse_into_struct(Sparser,Sdata,&$values.&$tags),
xml_parser_free($parser).
// loop through the structures foreach
($tags as $key=>$val) { if ($key == "molecule")
{ $molranges = $val;
for ($i=0. $1 < count($molranges):
$1+=2) { Soffset = $molranges[$i] + 1;
$len = $molranges[$i + 1] - Soffset: $tdb[]
=

         parseMol(array_slice($values. Soffset. Slen)): }
} else { continue: } } return $tdb: }
function parseMol($mvalues) {
for ($i=0; $1 < count($mvalues); $i++)
$mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"]:
return new AminoAcid($mol): }
$db = readDatabaseC'moldb.xml"):
echo "** Database of AminoAcid objects: ";
pnnt_r($db): ?>

После запуска сценария переменная $db будет содержать массив AminoAcid объектов и будет выведено:

** Database of AminoAcid objects: Array (
[0] => aminoacid Object (
[name] => Alamne [symbol] => ala [code] =>
A [type] => hydrophobic ) [1] => aminoacid Object
( ~\ [name] => Lysine \ [symbol] => lys
[code] => К [type] = > charged j ) < /FONT >

xml_parser_free

Закрытие интерпретатора XML

string xml_parser_free (int parser)

xml_parser_set_option

Установка параметра XML-интерпретатора

int xml_parser_set_option (int parser, int option, mixed value)

В аргументе option константой задается устанавливаемый параметр, а в value — ее новое значение. Возможные параметры:

  • XML_OPTION_CASE_FOLDING (тип значения параметра -- integer) -управляет преобразованием имен тегов в верхний регистр (по умолчанию — 1);
  • XML_OPTION_TARGET_ENCODIN6 (тип значения параметра - string) -целевая кодировка: «ISO-8859-1», «US-ASCII» или «UTF-8». По умолчанию та же, что и установленная функцией xml_parser_ create().

xml_parser_get_option

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

mixed xml_parser_get_option (int parser, int option)

См. также: xml_parser_set_option().

utf8_decode

Преобразование строки UTF-8 в ISO-8859-1. string utf8_decode (string data)

См. также: utf8_encode().

utf8_encode

Кодирование строки ISO-8859-1 в UTF-8 string utf8_encode (string data)

Возвращает строку в формате UTF-8. UTF-8 — эго формат представления текста Unicode, позволяющий представить большее количество символов, чем кодировка ASCII. Первые 127 символов ASCII в кодировке UTF-8 имеют идентичное представление, а последующие (обычно это символы национальных языков) кодируются следующими способами:

Кодировка UTF-8

Размер символа в байтах | Число битов символа | Кодировка
1 | 7 | Obbbbbbb
2 | И | llObbbbb lObbbbbb
3 | 16 | lllObbbb lObbbbbb lObbbbbb
4 | 21 | llllObbb lObbbbbb lObbbbbb lObbbbbb

Как видно, размер символа может быть от 1 до 4 бант; b представляет один бит данных.

XSLT

XSLT (Extensible Stylesheet Language (XSL) Transformations) — язык преобразований XML-документов в другие XML-документы; стандарт, определенный Консорциумом World Wide Web (W3C). С документацией можно ознакомиться по адресу: http://www.w3.org/TR/xslt.

Технология предназначена для разделения содержания и формы представления документов с помощью шаблонов преобразования XSL. Обычно документы XML преобразовывают в формат HTML.

Это расширение использует Sabloton и expat (http://www.gingerall. com/). В UNIX при компиляции PHP запустите configure с ключом -with-sablot.

xslt_create

Инициализация нового процессора XSL

resource xslt_create(void);

Функция возвращает дескриптор, используемый последующими XSL-функциями.

xslt_free

Закрытие процессора XSLT

void xslt_free (resource xh)

xslt_openlog

Назначение журнала сообщений процессора XSLT

bool xslt_openlog ([resource xh, string logfile, int loglevel])

В указанный файл logfile будут записываться все сообщения об ошибках.

xslt_closelog

Закрытие и очистка журнала сообщений процессора XSLT

bool xslt_closelog (resource xh)

xslt_errno

Получение номера текущей ошибки процессора XSLT

int xslt_errno ([int xh])

xslt_error

Получение описания текущей ошибки

mixed xslt_error ([int xh])

xslt_fetch_result

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

string xslt_fetch_result ([int xh, string result_name])

Если имя буфера не указывается в result_name, то подразумевается «/jresult».

xslt_output_ begintransform

Начало преобразования XSLTc выводом

void xslt_output_begintransform (string xslt_filename)

Функция заставляет преобразовывать все выводимые данные с учетом шаблона из файла xslt_filename. Затем следует вызвать функцию xslt_output_endtransform().

 <?php $xsl_file = "article.xsl";
xslt_output_begintransform($xsl_file):
Sdoc = new_xmldoc('1.0').
Sarticle = $doc->new_root('article'};
$article->new_child('title'. 'The History').
$article->new_child('author'. 'Peter'),
$article->new_child('body'. 'Nothing interesting has happened'):
echo $doc->dumpmem();
      xslt_output_endtransform(). ?>

xslt_output_endtransform

Завершение преобразования, начатого xslt_output begintransform void xslt_output_endtransform (void);

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

xslt_process

Преобразование документа XML с помощью шаблона XSL

bool xsH_process (string xsl_data, string xirHI_data, string result) В аргументе xsl_data указывается текст шаблона XSLT, а в xml_data — текст документа XML. Возвращает TRUE или FALSE — при ошибке.

См. также: xslt_errno() и xslt_error() для получения кодов ошибки.

<?php JxslData =
<xsl:stylesheet version="l 0"
xmlns:xsb"http-//www.w3 org/1999/XSL/Transfonn">
<xsl template match="article">
<table border="l" cellpadding="2" cellspacing="l"> <tr>
<td vndth="800">
<h2><xsl value-of select,="title"></h2> <h3>
<xsl value-of select="author"></h3>
<br><xsl.value-of select="body"> </td> </tr>
</table> </xsl-templdte> </xsl:stylesheet>
SxmlData ' ' <?xml version^"!.0"?> <article>
<title>Learning Language</title>
<author>I Myself</author> <body>
Essential phrases: <br> <br> Hello.
Good day.<br> </body> </article>';
if (xslt_process($xs!Data. SxmlData. $resuH.O {
echo "Here is the article:<br>\n<br>", Sresult;
} else ( echo "Ошибка преобразования XSL.
\nUHonep' " xslt_errno() .
"\п\Описание: " xslt_error() . "\n"; exit: } ?>

xslt_run

Применение XSLT к файлу

bool xslt_run ([resource xh, string xslt_file. string xmt_data_file. string result, array xslt_params, array xslt_args]]])

Преобразовывает файл xm!_data_file, применяя к нему шаблон из файла xslt_file. Шаблон получает доступ к массиву параметров xslt_ params и аргументов xstt_args. Результат XSLT-трансформации заносится в именованный буфер (по умолчанию «_result»).

xslt_set_sax_handler

Установка обработчиков SAX для процессора XSLT

bool xslt_set_sax_handler (resource xh. array handlers)

xslt_transform

Выполнение трансформации XSLT

bool xslt_transforn> (string xsl, string xml, string result, string params, string args, string resultBuffer)

Предоставляет расширенный интерфейс библиотеки Sablotron без необходимости использования ресурсов API.