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

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

Что для этого требуется?
  • Для компиляции должен быть установлен Microsoft Visual C++ версии 6 (возможно и 5, но не рекомендуется).

  • Необходим комплект эмулятора утилит GNU для Windows Cyg-win, который можно загрузить со многих сайтов (например: http:// sources, redhat.com/cygwin/download.html).

  • С сайта РНР следует загрузить набор файлов в архиве http://www. php.net/extra/win32build.zip.

  • А также библиотеку работы с именами DNS http://www.php.net/ extra/bindlib_w32.zip. Это замена библиотеки resolv.lib из архива win32build.zip.

  • Для распаковки архивов, естественно, нужен разархиватор unzip.

  • И конечно, необходим сам пакет исходных кодов РНР. Его можно загрузить с сервера РНР 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).

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

    Изначально аббревиатура РПР означала 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.

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

    Дата и время

    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":

    Функции регулярных выражений (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". "Пример:
    мой текст
    ", Jout. PREG_PATTERN_ORDER):

    Теперь массив Sout будет содержать следующие элементы (общая схема):

    Фрагменты
    0 1 ...
    Шаблон 0 $out[0]|0] = "Пример: " $out[0][l] = " мой T6KCT" $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". "Пример:
    ", $out. PREG SET ORDER):

    Шаблон Подшаблоны 0 , Фрагменты 0 $out[0][0] =•

    "Пример:

    " $out[0][l] = "Пример: " $out(0][...J 1 $out[l][0] -

    "
    мой текст
    " $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 = "bold text--a href=howdy.htrol>click me 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". }

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

    фрагмент: bold text часть 1

    часть 2: bold text часть 3:
    фрагмент: <а 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 ("/(]*>)/e". "\\Г .strtoupper('\\2') '\\3'", $html_body); // Пример 3. Преобразование HTML в текст // Sdocument должен содержать текст HTML. // Удаляются теги HTML tags, секции javascript // пробелы 8 начале строк. Подстановки HTML конвертируются // в их символьное представление. $search = array C"]*?> *? ]*?>'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". Stextbody);

    preg_grep

    фильтрация элементов массива в соответствии с шаблоном

    array preg_grep (string pattern, array input)

    Возвращает массив input, в котором оставлены только элементы, соответствующие указанному pattern шаблону.

    // возвращает все элементы, содержащие

    дробные числа $f1 array =

    preg_grep ("/~(\d+)?\ \d+$/". $arra;y)

    Функции

    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 функции доступны.
    \n" } else { echo "IMAP функции НЕ доступны
    \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().

    \n": if (Snumargs >= 2) j echo "Второй аргумент: " func_get_arg (1) . "
    \n": } } foo (1. 2. 3): ?>

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


    func_get_args

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

    array func_get_args (void)

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

    \n". $arg_list = func_get_args(). for (Si = 0. $1 < Snumargs; $1+*) { echo "аргумент (номер $i): " . $arg list[$i] . "
    \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() в пользовательских функциях, принимающих неопределенное число параметров.



    Массивы

    См. также: 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, это языковая конструкция. Она назначает перечисленным переменным значения элементов массива. Первой указанной переменной назначается значение первого элемента массива, второй — второго и т. д.

    \n". \n". \n". " \n"); } ?>
    Employee name Salary
    $name$salary


    См. также: 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():

    "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:
    ". reset ($HTTP_POSM/ARS). while (list ($key. $val) - each ($HTTP_POST_VARS)) { echo "$key =•> $val
    "

    См. также: 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
    \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])


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

    >

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

    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) — сортируются как числа по убыванию.

    Математические функции 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, в сторону увеличения значимости разрядов. Возвращает позицию найденного бита.

    Математические функции повышенной точности 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().

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

    Эти математические функции предназначены только для работы с числовыми данными, которые имеет ваш компьютер. Если вам требуется дополнительная точность в расчетах, обратитесь к «математическим функциям повышенной точности 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

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

    Описываемые в разделе функции позволяют получать информацию о классах и экземплярах объектов. Можно узнать, к какому классу принадлежит объект, его свойства и методы, а также их наследственную принадлежность.
    В этом примере сначала определяется базовый класс, а затем его наследник.
    правляемость; //неизменное логическое значение 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.
    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, не были присвоены значения, то такие переменные в возвращаемый массив не включаются.

    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.

    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().

    Переменные

    Манипуляции с переменными
    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 >

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


    > 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().

    // -- Сценарий напечатает - // 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().

    <рге> < /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 >

    Расширение регулярных выражений

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

    /* вставляет тег
    в начало строки

    Sstring */ Jstring = ereg_replace

    ("$". "
    ". Sstnng). /* вставляет тег


    в конец строки 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] [ВДГЪь] !

    Синтаксис регулярных выражений

    Регулярное выражение должно состоять из: ограничителей шаблона, самого шаблона и необязательных модификаторов.
    /шаблон/модификаторы
    Ограничителями могут служить: прямые слеши «/», а также любые не алфавитно-цифровые символы, кроме обратного слеша «\». Часто в качестве ограничителей служат символы: \, %, $. Завершающий ограничитель должен быть представлен тем же символом, что и начинающий; ограничитель должен быть первым символом регулярного выражения. Если необходимо использовать символ, выбранный ограничителем в шаблоне, ему должен предшествовать обратный слеш «\» (например: «/\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)*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|НЗ)>( .*)*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>/i может (теоретически) вернуть 4 варианта совпадения. По умолчанию ищется максимальное повторение (то есть в данном варианте — строка целиком). Чтобы находилось минимально повторяющееся значение, используйте модификатор U. Для снижения «жадности» не всех числителей а только избранных ставьте после них знак вопроса, например: /(.*?)<\/p>/i; этот способ изменяет «жадность» числителя на противоположную от основной.
    Числитель может указываться не только после символа, класса, под-шаблона, но и после обратной ссылки.
    Подшаблоны и обратные ссылки
    Сами по себе подшаблоны (части шаблона, заключенные в круглые скобки) не влияют на функционирование регулярных выражений и могут служить исключительно для удобства группировки (они могут быть вложенными). Подшаблон может использоваться для ограничения набора альтернатив. При использовании же с обратными ссылками подшаблоны являются действенным инструментом поиска. Например, для поиска содержимого парных тегов может использоваться запись: *<([*>]*)>(.*)*.


    Подшаблоны нумеруются но порядку открывающей круглой скобки, и для доступа к фрагменту текста, совпадающему с подшаблоном, используются обратные ссылки формата: слеш, за которым следует число, большее 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+(?=\))/ возвращает всякое слово, стоящее в скобках без пробелов, но сами скобки не возвращаются.


    В претензиях возможно указывать альтернативы и все то, что может использоваться в обычных шаблонах, кроме повторений. Для претензий предшествия альтернативы не должны иметь неопределенную длину, например, следующая претензия допустима: (? Допустимо использовать последовательности претензий, например (?<=\d{3}) (? Также возможны вложения, например (?<=(? Специальные структуры подшаблонов
    Присутствие в шаблоне множества неопределенных числителей усложняет обработку регулярных выражений (в особенности, когда обрабатываемый текст велик) и увеличивает время обработки. Указание модификаторов «жадности» не позволяет избавиться от этого, так как все равно перебираются все возможные комбинации повторений, прежде чем возвратится результат обработки.
    Поэтому в подшаблонах возможно использовать последовательности, блокирующие дальнейший перебор повторений подшаблона после того, как уже было найдено первое соответствие фрагменту текста. Такие подшаблоны маркируются последовательностью после открывающей скобки. Модификаторы «жадности» сохраняют при этом свое значение. Иными словами, вместо того, чтобы семь раз отмерять, мы сразу нарезаем строку на фрагменты.
    Использование этого метода накладывает на выражение то ограничение, что после того, как найдено совпадение подшаблона с фрагментом текста, все дальнейшие проверки проводятся относительно этого места совпадения, поэтому здесь обоснованно использование сложных претензий. Не стоит забывать, что при этом (это и достоинство, и недостаток этого метода), если найдено совпадение с таким подшаблоном, но в целом шаблон не соответствует фрагменту, то поиск завершается неудачей, хотя, возможно, при обычном поиске совпадение с шаблоном могло бы быть найдено в другом месте текста (другом возможном значении числителя).


    Допустим, необходимо определить, оканчивается ли длинный текст на символы «Хх». При обычном шаблоне /Хх$/ проверка будет проходить от начала текста (сначала будет искаться символ, а потом определяться, стоит ли он в конце). Если усложнить шаблон до Г(. .*)Хх$/, это не сильно ускорит обработку, так как большую часть времени будет перебираться повторение первого подшаблона, и только потом определяться окончание текста. Если же написать шаблон как: /А(?>.*)(?<=Хх}$/, то первый подшаблон сразу же захватит весь текст целиком, а затем будет проверено окончание.
    Последней замечательной особенностью регулярных выражении являются условные структуры, позволяющие выбирать подходящий под-шаблон в зависимости от результатов поиска. Они записываются так:
    (? (условие) подшаблон!) или (?(условие)подшаблон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)б|г)/ соответствует фрагментам: «аб», «аБ», «г» или «Г».

    Строковые функции

    Вывод
    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().
    Каждый спецификатор состоит из знака процента (%), за которым следуют один или более следующих элементов в указанном порядке.
  • Необязательный спецификатор заполнителя, определяющий, каким символом будут дополняться строки до необходимой длины. Это может быть пробел или нулевой символ. По умолчанию используется пробел. Альтернативные символы-заполнители могут быть >к.') юны, если перед ними ставится знак одинарной кавычки ('). Например, printf CTz5d",12); // выведет: zzz!2.


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


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


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


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


  • 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 " $fi rst $last \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". ""):


    См. также: 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 до последнего символа заменяемого фрагмента (со знаком минус).

    \n". echo substr_replace ($var. 'bob'. 0. strlen ($var)) "
    \n"; // выводит: bob
    /* вставить 'bob' в начале строки $var. */ echo substr_replace ($var. 'bob'. 0. 0) . "
    \n": // выводит: bobABCDEFGH:/MNRPQR /
    //* замена 'MNRPQR' в $var на 'bob' */ echo substr_replace ($var. 'bob'. 10. -1) . "
    \n". echo substr_rep1ace ($var. 'bob'. -7. -1) . "
    \n": // выводит: ABCDEFGH:/bob/
    /* удаление 'MNRPQR' из $var. */ echo substr_replace ($var. ", 10. -1) . "
    \n": // выводит: ABCDEFGH-//
    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() с тем отличием, что она преобразует символы перевода строк «\п» в «
    \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 '' . // передача пароля в гиперссылке

    Или при передаче нестандартной для URL строки пути:

    echo '
    ':


    См. также: 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].)). "
    "; $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» вставляется последовательность
    .

    См. также: 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 и интерпретирует его построчно, находя теги :

    ". Sencoded = strtr ($str. Strans), // теперь Sencoded = "< A & В >."

    Иногда удобно использовать функцию 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, и поэтому для использования в тексте их необходимо заменять эквивалентами. Функция производит следующие замены:

  • & (амперсант) становится &атр;


  • " (двойная кавычка) становится " при quote_style <> ENT_ NOQUOTES;


  • ' (одиночная кавычка) становится ' при quote_style = ENT_ QUOTES;


  • < (знак меньше) становится <


  • > (знак больше) становится >
  • $new = htmlspeciaichars("
    Test". 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().

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

    Файл конфигурации 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>


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

    ;error_append_string = "
    " < /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, этот параметр следует заблокировать, и тогда будет разрешено использовать только теги .

    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>

    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>

    Функции 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.

    Выводит следующую информацию:
    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 файлов , обрабатываемую модулем 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().

    Использование интерфейса 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).
    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().

    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.";
    echo "Вы вели пароль:
    $PHP_AUTH_PW."; } ?>

    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 одномерный массив (но устанавливать значение каждого элемента нужно по отдельности):

    setcookie ("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
    \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 с не установленными третьим и четвертым параметрами.

    Клиентский модуль 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: }
    $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:
    } $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): }
    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().

    Отслеживание и обработка ошибок

    РНР имеет следующие типы ошибок и предупреждений:

    Значение Константа Описание
    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(), генерирующей ошибку; это может быть использовано (подобно аналогичной конструкции работы с исключениями в С) для освобождения выделенных ресурсов (например, удаления созданных файлов), если сценарий не может нормально завершиться.

    Функция, устанавливаемая в качестве обработчика ошибок, должна принимать пять параметров (три последних являются дополнительными и могут не обрабатываться):

  • код ошибки;


  • строку, описывающую ошибку;


  • имя сценария, в котором произошла ошибка;


  • номер строки сценария, содержащей ошибку;


  • контекст (массив, содержащий значения переменных, в момент-возникновения ошибки).


  • пользовательских ошибок 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 "Критическая ошибка
    [Serrno] $errstr
    \n";
    echo " в строке: Serrline. файла:
    ".Serrhle:
    echo ", PHP ".PHP_VERSION."
    (".PHP_OS.")
    \n":
    echo "Aborting...
    \n":
    exit -1:
    break case ERROR:
    echo "Ошибка [Serrno] $errstr

    \n":
    break: case WARNING:
    echo "Предупреждение
    [Serrno] Serrstr
    \n";
    break:
    default:
    echo "Неизвестный тип ошибки:
    [Serrno] $errstr
    \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{ 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 )
    Прелупреждение
    [1024] Элемент (2) не число.
    v его значением считается 0
    Массив, масштабированный на
    логарифм(Пи) Атау (
    [0] => 2.2894597716988
    [1J => 3.4341896575482 [2]
    »> О [3] => 6 2960143721717 [4
    ] => 49 566804057279 [5] =>
    24 165247890281 )
    •Ф>Ошибка Г512]
    Требуется массив

    NULL Критическая
    ошибка
    [256] вычислить
    log(x) для х <= 0 нельзя,
    (х --- -2 5)
    в строке 37.
    файла. Е-\ooo\php39.php3.
    РНР 4.0.5 (WINNT)

    Aborting. .


    Не забывайте, что при установке пользовательского обработчика ошибок стандартный обработчик РНР не исполняется. Установки еггог_ 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(), генерирующей ошибку; это может быть использовано (подобно аналогичной конструкции работы с исключениями в С) для освобождения выделенных ресурсов (например, удаления созданных файлов), если сценарий не может нормально завершиться.

    Функция, устанавливаемая в качестве обработчика ошибок, должна принимать пять параметров (три последних являются дополнительными и могут не обрабатываться):

  • код ошибки;


  • строку, описывающую ошибку;


  • имя сценария, в котором произошла ошибка;


  • номер строки сценария, содержащей ошибку;


  • контекст (массив, содержащий значения переменных, в момент-возникновения ошибки).


  • пользовательских ошибок 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 "Критическая ошибка
    [Serrno] $errstr
    \n";
    echo " в строке: Serrline. файла:
    ".Serrhle:
    echo ", PHP ".PHP_VERSION."
    (".PHP_OS.")
    \n":
    echo "Aborting...
    \n":
    exit -1:
    break case ERROR:
    echo "Ошибка [Serrno] $errstr

    \n":
    break: case WARNING:
    echo "Предупреждение
    [Serrno] Serrstr
    \n";
    break:
    default:
    echo "Неизвестный тип ошибки:
    [Serrno] $errstr
    \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{ 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 )
    Прелупреждение
    [1024] Элемент (2) не число.
    v его значением считается 0
    Массив, масштабированный на
    логарифм(Пи) Атау (
    [0] => 2.2894597716988
    [1J => 3.4341896575482 [2]
    »> О [3] => 6 2960143721717 [4
    ] => 49 566804057279 [5] =>
    24 165247890281 )
    •Ф>Ошибка Г512]
    Требуется массив

    NULL Критическая
    ошибка
    [256] вычислить
    log(x) для х <= 0 нельзя,
    (х --- -2 5)
    в строке 37.
    файла. Е-\ooo\php39.php3.
    РНР 4.0.5 (WINNT)

    Aborting. .


    Не забывайте, что при установке пользовательского обработчика ошибок стандартный обработчик РНР не исполняется. Установки еггог_ 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])

    Параметры и информация РНР

    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 будут представлять различные значения.
    define ("CONSTANT".
    "Hello world ").
    echo CONSTANT:
    // outputs "Hello world."
    ?>


    Возвращается TRUE или FALSE при ошибке (например, если константа уже была определена).
    См. также: definedO и раздел «Константы».
    defined
    Проверка существования константы
    int defined (string name)
    Возвращает TRUE, если константа с именем, указанным name, была определена; иначе FALSE. /
    { // Note that it should be quoted
    echo CONSTANT; //
    } ?>
    См. также: defineO и раздел «Константы».
    get_required_files
    Определение списка файлов, подключенных директивами require_once()
    array get_required_files (void)
    Возвращает ассоциативный массив имен файлов. Индексами будут аргументы, указанные в директивах require_once(), без расширения .рhр.
    ("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
    См. также: 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().

    Поддержка СОМ для 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 в случае ошибки.

    Разделяемая память

    Данный набор функций позволяет РНР создавать, удалять, читать и записывать данные в разделяемые блоки памяти UNIX. С помощью разделяемой памяти можно осуществлять глобальный обмен данными между приложениями. В системах Windows эти функции не работают, так как там не поддерживается разделяемая память1. Для использования этих функций необходимо скомпилировать РНР с параметром — enable-shmop. В версиях РПР 4.0.3 и ниже эти функции имели префикс shm_.
    ' 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 и освобождает память.

    Сессии

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

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

  • В сценарии используются две основные функции: открытие сессии и внесение значения неременной в данные сессии.

  • При открытии сессии автоматически извлекаются ранее сохраненные переменные сессии.

  • При уничтожении сессии (обычно это делается автоматически, но прошествии времени устаревания) удаляются все се данные.

  • Внутренняя реализация сессий PIIP работает следующим образом. Если параметр конфигурации session.auto_start установлен (равен 1), то при запуске сценария сессия инициализируется автоматически (неявно вызывается функция session_start()). При этом проверяется существование идентификатора сессии и необходимость его создания.
    Явно добавить переменную к данным сессии позволяет функция session_register().
    Сохранение и восстановление переменных сессии определяется параметрами конфигурации track_vars (обычно он разрешен всегда) и register_globals.
    Если параметр register_g"lobals разрешен, то переменные сессии автоматически преобразуются в глобальные и обратно (также их значения доступны в массиве $HTTP_SESSION_VARS).
    ("count"): $count++: >>
    Если параметр register_globals запрещен, то тогда переменные сессии сохраняются только в глобальном ассоциативном массиве $НТТР_ SESSIONJARS.
    ("count");
    $HTTP_SESSION_VARS
    ["count"l++: ?>

    PHP может автоматически вносить идентификаторы сессий (SID) в строки локальных гиперссылок, если при компиляции был разрешен параметр —enable-trans-sid. Это бывает полезно, если браузер клиента не поддерживает cookie; иначе придется добавлять идентификаторы сессий в ссылки вручную.


    - позволяет вывести идентификатор
    сессии
    # при интерпретации
    заменяется на значение вида
    # 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()).

    Sprevious name = session_name
    ("WebsitelD"): echo "Ранее именем
    сессии было $previous_name"; ?>

    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.

    Можно реализовать механизм сохранения данных сессий в базе данных. Следующий пример, демонстрирующий сохранение данных в файлах (примерно таким образом действует РНР), может быть лег- / ко преобразован для хранения данных в БД.

    // инициализация сессии
    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, то устанавливает новое (это необходимо делать до запуска сессии).

    session_cache_himter( 'private');
    session_start (): ?>

    Управление исполнением сценария 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)
    Это языковая конструкция, ничего не возвращающая.
    '/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.
    \n';
    e;cho $str.
    eeval (" \$str = \"$str\". ");
    «val (" echo \$str '):
    eecho eval ("return 999: ");
    ?>

    Приведенный выше сценарий выведет:

    Это Sstnng, а внутри
    Spame.
    \n3ro сундук,
    а внутри кирпич.
    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).

    ($array) { while (list (Jkey. Svalue)
    = each (Sarray)) { $str =
    " $value
    \n"; }
    return $str }
    echo "$HTTP_USER_AGENT\n";
    $browser = get_browser();
    echo list_array ((array) Sbrowser). ?>

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

    Mozilla/4.5 ten] (Xll; U. Linux 2.2.9 1586)


    Mozilla/4\.5.*
    parent:
    Netscape 4.0 platform:
    Unknown
    majorven:
    4
    mnorver: 5
    browser: Netscape

    version 4
    frames:
    l tables: l
    cookiev l

    backgroundsounds:

    vbscnpt:

    javascnpt:

    javaapplet:

    activexcontrols-

    'b>beta:<:/b>
    crawler
    :

    authenticodeupdate:

    msn:


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

    highlight_file

    Вывод содержимого файла с цветовой разметкой boolean highlight_file (string filename)

    Имя (или путь) файла указывается'в аргументе. Цвета выделения синтаксиса определяются в файле конфигурации РНР. Возвращает TRUE или FALSE при ошибке.


    Например, чтобы заставить сервер Apache при получении запроса с URL, содержащего значение вида «пир://имя.сервера/5оигсе/путь/ к/файлу.php», выводить листинг файла «1тЬ1р://имя.сервера/путь/к/ файлу, рпр», сделайте следующее.

    Добавьте в файл httpd.conf следующий фрагмент:

    # Используем директиву "ForceType"
    чтобы указать, что значение source в URL
    - не каталог, а имя сценария РНР

    ForceType appHcation/x-httpd-php


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




    ("PATM_TRANSLATEn"
    V if(!$script) { echo "

    ERROR: Укажите имя
    Сценария<ВК>"; lelse {
    if (eieg("{\.php|\ inc)$".$scnptl)
    { echo "<Ш>Листинг файла.
    $РАТН INFO\n
    \n";
    if(!ehighlight_file($scr1pt))
    echo "Ошибка вывода файла":
    } else { echo "

    ERROR:
    Показываются" ." только
    листинги PHP файлов "; } }
    echo "<нр>Распечатано: "
    .date("Y/M/d Н:т :s" .timeO): ?>



    См. также: 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/.

    Управление выводом

    Данная группа функций позволяет управлять тем, как РИР при выполнении сценария выводит информацию. Это может быть полезно в различных ситуациях, в особенности при посылке браузеру HTML-заголовков (headers) после того, как сценарий начал выводить HTML-текст. (В обычном случае невозможно послать заголовок после того, как был начат вывод текста.) Эти функции не воздействуют на заголовки, посланные функциями header() или setcookie(), а только па функции, подобные echo() и HTML-тексту между блоками РНР-кода.
    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);
    // возвращает содержимое буфера ?>

    Тут всякий текст...
    /* преобразовывать текст далее
    в верхний регистр */ ?>
    и еще много чего .

    смотрите сами ...
    ?>

    См. также: 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, например, буфсршируег текст до получения символа завершения строки или открывающего тега, а для таблиц — до получения тега таблицы верхнего уровня.

    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().

    Загружаемые модули 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().

    Загрузка файлов на сервер методом 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>
    "MAX_FHE_SIZE" value="1000">
    Отослать файл; "userfile" TYPE="file">
    ="Послать">

    Вместо значения атрибута 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», если необходимо передавать несколько файлов одновременно.) Соответственно массив будет содержать столько же подмассивов, сколько полей передачи файлов присутствовало в форме.

    PUT /path/filename html HTTP/1.1

    Строка указывает, что сервер должен сохранить последующую часть запроса как файл под именем filename.html в каталоге web-сервера /path/. Едва ли такое решение является удачным — позволять любому клиенту сохранять произвольные файлы на сервере. Поэтому в конфигурации web-сервера следует указать, что запросы этого типа должен обрабатывать определенный сценарий. В сервере Apache для этого необходимо добавить директиву Script в его файл конфигурации. Обычно такая директива вносится в блок , иногда — в блок . Например, в таком виде:

    Script PUT /put.php

    Эта директива указывает серверу, что все получаемые запросы типа PUT (соответствующие контексту, то есть адресованные определенному каталогу или виртуальному хосту) должны передаваться сценарию put.php (расположенному в корневом каталоге web-сервера). Внутри файла put.php можно указать следующую строку:

    ($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, то в нем будет сохранен код завершения команды.
    $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() и «оператор запуска внешних программ».

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

    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-документа.
    Следующий пример иллюстрирует обработку данных формы.
    $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 '$date'
    ":
    Scomment = fdf_get_value($fdf, "comment");
    echo "The comment field has the value ''e>$comment

    '
    ";
    if(fdf_get_value($fdf. "show_publisher")
    == "On") { Spublisher = fdf_get_value($fdf. "publisher"):
    echo "The publisher field has the value '$publisher
    '
    ": } else
    echo "Publisher shall not be shown.
    ":
    fdf_close($fdf); ?>
    fdf_open
    Открытие документа PDF
    int fdf_open (string filename)
    Открываемый файл должен содержать данные, возвращенные формой PDF. В настоящее время файл необходимо создавать вручную, используя fopen() и записывая данные HTTP_FDF_DATA функцией fwrite().

    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 )

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

    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().

    Графика, 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) вызывается со страницы тегом вида "button.php?text">(в данном случае на рисунке images/buttonl.png будет выведена надпись «text» и затем этот рисунок будет отослан браузеру). Это более удобный способ, использующий готовый макет рисунка, не требующий его перерисовки с начала, но добавляющий в него дополнительные элементы. < /FONT>

    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.

    { echo "формат PNG поддерживается". } ?>
    ImageCreate
    Создание рисунка
    int imagecreate (int x_s1ze, int y_size)
    Возвращает дескриптор созданной картинки размером x_size на y_size.


    $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>


    < /FONT>


    Указав необязательный массив imageinfo, в нем можно сохранить дополнительную информацию о файле, например различные маркеры JPG APP (внедренную информацию). Часто в маркер АРР13 заносят информацию IPTC http://www.iptc.org/. Функция iptcparse() позволяет конвертировать эти данные АРР13 в читаемый вид.


    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 обычно хранят информацию цифровых камер (в различном виде).


    while(list($k.$v)=each($exif))

    { echo "$k: $v
    \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, функция недоступна для этих версий.

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


    { 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, то в этот файл.

    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 элементов, определяющих прямоугольник вывода текста:

  • нижний левый угол, Х-координата;


  • нижний левый угол, Y-координата;


  • нижний правый угол, Х-координата;


  • нижний правый угол, Y-координата;


  • верхний правый угол, Х-координата;


  • верхний правый угол, Y-координата;


  • верхний левый угол, Х-координата;


  • верхний левый угол, 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 (в виде {) для вывода символов с кодами, большими 255.


    При использовании отрицательного значения индекса цвета отключается сглаживание шрифта (antialiasing).

    Возвращает массив из 8 элементов, определяющих прямоугольник вывода текста подобно функции imagettfbbox(). Функция требует библиотеки GD и FreeType.


    $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: Ω"):

    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().

    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-команду отсылки заголовка до вывода анимации:

    См. также 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)

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

    $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)

    Угол указывается в градусах.

    $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().

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

    $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>)

    // 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 - объект Фигура

    $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, цвет (значениями компонент красного, зеленого и синего) и альфа-параметр.

    $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().

    $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).

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

    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»).


    $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(): ?>

    Пример с использованием альфа-маски:

    // . 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»).

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

    $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 — объект текста

    $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.



    Дескриптор шрифта, возвращенный 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») позволяет создавать анимации с собственной системой отсчета времени. Поэтому спрайты функционируют подобно основным анимациям.

    $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 — объект Кнопка

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

    $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(). ?>


    Следующий пример позволяет перетаскивать кнопку по экрану.

    $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;.

    Следующий пример перемещает красный квадрат по экрану.

    $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(): ?>


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

    $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(): ?>

    Тот же сценарий, но с цветными шариками...

    $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(): ?>


    Следующий пример отслеживает нажатия клавши. Необходимо, чтобы фокус окна был активен.

    $р = 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.


    $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 "finished":
    просто возвращает документ pdf '
    $fp = fopenC'test.pdf". "r")
    headert"Content-type: applncation/pdf").
    fpassthru(Sfp); fclose($fp): ?>

    Пример из комплекта pdflib создает документ, состоящий из страниц с изображением часов (каждая страница показывает текущее время создания):

    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» и одно, определяемое пользователем. Функция должна вызываться до создания страниц.

    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.

    // всякие вращения и трансформации ...
    pdf_reitore($pdf) ?>

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

    pdf_translate

    Установка начала системы координат

    j void pdf_translate (int pdf_document, double x, double y) Координаты указываются относительно текущей точки отсчета. Затем, до начала рисования объектов, требуется установить текущую точку.

    ($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)

    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().

    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.

    ($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.

    $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
    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, не позволяет одновременно работать с несколькими документами. Но она способна создавать документы в памяти, не используя временный файл. Возможно также модифицировать любую страницу.

    // пойнтов в миллиметре 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 можно использовать для сравнения двух библиотек.

    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().

    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().

    // всякие вращения и трансформации ...
    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).

    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-анимации:

    . 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 й'айл: выводит его и сохраняет в БД
    // 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 запрещает округление.

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

    DOM XML

    Функции доступны при компиляции с параметром —with-dom= [DIR]при использовании библиотеки GNOME xml (не ниже libxml-2.0.0). < /FONT>
    Модуль определяет следующие константы (типы элементов XML):
  • XML_ELEMENT_NODE;

  • XML_ATTRIBUTE_NODE;

  • XML_TEXT_NOOE;

  • XML_CDATA_SECTION_NODE;

  • XML_ENTITY_REF_NODE;

  • XMLJNTITYJODE;

  • XML_PI_NODE;

  • XML_COMMENT_NODE;

  • XiCJDOCUMENTJODE;

  • XML_DOCUMENT_TYPE_NODE;

  • XML_DOCUMENT_FRA6_NODE;

  • XMLJOTATIONJODE;

  • XML_GLOBAL_NAMESPACE;

  • 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 — строка содержимого тега.



  • Sroot = $doc->add__root;"HTML"). // DomNode

    Shead - $root->new_child("HFAD". "");

    $head->new_child("TITLE". "Hier der Titel"):

    echo $doc->dumpmem(); ?>

    Сценарий выводит следующее:



    Hier der Titel<br>

    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='



    Title OF DOC':

    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 $root->new_child("Hl". "1212");

    //

    1212



    $p=$root->new_child("Pp". "Tttt tt");

    // Tttt tt $p->set_attnbute("Id"."8")

    // echo $doc->dumpmem();

    $d=domxml_children($doc->root()); // Sroot.

    var_dump($d);

    $d=domxml_children($d[l]). // Tttt tt

    varjJump($d); // "Tttt tt" $d=domxml_children($d[0]);

    // = bool(FALSE) < /FONT

    >

    Пример выводит следующее:



    1212Tttt tt


    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")):

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

    1212

    Tttt tt


    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)

    См. пример выше. Имена атрибутов учитывают регистр символов.

    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).

  • В отличие от стандартных средств сериализации РНР данные функции используют формат, поддерживаемый большинством программных сред.
    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
    >
    Пример выведет:


    3.1415926



    AustinSeattle

    wddx_serialize_value
    Занесение одного значения в пакет WDDX
    string wddx_serialize_value (mixed var [, string comment])
    Создает пакет WDDX из значения одной переменной var, добавляя в заголовок пакета комментарий comment, и возвращает полученный пакет.


    packet example". "PHP packet"); ?>

    Пример выведет:



    WDDX packet example


    wddx_serialize_vars

    Создание пакета WDDX из нескольких значений

    string wddx_serialize_vars (mixed varjiame [. mixed ...])

    $d = "colors"; $clvars = arrayC'c". "d")-.

    print wddx_serialize_vars("a". "b", Sclvars); ?>

    Пример выведет:



    l

    5 5

    blue

    orangeviolet

    colors


    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)

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

    XML-интерпретация

    XML (extensible Markup Language) — формат обмена структурированными данными в пространстве web; стандарт, определенный Консорциумом World Wide Web (W3C). Информацию о XML и связанных технологиях можно получить по адресу http://www.w3.org/XML/. Для понимания материала главы необходимо разбираться в синтаксисе XML
    Для работы с документами XML используются два способа.
  • Использование объектной модели документа (DOM), которая удобна для работы с документом в целом, но расходует больше ресурсов.

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

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

  • Функции-обработчики определенным образом обрабатывают передаваемые им фрагменты документа.
    Заметьте, что интерпретатор предназначен для обработки документа, но не для его проверки; документ должен соответствовать грамматике 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() — инструкции обработки (например, и подобные им; инструкция зарезервирована);


  • 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 ""; } } 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 "<Sname"

    : if (sizeof(Sattnbs)) { while (list(Sk. $v) = each(Sattnbs))

    { print "

    $k
    =\"$v\"": } }

    print ">": }function endElement(Sparser. Sname) {

    print "</$name>": }

    function characterData(Sparser. $data)

    { print "Sdata"; }

    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: fc".

    htmlspecialchars(Sdata)): break; } }

    function defaultHandler($parser, Sdata) {

    if (substrtSdata, 0. 1) == "&" && substr(Sdata. -1. 1)

    == ".") { pnntf ('Us'.

    html sped a lchars (Sdata)): } else {

    printf('?s'.

    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 "
    "; 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 "
    ": print "parse completed";

    xml_parser_free($xml_parser):

    Содержимое файла xmltest.xml:

    >




    ]>

    Title &plainEntity:



    al

    bl

    cl
    a2


    c2
    a3

    b3c3


    SsystemEntity.



    About this Document






    Подключаемый файл xmltest2.xml:


    ]>

    StestEnt;


    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.


    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('PHP
    aaa
    ')?> < /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)

    Инструкции обработки имеют следующий формат:



    Используя этот формат, можно вставлять в 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) и имеют подобный следующему формат:



    Функция обработчика должна соответствовать следующему прототипу:

    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) и имеют следующий формат:



    Функция обработчика должна соответствовать следующему прототипу:

    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 = "simple note
    "; $р = 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



    Al am ne

    ala A

    hydrophobic


    Lysine

    lys K
    cha rged


    Сценарий parsemoldb.php, интерпретатор файла moldb.xml:


    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().

    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() для получения кодов ошибки.



    xmlns:xsb"http-//www.w3 org/1999/XSL/Transfonn">
















    SxmlData ' '


    Learning Language

    I Myself

    Essential phrases:

    Hello.

    Good day.
    ';

    if (xslt_process($xs!Data. SxmlData. $resuH.O {

    echo "Here is the article:
    \n
    ", 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.

    

        Бизнес в интернете: Сайты - Софт - Языки - Дизайн