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

 

Переменные

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

get_defined_vars

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

array get_defined_vars (void )

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

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

empty

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

int empty (mixed var)

Возвращает FALSE, если переменная имеет непустое либо хорошее от нуля значение. Напротив возвращает TRUE. Реально функция проверяет, имеет ли переменная значение, которое может быть приравнено к 0, то есть: (var==0).

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

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

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

isset

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

int isset (mixed var)

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

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

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

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

См. также: 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".// выдает: ААА

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

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

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

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

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

См. также: 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)) { /* впрочем. Ошибочка */ } }

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

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

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(); } }

print_r

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

void printer (mixed expression)

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

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

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

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

var_dump

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

void var_dump (mixed expression)

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

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

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

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

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

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

is_scalar

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

bool is_scalar (mixed var)

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

is_null

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

bool is_null (mixed var)

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

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

Массивы

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

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

array

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

array array ([mixed ...])

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

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

Пример 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") ):

Пример 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 )

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

$firstquarter = arrayd => 'January'. 'February', 'March'); pnnt_r($firstquarter): Итог будет дальнейшим: Array ( [1] => 'January' [2] => 'February' [3] => 'March1 )

См. также 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"): $ Уупс - нечего добавить

range

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

array range (int low. irvt high)

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

$numbers = range (3.6): // сейчас Snumbers = array (3. 4. 5 б)

array_pop

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

mixed array_pop (array array)

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

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

array_ push

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

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

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

Для одного элемента действие равнозначно $array[] = $var;

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

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

array_shift

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

mixed array_shift (array a)

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

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

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

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

compact

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

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

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

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

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

extract

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

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

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

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

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

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

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

Пример допустимого совместного применения с функцией wddx_ deserialize():

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

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

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

count

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

int count (mixed var)

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

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

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

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

sizeof

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

int sizeof (array array)

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

array_count_values

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

array array_count_values (array input)

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

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

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

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; } }

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)

Пример алгорифма реализации функции 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 )

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

См. также 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-й элемент имеет нулевую позицию, а конечный тут (-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-й элемент имеет нулевую позицию, а конечный — (-1).

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

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

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

array_push (Sinput, $x, Sy)

array_splice (Sinput, count (Sinput), 0, array ($x, Sy))

array pop (Sinput)

array_splice (Sinput, -1)

array shift (Sinput)

array _splice (Sinput, 0, 1)

array unshift (Sinput, $x, Sy)

array splice (Sinput, 0, 0, array ($x, $y))

$a[$x] = Sy

array splice (Sinput, $x, 1, Sy)

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

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

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

reset

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

mixed reset (array array)

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

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

end

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

mixed end (array array)

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

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

next

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

mixed next (array arr)

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

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

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

prev

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

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

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

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

current

Определение нынешнего элемента массива

mixed current (array array)

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

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

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

pos

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

mixed pos (array array)

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

key

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

mixed key (array array)

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

each

Приобретение нынешнего элемента массива array each (array array)

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

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

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

Пример 1.

$foo = array ("bob", "fred". "jussi". "joum". "egon". "marliese"); $bar = each ($foo): // сейчас Sba1- = ( 0=>0, l=>'bob'. key=>0. value=>'bob' )

Пример 2.

$foo = array ("Robert" => "Bob'. "Seppo" => "Sepi"): $bar = each ($foo); // сейчас $bar = (0=>'Roberf . l-=>'Bob'. key=>'Robert1 .value => 'Bob')

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

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

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

array _walk

Использование функции к элементам массива

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

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

См. пример применения с функцией create_function().

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

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

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

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

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

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

array_reverse

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

array array_reverse (array a)

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

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

shuffle

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

void shuffle (array array)

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

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

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

sort

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

void sort (array array [, int sort_flags])

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

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

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

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

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

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

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

rsort

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

void rsort (array array [, int sort_flags])

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

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

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

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

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

asort

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

void asort (array array [, int sort_flags])

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

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

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

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

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

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

arsort

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

void arsort (array arr [, int sort_flags])

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

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

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

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

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

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

ksort

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

int ksort (array array [, int sort_flags])

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

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

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

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

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

krsort

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

int krsort (array array [, int sort_flags])

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

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

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

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

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

natsort

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

void natsort (array array)

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

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

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

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

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

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

natcasesort

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

void natcasesort (array array)

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

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

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

uasort

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

void uasort (array arr, function cmp_function)

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

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

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

uksort

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

void uksort (array array, function cmp_function)

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

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

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

20 twenty 10 ten 4: four 3: three 

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

usort

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

void usort (array array, string cmp_function)

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

См. пример применения с функцией create_function().

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

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

0: 6 
1: 5 
2: 3 
3 :2 
4 :1
//Пример 2" многомерный массив 
function cmp ($а. $b) { 
return stranp($a["fruit"],$b["fruit"]); } 
$fruits[0]["fruit"] - 
"lemons"; $fruits[l]L"fruit"l 
  = "apoles": $fruits[2]["frun"] - "grapes": 
usort($Truits. "cmp"); 
while (list ($key, Svalue) 
= each (Sfruits)) { 
echo "\$fruits[$key]: "
 . $value["fruit"] . "\n": } 

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

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

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

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

array_ multisort

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

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

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

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

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

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

Флаги типа сортировки (доводы тх):

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

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

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

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



Функции

get_defined functions

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

array get_defined_functions(void)

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

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

function_ exists

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

bool function exists (string function name)

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

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

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

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

call_user_func

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

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

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

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

create_function

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

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

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

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

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

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

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

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

func_get_arg

Приобретение довода функции

mixed func_get_arg (Int argjium)

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

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

<?php 
function foot) { 
Snumargs = func_num_args();
echo "Число доводов $numargs
<br>\n": 
if (Snumargs >= 2) j 
echo "2-й довод: 
" func_get_arg (1) . "<br>\n": } } 
foo (1. 2. 3): ?> 

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

func_get_args

Приобретение доводов функции в массиве

array func_get_args (void)

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

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

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

func_num_args

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

int func_num_args (void)

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

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

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

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

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

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

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

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

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

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

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

get_ declared_classes

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

array get_declared_classes (void)

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

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

class_ exists

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

booll_ class_exists (string class_name)

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

get_class_methods

Приобретение списка способов класса

array get_class_methods (string class_name)

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

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

get_class_vars

Приобретение списка свойств класса

array get_class_vars (string class_name)

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

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

get _class

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

string get_class (object obj)

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

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

get_parent_class

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

string get_parent_c!ass (object obj)

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

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

is_subclass_of

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

boot is_subclass_of (object obj, string superclass)

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

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

get_object_vars

Приобретение списка свойств объекта

array get_object_vars (object obj)

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

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

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

method_exists

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

bool method_exists (object object, string method_name)

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

call_ user_ method

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

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

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

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

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

 

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

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

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

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

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

Константа

Значение

Описание

М_Р1

3.14 159265358979323846

Пи

М_Е

2.7182818284590452354

E

M_LOG2E

1. 4426950408889634074

log_2 e

M_LOG10E

0.43429448190325182765

log_10 e

M_LN2

0.693 1471 8055994530942

log_e 2

М LN10

2.30258509299404568402

log_e 10

М PI 2

1.57079632679489661923

Пи/2

М_Р1_4

078539816339744830962

Пи/4

М_1_Р1

0.31330988618379067154

1/Пи

М 2 PI

0.63661977236758134308

2/Пи

M_SQRTPI

1.77245385090551602729

Sqrc(nn)

M_2_SQRTPI

1.12837916709551257390

2/sqrt(nii)

M_SQRT2

1 .4 1 42 1356237309504880

Sqrt(2)

M_SQRT3

1.73205080756887729352

Sqrt(3)

M_SQRT1_2

0.70710678118654752440

l/sqrt(2)

M_LNPI

1.144729885849400174)4

log_e(IIn)

M_EULER

0.57721566490153286061

Константа Эйлера

Алгебра

abs

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

mixed abs (mixed number)

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

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

max

Приобретение наибольшего довода

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

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

min

Приобретение наименьшего довода

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

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

round

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

double round (double val [, int precision])

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

$foo = round (34). // $foo ==30 $foo = round (3.5); // $foo ==40 $foo = round (1.95583. 2): // $foo == 1.96

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

floor

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

int floor (float number)

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

$foo = floor (I 95583): // $foo == 1

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

ceil

Дополнение дробного числа до дальнейшего целого

int ceil (float number)

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

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

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

Pi

Приобретение значения числа Пи

double pi (void)

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

sqrt

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

float sqrt (float arg)

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

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

log

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

float log (float arg)

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

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

log 10

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

float logl() (float arg)

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

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

ехр

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

float exp (float arg)

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

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

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

pow

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

float pow (float base, float exp)

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

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

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

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

srand

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

void srand (int seed)

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

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

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

getrandmax

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

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

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

rand

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

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

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

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

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

mt_srand

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

void mt_srand (int seed)

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

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

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

mt_ getrandmax

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

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

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

mt_ rand

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

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

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

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

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

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

lcg_value

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

double Icg_value(void);

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

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

sin

Приобретение синуса довода

float sin (float arg)

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

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

cos

Приобретение косинуса довода

float cos (float arg)

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

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

tan

Приобретение тангенса довода float tan (float arg)

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

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

asin

Приобретение арксинуса довода float asin (float arg)

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

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

acos

Приобретение арккосинуса довода

float acos (float arg)

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

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

atan

Приобретение арктангенса довода float atan (float arg)

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

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

atan2

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

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

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

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

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

base_convert

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

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

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

Sbinary - base_convert (Shexadecimal. 16. 2).

decbin

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

string decbin (int number)

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

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

dechex

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

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

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

decoct

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

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

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

bindec

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

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

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

hexdec

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

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

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

octdec

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

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

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

deg2rad

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

double deg2rad (double number)

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

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

rad2deg

Реформирование радианов в градусы

double rad2deg (double number)

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

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

number_ format

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

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

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

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

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

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

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

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

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

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

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

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

bcscale

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

string bcscale (int scale)

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

bcadd

Сложение

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

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

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

bcsub

Вычитание

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

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

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

bcromul

Умножение

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

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

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

bcdiv

Деление

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

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

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

bcmod

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

string bcmod (string left_operand, string modulus)

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

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

bccomp

Сопоставление

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

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

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

bcsqrt

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

string bcsqrt (string operand, int scale)

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

См. также bcpow()

bcpow

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

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

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

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

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

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

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

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

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

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

gmpjnit

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

resource gmp_init (mixed number)

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

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

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

gmp_intval

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

int gmp_intval(resource gmpnumber)

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

gmp_strval

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

string gmp_strval (resource gmpnumber [, int base])

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

gmp_ abs

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

resource gmp_abs (resource a)

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

gmp_sign

Приобретение знака числа

int gmp_sign (resource a)

Возвращает 1, если число позитивное, либо -1, если число негативное.

gmp_neg

Приобретение негативного значения числа

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

 

Арифметика

gmp_add

Сложение

resource gmp_add (resource a, resource b)

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

gmp_sub

Вычитание

resource gmp_sub (resource a, resource b)

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

gmp_mul

Умножение

resource gmp_mul (resource a. resource b)

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

gmp_div

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

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

gmp _div_q

Деление

resource gmp_div_q (resource a, resource b)

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

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

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

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

gmp_div_r

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

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

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

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

gmp_div_qr

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

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

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

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

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

gmp_mod

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

resource gmpjnod (resource n, resource d)

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

gmp_ divexact

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

resource gmp_divexact (resource n, resource d)

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

gmp_cmp

Сопоставление

int gmp_cmp (resource a, resource b)

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

Математика

gmp_fact

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

resource gmp_fact (int a)

gmp_sqrt

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

resource gmp_sqrt (resource a)

gmp_sqrtrm

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

array gmp_sqrtrm (resource a)

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

gmp_perfect_square

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

bool gmp_perfect_squar~e (resource a)

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

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

gmp_pow

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

resource gmp_pow (resource base, int exp)

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

gmp_powm

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

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

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

gmp_prob_prime

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

int gmp_prob_pnme (resource a [, Int reps])

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

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

gmp_ gcd

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

resource gmp_gcd (resource a, resource b) Возвращает неизменно позитивный итог.

gmp_ gcdext

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

array gmp_gcdext (resource a, resource b)

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

gmp_invert

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

resource gmp_invert (resource a, resource b)

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

gmp_ legendre

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

int gmpjegendre (resource a, resource p)

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

gmp_jacobi

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

int gmpjacobi (resource a, resource p)

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

gmp_random

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

resource grap_random (int limiter)

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

gmp_popcount

Приобретение популяции

int gmp_popcount (resource a)

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

gmp_ hamdist

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

int gmp_hamdist (resource a, resource b)

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

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

gmp_ and

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

resource gmp_and (resource a, resource b)

gmp_or

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

resource gmp_or (resource a, resource Из)

gmp_xor

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

gmp_setbit

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

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

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

gmp_ clrbit

Сброс бита

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

gmp_scan0

Поиск бита 0

Oint grap_scanO (resource a, int start)

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

gmp_scan1

Поиск бита 1

lint gmp_scanl (resource a, int start)

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

Дата и время

time

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

int time(void);

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

echo time(); // выводит, скажем: 987972956

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

microtime

Приобретение в строке нынешней метки времени «UNIX timestamp»

string microtime(void);

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

echo microtime(); // выводит, скажем 0.85738800 98772251

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

getdate

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

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

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

 print_r (getdate (time())),

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

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

localtime

Приобретение времени/даты в массиве

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

1-й довод функции timestamp — метка времени UNIX, если он не указывается, то применяется нынешнее время. Если 2-й довод (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 — англоязычный суффикс числа из 2-х букв, скажем: «th», «nd»;
  • l (крошечная 'L') — наименование дня недели по-английски; скажем: «Friday»;
  • D — трехбуквенное английское сокращение дня недели; скажем: «Fri»;
  • w — порядковое число дня в неделе, от «О» (воскресенье) до «6» (суббота);
  • z — порядковое число дня в году, от «О» до «365»;
  • т — месяц (2 цифры с нулями), от «01» до «12»;
  • п — месяц (1-2 цифры без нулей), от «1» до «12»;
  • F — английское наименование месяца, скажем: «January»;
  • М — трехбуквенное английское сокращение месяца, скажем: «Jan»;
  • t — число дней в указанном месяце, от «28» до «31»;
  • Y — год, 4 цифры; скажем: «1999»;
  • у — год, 2 цифры; скажем: «99»;
  • I (огромная i) — «1», если действует переход на «летнее время», напротив «О»;
  • L — «О», если год не високосный, либо «1», в отвратном случае;
  • В — «Swatch Internet time»;
  • Т — временная зона компьютера, скажем: «MDT» (доступна не неизменно);
  • U — целое число секунд, прошедших с момента начала эры UNIX (доступна не неизменно);
  • Z — смешение временной зоны в секундах (от «-43200» до «43200»).

Все остальные символы в строковом доводе format возвращаются в результирующей строке «как есть». Формат «Z» неизменно возвращает «О» при применении с функцией gmdate().

print (date ("1 dS of F Y h.i.s A")); //выводит: Monday 21th of April 2007 01:33:43 PM Дата и время 141 print ("1-е Июля. 2000 года - это: " . date ("I". mktime(0.0.0,7.1.2000))). //выводит: 1-е Июля. 2222 года - это- Saturday Stomorrow = mktime (O.O.O.dateC'm") .date("d")+l.date("Y")). Slastmonth = mktime (0.0.0.date("m")-l.date("d"). dateC'Y")); Snextyear = mktime (O.O.O.dateC'm"), dateC'd"). date("Y")+l):

Для форматирования дат в иных языках используйте функции setlocale() и strftime().

См. также: gmdate() и mktime().

gmdate

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

string gmdate (string format, int timestamp)

Функция подобна date(), за исключением того, что возвращается время по Гринвичу (Greenwich Mean Time — GMT). Скажем, при запуске в Финляндии (GMT +0200) первая строка напечатает «Jan 01 1998 00:00:00», а вторая: «Dec 31 1997 22:00:00».

echo date ("К d Y H:i.s". mktime (0.0.0.1.1.1998)): echo gmdate ("M d Y H.i s". mktime (0.0.0.1.1.1998)).

См. также: date(), mktime() и gmmktime().

strftime

Приобретение форматированной строки времени с применением локальных установок

string strftime (string format [, int timestamp])

Возвращает строку согласно формату, указанному в доводе format, для указанной в доводе timestamp метки времени (если метка времени не указывается, то применяется нынешнее время). Язык, на котором выводятся наименования месяцев и дней, устанавливается функцией set!оса!е(). В строке формата распознаются следующие спецификаторы:

  • %а — сокращение дня недели в языке по умолчанию; скажем, «Wed»;
  • %А — полное наименование дня недели в языке по умолчанию; скажем, «Wednesday»;
  • %b - сокращение наименования месяца в языке по умолчанию; скажем, «Apr»;
  • %В — полное наименование месяца в языке по умолчанию; скажем, «April»;
  • %с — формат латы времени в установках по умолчанию; скажем, «04/18/00 13:44:17»;
  • £С — номер столетия (год, деленный на 100 и без дробной части, от 00 до 99);
  • %d — число месяца (от 00 до 31);
  • %0 — эквивалент #m/£d/£y;
  • %е — число месяца (взамен незначащего нуля ставится пробел), от « 1» до «31»;
  • %h — аналог Яb;
  • %H— час в 24-часовом счислении (от 00 до 23);
  • %I — час в 12-часовом счислении (от 01 до 12);
  • %j — номер дня в году (от 001 до 366);
  • %т — номер месяца (от 01 до 12);
  • М - минуты;
  • %n — символ перехода на новую строку;
  • %р — «am» либо «рт» (до либо позже полудня), в зависимости от времени;
  • %г — время в 12-часовом формате (a.m. либо p.m.);
  • %R — время в 24-часовом формате;
  • %S — секунды;
  • %t — символ табуляции;
  • %Т — нынешнее время, равнозначно #H:#M:#S;
  • %и — число дня в неделе (от 1 до 7), где понедельник - 1;
  • %11 — номер недели в году (первое воскресенье года считается первым днем первой недели);
  • %V — номер недели в году по эталону ISO 8601:1988 (от 01 до 53), где первая неделя — та, в которой насчитывается больше 3 дней в нынешнем году;
  • %U — номер недели в году, начиная с первого понедельника, как первого дня первой недели;
  • %w — номер дня в неделе (от 0 до 6). Воскресенье считается нулем;
  • %х — представление даты в системном формате без указания времени; скажем, «04/19/01»;
  • %Х — представление времени в системном формате без указания даты; скажем, «14:06:26»;
  • %у — год без цифр столетия (от 00 до 99);
  • %Y — полное число года;
  • %Z — зона времени, имя либо сокращение, скажем «Московское время (лето)»;
  • %% — символ «%».

setlocale ("LCJIME". "С"): print (strftime ("%/\ in Finnish is ")). setlocale ("LCJIME". "fi_FI"): print (strftime ("3LA. in French ")): setlocale ("LCJIME". "fr_CA"); print (strftime ("$A и in German ")); setlocale ("LCJ-IME". "de_DE"). print (strftime ("ЛАЛп")):

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

См. также: setlocale(), mktime() и «Open Group specification of strftime()» (http://www.opengroup.org/onlinepubs/7908799/xsh/strftime.htmL).

gmstrftime

Форматирование локальных времени/даты

string gmstrftime (string format, int timestamp)

Действие функции аналогично strftimeO с тем различием, что возвращается время по Гринвичу (GMT). Скажем, при запуске в зоне (GMT -0500) первая строка будет дальнейшей: «Dec 31 1998 20:00:00», а вторая: «Jan 01 1999 01:00:00».

setlocale ('LCJIME'. 'en_US'). echo strftime ("%b Ы *Y *H:ZM:ZS". mktime (20.0.0.12 31.98)),"\n' . echo gmstrftime ("*b *d *Y XOM-XS". mktime (20.C.0.12 31.98))."\n";

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

mktime

Реформирование времени в целочисленный формат

int mktime (int hour, int minute, int second, int month, int day, int year [, int is_dst])

Доводы функции обязаны быть указаны в порядке: «час, минута, секунда, месяц, день, год, коррекция_времени>>, что зачастую путают. Не указывать дозволено только конечный довод is_dst (при неуказании большего числа доводов справа взамен них будут подставляться значения нынешнего времени). Функция возвращает метку времени «Unix timestamp», соответствующую указанным дате и времени (это целое число секунд, прошедших с 1 января 1970 года).

Довод is_dst, указывает, осуществлен ли переход на летнее время (1) либо нет (0); если это неведомо, то довод — (-1).

Функция пригодна при вычислении дат и их проверке, потому что она механически корректирует время при неправильном указании временных границ. Скажем, все следующие строки напечатают: «Jan-01-1998».

echo date ("M-d-Y". mktime (0.0.0.12,32.1997)): echo date ("M-d-Y". mktime (0.0.0.13.1.1997)). echo date ("M-d-Y". mktime (0.0.0.1.1.1998)): echo date ("M-d-Y". mktime (0.0.0.1.1.98)):

Год может быть указан двумя (0-69 обозначают 2000-2069 и 70-99 обозначают 1970-1999) либо четырьмя цифрами.

Конечный день месяца может быть указан как нулевой дальнейшего (но не как -1). Следующие строки выведут: «Последнее число Февраля 2000: 29».

Slastday • mktime (0.0.0.3.0.2000). echo strftime ("Последнее число Февраля 2000: И". Slastday). Slastday - mktime (0 0.0.4.-31.2000): echo strftime ("Последнее число Февраля 2000: Id", Slastday):

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

См. также: date ()и tirae().

gmmktime

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

int gmmktime (int hour, int minute, int second, int month, int day, int year [, int is_dst])

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

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

strtotime

Лексическое реформирование строки времени в «UNIX timestamp» int strtotime (string time [, int now])

Функция ждет получить дату time в англоязычном формате, дабы преобразовать ее в целочисленный формат «UNIX timestamp».

echo strtotime ("now") . "\n"; echo strtotime ("10 September 2000") "\n"; echo strtotime ("+1 day") . "\n" echo strtotime ("+1 week") . "\n"; echo strtotime ("+1 week 2 days 4 hours 2 seconds") . "\n":

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

Итог

print

Итог строки, значения переменной либо выражения

print (string arg)

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

См. также: echo(), printf() и flush().

echo

Итог одного либо нескольких значений

echo (string argl, string [argn]...)

Выводит значения перечисленных параметров.

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

echo "Hello World": echo "Перенос на следущую строку. имеющийся в коде, сохраняется и применяется при выводе". " дабы избежать этого используйте ". "оператор конкатенации": echo "This spans\nmultiple lines. The newlines will be\noutput as well.":

См. также: print(), printf() и flush().

printf

Итог отформатированной строки

int printf (string format [, mixed args...])

Выводит строку согласно формату, указанному в строковом доводе format, тот, что рассмотрен в изложении функции sprintf().

См. также: print(), sprintf(), sscanf(), fscanf() и flush().

sprintf

Форматирование строки с подстановкой переменных

string sprintf (string format [, mixed args...])

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

Строка форматирования может состоять из неопределенно длинной последовательности символов и директив: ординарных символов (это всякие символы, за исключением «%»), которые примитивно копируются в возвращаемую строку, и «спецификаций отображения», для всей из которых в функции должен быть указан соответствующий параметрт касается как функции sprintf(), так и printf().

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

  1. Добровольный спецификатор заполнителя, определяющий, каким символом будут дополняться строки до нужной длины. Это может быть пробел либо нулевой символ. По умолчанию применяется пробел. Альтернативные символы-заполнители могут быть >к.') юны, если перед ними ставится знак одинарной кавычки ('). Скажем, printf CTz5d",12); // выведет: zzz!2.
  2. Добровольный спецификатор выравнивания. Если он не указывается, ч о значение будет выравниваться по правой стороне, если он указан (как символ «а»), то по левой (действует не неизменно).
  3. Добровольный спецификатор ширины значения указывает минимальное число символов, которое должно выводиться в значении
  4. Добровольный спецификатор точности определяет, сколько цифр позже запятой должно выводиться для дробных чисел (для чисел других типов не действует). (Для форматирования чисел также пригодна функция number_format().)
  5. Спецификатор типа — уведомляет, в качестве какого типа должен рассматриваться довод. Допустимые типы:
  • X — сам знак процента;
  • b — целочисленный довод в двоичном формате;
  • с — выводит символ, целочисленный ASCII-код которого указан;
  • d — целочисленный довод в десятичном формате;
  • f — дробное число в формате числа с плавающей точкой;
  • о — целочисленный довод в восьмеричном формате;
  • s — довод выводится как строка;
  • х — целочисленный довод в шестнадцатеричном формате (с маленькими буквами);
  • X — целочисленный довод в шестнадцатеричном формате (с крупными буквами).

См. также: printf(), sscanf(), fscanf() и number_format().

Sisodate = spnntf ("M4d-M2d-M2d". Syear. $month. $day);

$formatted = sprintf (%01.4f. 68 75 + 54.35);

sscanf

Истолковывание строки согласно формату и занесение значений в переменные

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

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

// приобретение серийного номера Ssenal = sscanf ("SN/235-0001".nSN/*3d-«4d"): echo Sseria1[0]*lGOOO+$senal[l]; // выводит: 2350001 // и даты изготовления Smandate = "January 01 2000": list($month. $day. Syear) = sscanf(Smandate."%s Id %d"): echo "Дата: Syear-" substr($month.0.3)."-$day\n". // выводит: 2000-Jan-Ol

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

// генерировать XML запись из строки Sauth = "765\tLewis Carroll": $n = sscanf (Sauth. "*d\«s Zs" . &$id. &$first. &$last); echo "<author id='$id'> <f i rstname>$fi rst</firstname> <surnarne>$last</surname> </author>\n";

См. также: fscanf(), printf() и sprintf().

bin2hex

Реформирование символьных данных в шестнадцатеричный вид

string bin2bex (string str)

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

echo Din2hex("AaBblM"): // выводит. 4161426286а6

chr

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

string chr (int ascii)

$str = cnr (27). /* добавляет esc-символ в конец строки $str */ $str = sprintf ("Строка завершается esc-символои. 3tc". 27); Функция дополняет ord().

См. также sprintf ()с форматом %с.

ord

Приобретение ascii кода символа

int ord (string string)

Возвращает ASCII код первого символа строки string. Эта функция дополняет chr ().

if (ord ($str) == 10) { // символ «\n» echo "1-й символ строки \$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 указывать не следует, напротив будет возвращаться первая часть строки. При всяком вызове (включая 1-й) возвращается часть строки до разделителя агд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

Определение схожести 2-х строк

int similar_text (string first, string secOnd [, dOuble percent])

Функция вычисляет схожесть 2-х строк по алгорифму, описанному Оливером (Oliver [1993]). Но взамен стека (как в псевдокоде Оливера) она использует рекурсивные вызовы. Трудность алгорифма делает функцию неторопливой, и ее скорость пропорциональна (N3), где N — длина наибольшей строки.

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

levenshtein

Определение отличия Левенштейна 2-х строк 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»;
  • фактический символ первой строки;
  • фактический символ 2-й строки;
  • позиция строки 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 не строка, то тогда его значение преобразуется в целое и применяется как код желанного символа; если это строка, содержащая больше одного символа, то применяется 1-й.

// получить конечный каталог в $РА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 — не строка, то тогда его значение преобразуется в целое и применяется как код желанного символа; если это строка, содержащая больше одного символа, то применяется 1-й.

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

Если 1-й символ строки — строчная буква, то в возвращаемой строке она становится заглавной. Символы кириллицы могут быть ненормально конвертированы.

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

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

$trans = array ("hello" => "hi", "hi" => "hello"): echo strtrC'hi all. ! said hello". Strans) . "\n": // выведет "hello all I said hi".

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

str_replace

Замена фрагментов

string str_replace (string needle, string str, string haystack)

Возвращает строку haystack, в которой все фрагменты needle заменены значением строки str. Также функция может трудиться с двоичными строками. Эта функция в примитивных случаях может благополучно заменить ereg_replace().

Sbodytag = str_replace ("*body_coU". "black". "<body color^body_coU>"):

См. также: ereg_replace() и strtrt).

substr_ replace

Замена части строки

string substr_replace (string string, string replacement, int start [, int length])

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

Если значение start позитивно, отсчет производится от начала строки string, напротив — от конца (-1 — конечный символ строки).

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

 <?php 
$var = 'ABCDEFGH:/MNRPQR/': 
echo "Original: $var\n": 
/* замена строки целиком (от 0 символа до 
последнего) */ echo substr_rep1ace 
($var, 'bob1. 0) "<br>\n". echo substr_replace ($var. 
 'bob'. 0. strlen ($var)) "<br>\n"; 
// выводит: bob<br> 
/* вставить 'bob' в начале строки $var. */ 
echo substr_replace ($var. 'bob'. 0. 0) . 
"<br>\n": 
// выводит: bobABCDEFGH:/MNRPQR
/<br> 
//* замена 'MNRPQR' в $var на 'bob' */
 echo substr_replace ($var. 'bob'. 
10. -1) . "<br>\n". echo substr_rep1ace ($var. 'bob'. 
 -7. -1) . "<br>\n": // выводит:
 ABCDEFGH:/bob/<br> 
/* удаление 'MNRPQR' из $var. */ 
echo substr_replace ($var. ", 10. -1) .
 "<br>\n": 
// выводит: ABCDEFGH-//<br> 
C. 1 ?> 

См. также: str_replace() n substr().

Трудные манипуляции

addslashes

Добавление слешей перед особыми символами строки

string addslashes (string str) .

Возвращает строку, в которой перед символами, имеющими особое значение для строк, вставляется слеш. Такими символами являются: одиночная (') и двойная (") кавычки, обратный слеш (\) и нулевой байт NUL (\0). Это зачастую требуется, дабы после этого верно передать строку в запросе к базе данных и т. д.

См. также: stripslashes(), htmlspecialchars() и quotemeta().

addcslashes

Форматирование строки слешами в С-представление

string addcslashes (string str, string charlist)

Возвращает строку str, в которую вставлены символы обратного слеша «\» перед перечисленными в строке-списке charlist символами. Это разрешает преобразовать непечатные символы в их визуальное С-представлсние.

В примере, приведенном ниже руководящие символы: «\n>>, «\r», и другие с кодами ASCII до 32 и выше 126, а также знак восклицания и «собака», конвертируются в их особое либо восьмеричное представление. Будьте осмотрительны с алфавитно-цифровыми символами и кодами (скажем, символы кириллицы имеют коды выше 126). Строка charlist содержит диапазоны кодов в формате "\0..\37", что в данном случае обозначает: коды от 0 до 31.

$not_escaped = " Эта строка \t is (@) much complex \r to \x9f be \n presented! \n\n". echo $not_escaped. Sescaped = addcslashes ($not_escaped. "\0 .\37!@\177..\377"): echo Sescaped;

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

Эта строка is (@) much complex to Я be presented1 \235\342\240 \341\342\340\256\252\240 \t is (\@) much \r\n complex \r to \237 be \n presented\!\n

См. также: stripcslashes(), stripslashes(), html special chars(), htralspe-cialchars() и quotemeta().

stripslashes

Удаление обратных слешей

string stripslashes (string str)

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

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

stripcslashes

Реформирование особых символов в их двоичное представление string stripcslashes (string str)

Возвращает строку, в которой те особые символы, которые закомментированы (для визуального отображения) обратным слешем, преобразуются в их обычное двоичное представление. Распознаются С-сходственные записи, скажем: \n, \r ..., восьмеричные и шсст-надцатеричные последовательности.

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

quotemeta

Цитирование метасимволов string quotemeta (string str)

Возвращает строку str, в которую добавлены обратные слеши «\» перед всем из следующих символов:

\\ + *?["]($)

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

См. также: addslashes(), htmlentities(), htmlspecialchars(), nl2br() и stripslashes().

wordwrap

Расстановка переносов строк по ширине

string wordwrap (string str [, int width [. string break [, int cut]]])

Возвращает строку str, в которой расставлены символы перехода на новую строку («\п» либо тот, тот, что указан доводом break), таким образом, что число символов на строке не превышает значения width (по умолчанию оно равно 75). Перенос осуществляется по словам; если указывается параметр cut, равный 1, то перенос строки выполняется неизменно, как бы длинно слово ни было.

$text = "The quick brown fox jumped over the lazy dog "; Snewtext = wordwrapf Stext. 20 ); echo "$newtext\n";

Будет выведено

The quick brown fox jumped 
over the lazy dog. 

Дальнейший пример показывает применение последнего довода cut=l:

Stext = "A very long woooooooooooord ".
 Snewtext = wordwrap! 
 $text. 8. "\n". 1). echo "$newtext\n": 

Будет выведено

 A very long 

wooooooo ooooord

См. также: nl2br(), chunk_split().

convert_cyr_string

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

string convert_cyr_string (string str, string from, string to)

Доводы from и to — одиночные символы, представляющие соответственно начальную и целевую кодировки. Поддерживаемые типы кодировок, используемые в доводах from и to:

  • k — koi8-r;
  • w — windows-1251;
  • i — iso8859-5;
  • a — x-cp866;
  • d — x-cp866;
  • m — x-mac-cyrillic.

hebrev

Конвертация логичного текста Hebrew в отображаемый

string hebrev (string hebrew_text [, int max_chars_per_line])

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

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

hebrevc

Аналог функции hebrev с расстановкой переносов

string hebrevc (string hebrew_text [, int max_chars_per_"hne])

Функция сходна с hebrev() с тем различием, что она преобразует символы перевода строк «\п» в «<br>\n». Добровольный довод тах_ chars_per_line указывает число символов на строку итога. Функция пытается избежать обрыва слов.

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

quoted printable decode

Реформирование цитированной строки в 8-битную

string quoted_printable_decode (string str)

Функция сходна с imap_qprint(), но не требует модуля ШАР.

Функции URL

parse_url

Распределение строки URL на ее компоненты

array parse_ur! (string url)

Возвращает ассоциативный массив, содержащий разные присутствующие в URL компоненты. Такими компонентами могут быть: «scheme», «host», «port», «user», «pass», «path», «query» и «fragment».

parse_str

Занесение строки URL в переменные

void parse_str (string str [, array arr])

Интерпретирует строку str, как если бы эта строка содержала переменные и их значения и передавалась в URL; устанавливает для обнаруженных переменных значения. Если указывается 2-й довод, то значения сохраняются не в глобальных переменных, а в элементах указанного массива.

$str = "first=val33&second[]=
trns+works&second[]=another" 
parse_str($str). 
 parse_str($str.$ar). 
echo Sfirst: /* выводит "va!33" */ 
echo $secona[0]. 
/* выводит "this works" */ 
echo $second[l]. /
* выводит "another" */ 
print_r($ar): 
 * выводит: 
[first] => va!33 [second] =>
 Array ( [0] => this works [1] => 
another ) */ 

rawurlencode

Кодирование URL

string rawurlencode (string str)

Возвращает строку, в которой вес не алфавитно-цифровые символы (за исключением дефиса «-», знака подчеркивания «_» и точки «.») заменены последовательностями: знак процента (%), за которым следуют две шестнадцатеричпыс цифры (обозначающие код символа). Схема этого кодирования описана в файле RFC1738, и она предуготовлена для того, дабы буквенные символы не обрабатывались в качестве разделителей строки URL и не искажались при передаче в сетях (что свойственно для некоторых систем электронных сообщений).

echo '<A HREF="ftp://user: ' . rawurlencode (Smypasswd). '@ftp.my.com/x.txt">' . // передача пароля в гиперссылке

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

echo '<A HREFz"http://x 
com/department_list_sc'"ipt/' .
rawurlencode ('sales и
 marketing/Miami '). '">': 

См. также: rawurldecode(), urldecode(), urlencode().

rawurldecode

Декодирование URL

string rawurldecode (string str)

Возвращает строку, в которой последовательности со знаком процента «%» с последующими двумя шестнадцатеричными цифрами заменяются соответствующими данному коду символами. Скажем, строка:

fool20bart40baz

преобразуется в

 foo bargbaz 

См. также: rawurlencode(), urldecode(), urlencode().

urlencode

Кодирование строки в URL

string urlencode (string str)

Возвращает строку, в которой все не алфавитно-цифровые символы (за исключением дефиса «-», знака подчеркивания «_» и точки «.») заменены последовательностями: знак процента (%), за которым следуют две шестнадцатеричные цифры (обозначающие код символа), а символ пробела заменен на знак «+». Именно таким образом кодируются все данные, посылаемые HTML-формами. Медиа-тип этого кодирования обозначается как application/x-www-form-urlencoded; он отличается от эталона кодирования RFC 1738 (ем. функцию rawur-lencode()) тем, что, по историческим причинам, пробелы заменяются па знак плюс. Эта функция комфортна при кодировании строки для применения в строке запроса, являющейся частью URL, и при передаче переменных на следующую страницу:

echo '<А HREF="mycgi?foo=', urlencode (Susennput). '">': РОЮ ra-yurl encode С foo М/ЯгЛ?&#'). // выводит f6o«20Z405!28 «25Z2R886«5CJ!3lrZ26Z23 echo urlencode ('foo @+l/»\\7&#'); // выводит foo+X40X2B3;25*2F*86*5a3F*26*23

Будьте осмотрительны с передачей переменных (в ссылках), которые могут совпасть с зарезервированными в HTML словами (скажем: Samp, Scopy и Spound — интерпретируются браузером и замещаются соответствующими символами).

См. также: urIdecode(), htmlentities(), rawurldecode(), rawurlencode().

urldecode

Декодирование строки из URL

string urldecode (string str)

Декодирует в строке последовательности %## (так в URL кодируются спецсимволы).

$а = split ('&'. Squerystnng): $i=0 while ($1 < count (la)) { $b - split (' = '. $a [ii i;. echo 'Value for parameter '. htmlspecialchars (urldecode ($b [0])). ' is '. htrnlspecialchars (urldecode ($b [I].)). "<BR>"; $1++; }

См. также: urlencode(), rawurlencode(), rawurldecode().

base64_encode

Кодирование строки в формат base64

string base64_encode (string data)

Возвращает закодированную метолом «base64» строку data. Это кодирование предуготовлено для того, дабы передаваемые двоичные данные могли верно (без искажений) передаваться системами, изменяющими 8-й бит, скажем при передаче двоичных данных в теле сообщении электронной почты. При этом кодировании размер данных возрастает на треть.

См. также: base64_decode(), chunk_split"(), RFC2045.

base64_decode

Декодирование строки из формата base64

string base64_decode (string encoded data)

Декодирует закодированную строку encoded_data и возвращает подлинные данные (они могут быть двоичными).

См. также: base64_encode(), RFC2045.

HTML-конвертации

nl2br

Форматирование HTML-переносов строк string nl2br (string string)

Возвращает строку, в которой перед всяким символом перевода строки (newline) «\n» вставляется последовательность <BR>.

См. также: htmlspecialchars(), htmlentities() и wordwrap().

strip_tags

Удаление из строки тегов

string strip_tags (string str [, string allowablejtags])

Возвращает строку str, из которой удалены все HTML- и PHP-теги. Незавершенные и фальшивые теги вызывают ошибку. Схема, по которой производится удаление тегов, такая же, как и в функции fgetss().

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

get_meta_tags

Извлечение содержимого метатегов из файла в массив

array get_meta_tags (string filename [, int use_include_path])

Функция открывает файл filename и интерпретирует его построчно, находя теги <meta>:

<meta name="author" content="name"> <meta name="tags" content="php3 documentation'> </head> <!-- Тут функция завершается -->

В возвращаемом массиве индексами становятся значения признака name, а самими значениями — значения признака content. Спецсимволы в значении признака name заменяются на знак подчеркивания «_», а алфавитные символы преобразуются в нижний регистр.

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

get_html_translation_table

Приобретение таблицы трансляции, применяемой функциями htmlspecialchars() и htmlentities()

string get_html_translation_table (int table [, int quote_style])

В доводе table указывается, какую таблицу трансляции нужно получить: HTML_SPECIALCHARS (для функции htmlspecialchars()) либо HTML_ENTITIES (для функции htmlentities()). Дозволено также указать добровольный довод quote_style (no умолчанию — ЕМТ_СОМРАТ), его изложение приведено в функции htmlspecialchars().

$trans get_html_translation_table (HTMLJNTITIES): $str = "< A & В >". Sencoded = strtr ($str. Strans), // сейчас Sencoded = "&lt; A &amp; В &gt."

Изредка комфортно применять функцию array_f!ip() для метаморфозы направления трансляции.

Strans = array_flip (Strans): Sorlginal = strtr (Sencoded. Strans):

См. также: htmlspecialchars(), htmlentities(), strtr() и array_flip().

htmlspecialchars

Конвертация спецсимволов в HTML-представление

string htmlspecialchars (string string [, int quote_style])

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

  • & (амперсант) становится &атр;
  • " (двойная кавычка) становится &quot; при quote_style <> ENT_ NOQUOTES;
  • ' (одиночная кавычка) становится &#039; при quote_style = ENT_ QUOTES;
  • < (знак поменьше) становится &lt;
  • > (знак огромнее) становится &gt;
 $new = htmlspeciaichars("<a href='test'>Test</a>". ENT_QUOTES). 

Функция комфортна для предотвращения неправильного итога текста, введенного пользователем, если он содержит элементы форматирования HTML (скажем, в досках объявлений, гостевых книгах, чатах). Добровольный довод quote_style указывает, как поступать с кавычками: режим по умолчанию ЕМТ_СОМРАТ, служащий для обратной совместимости, разрешает трансляцию только двойных кавычек; ENT_QUOTES разрешает трансляцию всяких кавычек; a ENT_NOQUOTES воспрещает трансляцию всяких кавычек.

Такую же операцию изготавливает функция htmlentities().

См. также: html entities ()и nl2br().

htmlentities

Конвертация символов, имеющих HTML-представление

string htmlentities (string string [, int quote_style])

Функция подобна htmlspecialchars() с тем различием, что она изготавливает не выборочную трансляцию, а полную — для всех символов, которые могут иметь равнозначные HTML-представления. Добровольный довод quote_style указывает, как поступать с кавычками: режим по умолчанию ENT_COMPAT, служащий для обратной совместимости, разрешает трансляцию только двойных кавычек; ENT_ QUOTES разрешает трансляцию всяких кавычек; a ENT_NOQUOTES воспрещает трансляцию всяких кавычек. В текущее время применяется кодировка ISO-8859-1.

См. также: htmlspecialchars() и nl!2br().

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

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

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

/шаблон/модификаторы

Ограничителями могут служить: прямые слеши «/», а также всякие не алфавитно-цифровые символы, помимо обратного слеша «\». Зачастую в качестве ограничителей служат символы: \, %, $. Завершающий ограничитель должен быть представлен тем же символом, что и начинающий; ограничитель должен быть первым символом регулярного выражения. Если нужно применять символ, выбранный ограничителем в образце, ему должен предшествовать обратный слеш «\» (скажем: «/\d{l,2}V\d{2}/»).

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

Sbegin = "OOps"; Spattern = "/Sbegnn/".

Сейчас образец Spattern будет искать последовательность Oops в любом месте текста взамен ожидаемого фрагмента begin в начале текста. В данном случае строку следует записывать как Spattern = "ASbegin/"; либо как: Spattern = '/$begin/':. Сходственных примеров дозволено привести уйма, следственно не брезгуйте заглянуть в раздел «Типы: Строки», дабы припомнить, как РНР интерпретирует строки, и, в частности, как следует применять слеши.

Синтаксис образца

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

Метасимвол

Значение

\

подстановка;

.

любой символ: [*\n] либо [\0-\xFF];

I

альтернатива;

0

ограничители подшаблона;

|]

ограничители класса символов;

{}

числители повторения «от X до У раз»;

?

числитель «1 либо 0 раз»; либо мишшизатор числителя; либо растяжение значения метасимвола «(»;

*

числитель «0 либо больше pa:i>>;

+

числитель «1 либо больше раз»;

<

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

$

претензия «в конце строки».

В классах символов метасимволом является знак диапазона «минус» (-), а метасимвол инвертирует класс способом «все символы, помимо указанных».

Традиционно пробелы в образце рассматриваются как значащие. При установке же модификатора х все пробелы в образце и все символы от знака # и до конца строки понимаются как комментирующие. Тем не менее, в классах символов пробел и знак # неизменно являются значащими. В маркерах особых подшаблонов не допускается применение пробелов, потому что тогда нарушается толк маркеров (сравните: (?<= ххх) и (? < = ххх)).

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

'% < ([*> ]+) (['>]*) > # открывающий тег (и признаки тега) (.*) # содержимое тега < / \1 > # закрывающий тег £xis'

равнозначен образцу:

'*<(Г> ]+)(Г>]*)>(.*Н?#содержимое Tera)</\l>*is'

Дальше рассматриваются методы применения метасимволов.

Подстановки

Символ (\) помимо операций подстановки, рассмотренных ниже, применяется для перевоплощении метасимволов в обыкновенные. Скажем, для того, дабы применять точку в образце как «точку», а не как «оператор подстановки всякого символа», перед ней следует ставить слеш (\). Так же желанно поступать со всеми спецсимволами (то есть не являющимися буквенно-цифровыми), даже если они и не являются метасимволами. (При установленном модификаторе х слешем также следует предварять пробел и символ #, если только они не обозначают комментарий.)

Подстановки, обозначаемые символом обратного слеша (\), бывают пяти видов.

1. Подстановка непечатного символа.

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

  • \а - символ BEL (07 в ASCII);
  • \е — символ escape (hex IB в ASCII);
  • \f — символ прогонки страницы formfeed (hex ОС в ASCII);
  • \n — символ перевода строки newline (hex OA в ASCII);
  • \г — символ возврата каретки (hex OD в ASCII);
  • \t — символ табуляции (hex 09 в ASCII);
  • \сх — символ «Control-X», где х — всякий буквенный символ.

Фактическое же действие последовательности \сх следующее: если «х» в нижнем регистре, он преобразуется в верхний, после этого бит 6 (hex 40) этого символа инвертируется. Таким образом «\cz» становится шестнадцагеричным 1А, а «\с{»становится \хЗВ, тогда как «\с;» становится \х7В.

2. Подстановка символа с указанным кодом.

Для подстановок этого вида применяются две записи:

  • \хшш, где шш — одна либо две шестнадцатиричных цифры, буквы дозволено указывать в верхнем либо нижнем регистре;
  • \ДДД, где ДДД — одна-три восьмеричных цифры.

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

3. Подстановка фрагмента совпадения с подшаблоном (обратная ссылка).

Указываются в виде: \ДД, где ДД — одна-две десятичных цифры (1-99) без незначащих нулей. Таким образом, обратных ссылок не может быть больше 99. См. подробную информацию в разделе «Подшаблоны».

4. Подстановка класса символов.

  • \d — всякий цифровой символ, [0-9];
  • \0 — всякий НЕцифровой символ, [*0-9];
  • \s — всякий пробельный символ, [\t\ \r\f\n];
  • \S — всякий НЕпробелышй символ;
  • \w — всякий алфавитно-цифровой символ;
  • \W — всякий НЕалфавитно-цифровой символ.

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

Эти подстановки дозволено включать в класс символов.

5. Обозначение всеобщего вида жалоб.

  • \b — «на границе слова»;
  • \В — «не на границе слова»;
  • \А — в начале текста;
  • \Z — в конце текста либо перед символом перевода строки;
  • \z — в конце текста.

Последовательности \А, \Z и \z, в различие от метасимволов $ и А, действуют вне зависимости от режима многострочности (см. модификатор т).

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

См. также раздел «Претензии».

Если позже слеша указывается буква и эта последовательность не имеет особого значения подстановки, обыкновенно слеш игнорируется и последовательность понимается как обыкновенная буква. При установке же модификатора X такая последовательность вызывает ошибку. Это сделано для того, дабы в будущем, если когда-то такая последовательность приобретет особое значение, она не применялась бы ненамеренно.

Альтернативы и классы символов

Возможен, в тексте необходимо обнаружить слово: «АА», «Бб» либо «ВвВ», тогда в образце следует указать 'АА|Бб|ВвВ', применяя как обозначение альтернативы знак |, Возможно всякое число альтернатив и пустая альтернатива (соответствующая пустому фрагменту). Перебор альтернатив производится слева направо, и применяется первая подходящая.

Для комфорта дозволено заключать список альтернатив в скобки (то есть образовывать, таким образом, подшаблон), и в будущем ссылать-ся на обнаруженную альтернативу с подмогой обратной ссылки. Скажем, образец: '*<(Н1|Н2|НЗ)>( .*)</\\l>*imUs' будет искать содержимое тегов заголовков.

Изредка нужно искать символ, тот, что может принимать разные значения, тогда применяется класс символов, обозначаемый символами «[» и «]». Дабы применять символ ] в классе символов в качестве «самого себя», следует ставить перед ним слеш: \].

Если 1-й символ класса «А», то это обозначает: «всякий символ, помимо тех, которые указаны в классе». Символ минус обозначает (если он не является первым либо последним символом класса) символьный диапазон. Скажем, класс [лО-9] соответствует любому нецифровому символу (также дозволено записать как [А\хЗО-\х39]). Всякую английскую букву дозволено указать как [a-z] |[A-Z]'. Если нужно включить в класс символы «А» и «-», то 1-й не должен быть первым символом класса, а 2-й должен стоять в начале либо конце класса.

В классе символов либо взамен них допускается применение подстановок: \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-й числитель должен быть поменьше второго. Взамен распространенных числителей дозволено также указывать их заменители:

Заменитель числителя

Значение

Эквивалент

у

« 1 либо 0 раз»

{0,1}

*

«0 либо больше раз»

{0,}

+

«1 либо больше раз»

1.}

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

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

<Р> Текст <Р> абзаца</Р> со вложениями </Р>

Тогда образец /<p>(.*)<\/p>/i может (теоретически) воротить 4 варианта совпадения. По умолчанию ищется наивысшее повторение (то есть в данном варианте — строка целиком). Дабы находилось минимально повторяющееся значение, используйте модификатор U. Для снижения «жадности» не всех числителей а только избранных ставьте позже них знак вопроса, скажем: /<p>(.*?)<\/p>/i; данный метод изменяет «жадность» числителя на противоположную от стержневой.

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

Подшаблоны и обратные ссылки

Сами по себе подшаблоны (части образца, арестанты в круглые скобки) не влияют на функционирование регулярных выражений и могут служить экстраординарно для комфорта группировки (они могут быть вложенными). Подшаблон может применяться для ограничения комплекта альтернатив. При применении же с обратными ссылками подшаблоны являются действенным инструментом поиска. Скажем, для поиска содержимого парных тегов может применяться запись: *<([*>]*)>(.*)</\\1>*.

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

Подметьте, взамен ссылки подставляется фрагмент реального текста; скажем, регулярное выражение /слов(о|а) и числ\1/ будет подходить фразе: «слово и число» и «слова и числа», но не «слова и число»; а регулярное выражение /(A+)6\l/i не будет подходить строке «Аба», правда и указано пренебрежение регистра.

Ссылка может быть использована тогла и в том месте образца, когда ей теснее дозволено будет однозначно сопоставить фрагмент текста. Скажем, конструкции (а\1) и (а|(b+))\2 неправильны.

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

(.*), (.)*, ([abc]*), ([abc])* (\2|\1+), (\2|\1)+.

Когда на подшаблон не имеется ссылок, его дозволено пометить указанием позже открывающей скобки последовательности ?:, это исключает подшаблон из списка ссылок. Скажем, регулярное выражение /a((b+)(?:c*))(d?)/ будет иметь три ссылки: 1 -- на подшаблон ((b+)(?:с*)), 2 — на (b+) и 3 —.на (d?). Это может применяться для увеличения всеобщего числа подшаблонов до 200 (99 со ссылками и 101 без них). В такой форме записи становится допустимым указывать внутренние модификаторы между ? и :, скажем: (?i:c|e|) равнозначно (?:(?i)c|e|).

При необходимости указания внутри образца комментария (и допустимом нежелании применять модификатор х) возможно исполь-

зовать подшаблоны комментариев (?#мой комментарий), игнорируемые при обработке.

Жалобы

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

Простейшие из них " и $ обозначают, что фрагмент должен находиться соответственно в начале либо в конце текста. Так, образец /*А/ указывает на то, что ищется символ «А» в начале текста, а образец /Z$/ на то, что ищется символ «Z» в конце текста. Как видно из примеров, сами символы л и $, обязаны находиться соответственно в начале либо конце образца. Образец /привет$/ будет проверять, состоит ли текст целиком из слова «привет».

У этих жалоб есть одна специфика: что считать началом и концом текста (строки)? Установка модификатора m указывает на то, что конец и предисловие строки могут обозначаться символом (\п). Скажем, образец /~А/т ищет букву «А» либо в начале текста, либо позже всего символа (\п). При установленном модификаторе D знак $ обозначает экстраординарно фактический конец текста, напротив же (если указан модификатор т) он также может обозначать конец строки, то есть то, что непринужденно позже фрагмента должен следовать символ перевода строки (\п). В различие от модификатора D, влияющего только на жалобу конца строки, модификатор m влияет на обе. Если текст не содержит символов перевода строки, эти модификаторы не имеют значения.

Следующими жалобами, аналогичными описанным выше, являются подстановки \А, \Z, \z, обозначающие соответственно фактическое предисловие текста, конец текста либо перевод строки, и фактический конец текста. Эти жалобы не зависят от модификаторов. Скажем, образец /\A.*T\Z.+\z/ra будет искать символ «Т» в конце строки, но не текста.

Дополнительными схожими жалобами являются подстановки \b и \В, обозначающие соответственно «на» и «не на» границе «слова». Словом считается последовательность, ограниченная пробельными символами (включая переводы строк) либо началом либо концом текста. А рубежом — интервал между двумя символами, один из которых пробельный, а иной нет. Скажем, образец /\bпре(\^)ый\b/ ищет все слова, имеющие приставку «пре-» и окончание «-ый».

Больше трудные виды жалоб указываются в виде подшаблонов, и они добавочно проверяют фрагмент текста до либо позже точки совпадения:

  • (?=текст) — текст позже точки совпадения должен соответствовать указанному;
  • (?!текст) — текст позже точки совпадения не должен соответствовать указанному;
  • (?<=текст) — текст до точки совпадения должен соответствовать указанному;
  • (?<!текст) — текст до точки совпадения не должен соответствовать указанному.

Их различие от простого указания последовательностей в подшабло-не в том, что фрагмент совпадения с такой жалобой не возвращается в итоге. Скажем, образец /(?<=\()\w+(?=\))/ возвращает любое слово, стоящее в скобках без пробелов, но сами скобки не возвращаются.

В жалобах допустимо указывать альтернативы и все то, что может применяться в обыкновенных образцах, помимо повторений. Для жалоб предшествия альтернативы не обязаны иметь неопределенную длину, скажем, дальнейшая жалоба возможна: (?<lа[bс), в то время как недопустимы: (?<!а(а be)) и (?<lа?|bс).

Возможно применять последовательности жалоб, скажем (?<=\d{3}) (?<!000)\w соответствует слову, которому предшествуют три цифры, не являющиеся единовременно нулями. Таким образом, дозволено изготавливать бесчисленные проверки одного места совпадения.

Также допустимы вложения, скажем (?<=(?<!вв)ББ)аа будет соответствовать фрагменту «ББаа», но не «ввББаа». На подшаблоны жалоб ссылки не указываются.

Особые конструкции подшаблонов

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

Следственно в подшаблонах допустимо применять последовательности, блокирующие последующий перебор повторений подшаблона позже того, как теснее было обнаружено первое соответствие фрагменту текста. Такие подшаблоны маркируются последовательностью позже открывающей скобки. Модификаторы «жадности» сберегают при этом свое значение. Иными словами, взамен того, дабы семь раз отмерять, мы сразу нарезаем строку на фрагменты.

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

Возможен, нужно определить, оканчивается ли длинный текст на символы «Хх». При обыкновенном образце /Хх$/ проверка будет проходить от начала текста (вначале будет искаться символ, а потом определяться, стоит ли он в конце). Если усложнить образец до Г(. .*)Хх$/, это не крепко ускорит обработку, потому что крупную часть времени будет перебираться повторение первого подшаблона, и только потом определяться окончание текста. Если же написать образец как: /А(?>.*)(?<=Хх}$/, то 1-й подшаблон сразу же захватит каждый текст целиком, а после этого будет проверено окончание.

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

(? (условие) подшаблон!) либо (?(условие)подшаблон1|подшаблон2).

При выполнении данные применяется 1-й подшаблон, в отвратном случае (если он указан) — 2-й. Данные бывают 2-х типов.

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

/ ( ( \( )? # необязательная открывающая скобка ( [*()]+ ) # все. помимо скобок С?(2) \) )# если была открывающая скобка, должна быть закрывающая )+ I повторим? /х

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

/ (?(?=х) # если префикс х [\da-fA-F]+ # то шестнадцатеричное число Синтаксис регулярных выражений (PCRE) I \d+ # напротив - десятичное ) /x

Модификаторы

Функционирование регулярных выражений дозволено видоизменять модификаторами 3 ярусов: глобальными, внешними и внутренними.

Модификатор

Внутреннее имя

Воздействие

i

PCRE_CASELESS

Игнорировать регистр

S

PCRE_DOTALL

Точка = [\0-\xFF], а не [А\п]

и

PCRE_UNGREEDY

Минимизировать числитель

га

PCRE_MULTILINE

А, $ рассматривают \п

D

PCRE_DOLLAR_ENDONLY

$ не рассматривает \п

А

PCRE_ ANCHORED

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

е

 

Только для preg_rep!ace()

X

PCRE_EXTENDED

Разрешить комментарии: пробел и #

X

PCRE_EXTRA

Воспринимать неверную подстановку как ошибку

S

 

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

Значение модификаторов и их применение описаны в соответствующих разделах.

Модификатор га владеет огромным приоритетом, чем 0. Модификатор А предуготовлен для убыстрения обработки, но больше выигрышно очевидное проектирование оптимизированных образцов, скажем /.*шаблон/з для однострочного текста.

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

Модификаторы i, m, s, x, U, X дозволено устанавливать внутри образца, внутри подшаблона модификаторов (? ... ), позже знака вопроса. Если в таком подшаблоне присутствует знак «минус», то модификаторы, стоящие за ним, сбрасываются. Действие таких модификаторов распространяется на интервал образца от места его указания до его дальнейшего допустимого указания (со знаком минус) либо до конца образца. Скажем: /аб(?51)вгде(?х-1т)ж(?тт: .*)з/га. При указании внутренних модификаторов внутри подшаблона их действие (в различие от Perl) распространяется только на данный подшаблон. Скажем, образец /(а(?1)б)в/ соответствует только фрагментам «абв» и «аБв», а образец /(а(?1)б|г)/ соответствует фрагментам: «аб», «аБ», «г» либо «Г».

Функции регулярных выражений (PCRE)

pregjnatch

Одиночный систематический поиск

int pregjnatch (string pattern, string subject [, array matches])

Ищет в тексте, указанном доводом subject, соответствие образцу, указанному в pattern. Если совпадение находится, то функция возвращает TRUE, в отвратном случае — FALSE.

При указании в доводе matches массива (одномерного) он заполняется обнаруженными фрагментами совпадения. $matches[0] будет содержать фрагмент, совпадающий с полным образцом, $matches[l] -совпадение с первым подшаблоном и т. д.

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

if (pregjnatch ("/XX/i". "уу Хх хухх")) { // игнорировать регистр print "Найдено" } else { rint "Бесплодный поиск". if (preg_match C7\bxx\b/i" . "уу Хх лухх")) // искать слово '<хх» print "Найдено": else print "Бесплодный поиск"; preg_match("r(http "http-//www php.net/index.html", Smatches): $host = $matches[2]: //должно содержать: www.php.net // обнаружить имена 2-х последних доменов сервера preg_match("/r\.\/]-t-\.r\.\/]+$/".$host.$matches): echo "domain name is: ".$matches[0]."\n": // напечатает domain nane is php net

См. также: pregjnatcrall(), preg_replace(), preg_split().

preg_match_all

Полный систематический поиск

int preg_match_all (string pattern, string subject, array matches [, int order])

Ищет в тексте, указанном доводом subject, все допустимые соответствия образцу, указанному в pattern. Поиск последующих совпадений производится от места последнего совпадения. Функция возвращает число совпадений с полным образцом либо FALSE, если совпадений не было (либо случилась оплошность).

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

PREG_PATTERN_ORDER (по умолчанию) - в виде [(под)шаб-лон] [фрагмент]. В (под)массиве Smatches[0] сохраняются совпадения с полным образцом, в $matches[l] и последующих — совпадения с подшаблонами.

     
      
 preg_match__all ("|<[A>]+>( .*)</[*>]+>|U". 
"<b>Пример: </b> <div aliqn=left> мой текст 
</div>", 
 Jout. PREG_PATTERN_ORDER): 

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

   

Фрагменты

   
   

0

1

...

Шаблон

0

$out[0]|0] = "<b>Пример: </b>"

$out[0][l] = "<cliv aligrHeft> мой T6KCT</div>"

$out[0)[...]

Под-шаблоны

1

$out[l][0] = "Пример: "

Sout[l][l] = " мой текст "

$out[l]L-..]

   

$out[...][0]

$out[...][l]

$out[...][...]

PREG_SET_ORDER — в виде [фрагмент] [(под)шаблон]. В (гюд)массивах $matches[0] — $matches[xxx] сохраняются соответствующие фрагменты совпадения.

 preg_match_all ("[<[*>]+>(.*)</[">]+>|U". 
"<b>Пример: </b> <div align-left* мой 
текст </div>", 
 $out. PREG SET ORDER): 
   

Шаблон

Подшаблоны

 
   

0

,

 

Фрагменты

0

$out[0][0] =•

"<b>Пример:

</b>"

$out[0][l] = "Пример: "

$out(0][...J

 

1

$out[l][0] -

"<div align=lefl> мой текст </div>"

$put[lj[l]-" мой текст "

$out[l]|...|

 

...

$out[...][0]

$out [...][!]

$out[...][...]

//Пример 1. 
Приобретение телефонного номера. 
preg_match_all t"/\(? 
(\d{3.6})? \)? 

(?(1) [\-\s] ) \d{3}-\d{4}/x". "Call 555-1212 or 1-800-555-1212", Sphones). // Пример 2. Искать парные HTML теги (алчно) // \\2 - ссылка, тут на t[\wj+) Shtml = "<b>bold text</b>--a href=howdy.htrol>click me</a> preg_match_dll ("/(<([\w]+)[*>]*>K.*)(<\/\\2>)/". Shtnl. Sratches); for ($i=0. $i< count($inatches[0]). $i++) { echo "фрагмент: " $matches[0][$i] "\n". "часть 1 " $matches[l][$i] "\n". "часть 2: ".$matches[3][$i]."\n". "часть 3: ".$matches[4][$i]."\n\n". }
Позже запуска примера будет выведено:

 фрагмент: <b>bold text</b>
 часть 1 <b> 

часть 2: bold text часть 3: </b> фрагмент: <а href=howdy.html> click me<@060>/a> часть1: <а href=howdy.html> часть 2: click me часть 3 </а>

См. также: preg_match(), preg_replace(), preg_split().

preg_replace

Систематический поиск с заменой

mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])

Ищет в тексте subject вес фрагменты, соответствующие образцу pattern, и заменяет их на replacement. Возвращает измененный текст. Если совпадений не находится, то возвращается неизмененный текст subject. Довод limit указывает, сколько фрагментов нужно заменить; если он не указан либо равен -1, то заменяются все обнаруженные фрагменты.

replacement может содержать обратные ссылки (обыкновенные для регулярных выражений) в форме \\п либо, что больше предпочтительно, в форме $п. Вся такая ссылка будет заменяться на фрагмент начального текста, соответствующий указанному подшаблону. Обыкновенно n может быть от 0 до 99 и \\0 либо $0 соответствует целому образцу.

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

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

//Пример 1 Spatterns = array ("/(19|20)(\d{2}) -(\d{1.2})-(\d{1.2})/". "r\s*{(\w+)}\s*=/"): $r-eplace = array ("\\3/\\4/\\l\\2". "$\U ="); print preg_replace (Spatterns, Sreplace. "{startDate} = 1984-5-27"); //напечатает: SstartDate = 5/27/1984 // Пример 2. «применение модификатора /е» // делает все HTML теги заглавными preg_replace ("/(<V)(\w+)([">]*>)/e". "\\Г .strtoupper('\\2') '\\3'", $html_body); // Пример 3. Реформирование HTML в текст // Sdocument должен содержать текст HTML. // Удаляются теги HTML tags, сегменты javascript // пробелы 8 начале строк. Подстановки HTML конвертируются // в их символьное представление. $search = array C"<scnpt[*>]*?> *? </scnpt»'sn". // Вырезать javascript "<[\Л!]*?[Ж<>]*?>'51". // Вырезать теги html "' ([\r\n])[\s]+'". // Вырезать исходные пробелы "'&(quot|#34);'т", // Заменить html entities "'&(amp||38).'V. '"&(lt|#60):'i". "'&(gt|#62): '-!". '"&(nbsp|#160):'i". '"Sdexcllfien.1!" . '"&(cent|fl62);'i". '"&(pound|#163);'i". '"&(copy|#169);'i". "'&#(\d+).'e"): // обработать php кодом Sreplace = array ("". "\\1", "\"". "&". 11 <" M>". chr(161). chr(162). chr(163). chr(169). "chr(\\l)"): Stext = preg_replace (Ssearch. Sreplace. Sdocument).

См. также: pregjnatch(), preg_match_all(), preg_split().

preg_split

Нарезка регулярным выражением

array preg_split (string pattern, string subject [,

int limit [, int flags]])

Возвращает массив, содержащий части текста subject, находящиеся между фрагментами, соответствующими образцу pattern.

Доводом limit дозволено указать число элементов в возвращаемом массиве.

При указании в доводе flags значения PREG_SPLIT_NO_EMPTY в возвращаемом массиве не сохраняются пустые значения.

// Поделить текст пробельными символами либо запятыми Skeywords = preg_split ("/[\s.]+/". "hypertext language, programming"); // поделить строку на составляющие символы $str = 'ноя string'; $chars = preg_split('//'. $str. 0. PREG_SPLIT_NO_FMPTY): print_r($chars):

См. также: preg_match(), pregjnatch_al 1 (), preg_replace().

preg_quote

Цитирование метасимволов регулярного выражения

string preg_quote (string str [, string delimiter])

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

Метасимволами регулярных выражений считаются: .Л\ + *?[*]$(){}-! <> .| :

В доводе delimiter дозволено указать перечисление дополнительных символов, которые следует предварять слешем (обыкновенно тут пригодно указать ограничитель образца).

Skeywords = "$40 за дЗ/400"; Skeywords = preg_quote (Skeywords. "/"); echo $keywords. // возвращает: \$40 for a g3\/400 // Выделение курсивом слова в тексте HTML, помеченного звездочками Stextbody = "Это *очснь* трудное выражение.". Sword = "*очень*": Stextbody •= preg_replace ("/(".preg_quote(Sword) ")/". "<-,>$1</1>". Stextbody);

preg_grep

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

array preg_grep (string pattern, array input)

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

// возвращает все элементы, содержащие
дробные числа $f1 array =
preg_grep ("/~(\d+)?\ \d+$/". $arra;y)

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

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

ereg <"'abc". $stnng).
/* Возвращает TRUE, если Istnng содержит
фрагмент "abc". */ егеУ ("*abc". Sstring);
/* Возвращает TRUE, если Sstring
начинается с "abc". */
ereg ("abc$". Sstring):
/* Возвращает TRUE, если Sstring
заканчивается на "abc" */
eregi ("(ozilla [23]JMSIE.3)".
$HTTP_USER_AGLNT); /* возвращает TRUE,
если браузер заказчика
Netscape 2. 3 либо MSIE 3. */
ereg ("([[.alnum:]]+) ([[.alnum ]]+)
([[ :alnum:]]+)". Sstring.Sregs).
/* Заносит три слова, разделенных
пробелами в $regs[l].
Sregs[2]и$regs[3].*/
$stnng = ereg_replace ("*". "<BR>". Sstring);
/* вставляет тег <BR> в предисловие строки
Sstring */ Jstring = ereg_replace
("$". "<BR>". Sstnng). /* вставляет тег
<BR> в конец строки Sstnng. */
Sstring •= ereg_replace ("\n". "". Sstnngj.
/* вырезает символы перехода на
новую строку в Sstring. */
Растяжение регулярных выражений POSIX

ereg

Систематический поиск

int ereg (string pattern, string string [, array regs])

Возвращает TRUE, если в строке string находится фрагмент, подходящий образцу pattern, напротив — FALSE. В случае фурора массив regs заполняется совладениями с нодшаблонами. Элемент [0] массива regs содержит совпадение с полным образцом, а все дальнейшие (1-9) — совпадения с подшаблонами. Массив regs неизменно будет иметь 10 элементов, и это не зависит от числа подшаблонов.

Дальнейший пример печатает дату формата ISO (YYYY-MM-DD) в виде DD.MM.YYYY:

Sdate = "1982-11-29",
if (ereg
("([0-9]{4})-([0-9]{1.2})-([0-9]{1.2})",
$date. Sregs»
{ echo "$regs[3j.$regs[2].$regs[l]": } else f
echo "Дата в неправильной формате: $date". }

См. также: eregi(), ereg_replace(), eregi_replace().

eregi

Бесчувственный к регистру систематический поиск

int eregi (string pattern, string string [, array regs])

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

См. также: ereg(), ereg_replace(). eregi_replace().

ereg_replace

Регулярная замена

string ereg_replace (string pattern, string replacement, string string)

В строке string ищутся фрагменты совпадения с pattern и возвращается строка string, в которой фрагменты совпадения (если таковые нашлись) заменены на replacement. Допускается применять ссылки (0-9) на совпадения с подшаблонами. Ссылка \\0 обозначает совпадение с целым образцом.

tstring - "This is a test".
echo ereg_repl асе ("( )
is". '\\lwas". $st'~ing):

Впрочем если replacement содержит целочисленное значение, оно будет воспринято как код символа зама.

Jstrirg = "В строке четыре слова";
echo ereg_replасе('четыре', 4. Sstnng):
/* выводит: В строке слова */ echo ereg_replace
( 'четыре'. '4'. Sstnng):
/* выводит: В строке 4 слова */

См. также: ereg(), eregi(), eregi_replace().

eregi_replace

Бесчувственная к регистру регулярная замена

string eregi_replace (string pattern, string replacement, string string)

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

См. также: ereg(), eregi(), ereg_replace().

split

Нарезка в массив регулярным выражением

array split (string pattern, string string [, int limit])

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

// выделить четыре первых поля
строки файла /etc/passwd
$pasc,wd_list = split (":". $passwd_line. 5):

//разделить на переменные строку даты-времени
list ($month. $day. Syear, Shour. Srmnutes, Sseconds)
= split ('[/. -]'. "04/30/1973 14 23 88").

Подметьте, изредка проще применять функцию explodeO. См. также: splitiO, explodeO, implodeO.

spliti

Бесчувственный к регистру аналог split()

array spliti (string pattern, string string [, int limit])

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

См. также: split(), explode(), implode().

sql_ regcase

Пренебрежение регистра для SQL выражений

string sql_regcase (string string)

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

Скажем, это разрешает при указании в SQL выражениях игнорировать регистр строки поиска. Скажем, выражение: SELECT * FROM tbl WHERE fieldl='Abc' зачастую эмоционально к регистру, а его параллель: SELECT * FROM tbl WHERE fieldl»1 [Aa][Bb][Cc]' - нет. Но для многих СУБД поиск и так бесчувствен к регистру, скажем: SELECT * FROM tbl WHERE fieldl LIKE 'Abc'

pcho sql_regcase ("Fv Жъ '");
//выводит: [Ff][Vv] [ВДГЪь] !