admin / 10.06.2018

Регулярные выражений в PHP

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

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

(string code_str);
 

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

Имеются некоторые условия, которые надо иметь в виду при использовании eval(). Не забудьте, что переданная строка должна иметь допустимый PHP код, при включении чего-нибудь подобного завершению кода с точкой с запятой дальнейшее выполнение  не прервется  на строке после eval(), поэтому пропускайте это в .

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

Пример 1. eval()  — простое объединение текста<?php $string = ‘cup’; $name = ‘coffee’; $str = ‘This is a $string with my $name in it.<br>’; echo $str; eval( "\$str = \"$str\";" ); echo $str; ?>       

При выполнении вышеприведенного примера будет выведено следующее:

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

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

(string message);
 

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

Пример 1. die <?php $filename = ‘/path/to/data-file’; $file = fopen($filename, ‘r’)   or die "unable to open file ($filename)"; ?>       

exit — Завершает текущий скрипт

(void);
 

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

iptcparse — Анализирует двоичный IPTC http://www.xe.net/iptc/ блок на одиночные тэги.

(string iptcblock);
 

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

leak — Отсечение куска памяти

(int bytes);
 

Leak() отсекает определенный объем памяти.

Это полезно при отладке диспетчера памяти, который автоматически очищает «отсеченную» память при выполнении запроса.

pack — упаковывает данные в двоичную строку

(string format, mixed [args]…);
 

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

Идея на эту функцию принималась из Perl и всей работы кодов форматирования также как там. Строка формата состоит из кодов формата, сопровождаемые факультативным параметром ретранслятора. Параметр ретранслятора может быть или целочисленное значение или * для повторение до конца входных данных. Для a, A, h, H количество повторов определяет, сколько принимается символов одного параметра данных, для @ это безусловная позиция, где поместить следующие данные, для всего остального количество повторов определяет сколько данных будет использовано и упаковано в возникающую в результате двоичную строку. В настоящее время выполнено:
 

    a строка NUL-заполнений

    A строка SPACE-заполнений

    h Hex строка, младший полубайт вначале

    H Hex строка, старший полубайт вначале

    c signed char

    C unsigned char

    s signed short (всегда 16 бит, machine byte order)

    S unsigned short (всегда 16 бит, machine byte order)

    n unsigned short (всегда 16 бит, big endian byte order)

    v unsigned short (всегда 16 бит, little endian byte order)

    i signed integer (machine dependant размер и byte order)

    I unsigned integer (machine dependant размер и byte order)

    l signed long (всегда 32 бит, machine byte order)

    L unsigned long (всегда 32 бит, machine byte order)

    N unsigned long (всегда 32 бит, big endian byte order)

    V unsigned long (всегда 32 бит, little endian byte order)

    f float (machine dependent размер и representation)

    d double (machine dependent размер и representation)

    x NUL байт

    X Копирует один байт

    @ NUL-Заполнение до конкретной позиции

Пример 1. pack форматируем строку$binarydata = pack(" nvc* ", 0x1234, 0x5678, 65, 66); Возникающая в результате двоичная строка будет длиной 6 байтов и содержать последовательность байтов 0x12, 0x34, 0x78, 0x56, 0x41, 0x42. 

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

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

register_shutdown_function — Устанавливает функцию, которая будет выполнена при завершении.

(string func);
 

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

serialize — Генерирует удобохраниемое представление значения

(mixed value);
 

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

Это полезно для сохранения или передачи значений PHP  без потери их типа и структуры..

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

Пример 1. serialize // $session_data содержит многомерный массив с информацией о сессии  // текущего пользователя.  Мы используем serialize() для сохранения // этого в базе данных в конце запроса. $conn = odbc_connect("webdb", "php", "chicken"); $stmt = odbc_prepare($conn,                      "UPDATE sessions SET data = ? WHERE id = ?"); $sqldata = array(serialize($session_data), $PHP_AUTH_USER); if (!odbc_execute($stmt, &$sqldata)) {     $stmt = odbc_prepare($conn,                          "INSERT INTO sessions (id, data) VALUES(?, ?)");     if (!odbc_execute($stmt, &$sqldata)) {         /* Что-то сделано неправильно. */     } }

sleep — Задержка выполнения

(int seconds);
 

Sleep фукция выполняет задержку выполненя программы в секундах (.

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

unpack — Распаковывает данные из двоичной строки

(string format, string data);
 

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

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

Пример 1. Распаковываем строку$array = unpack("c2chars/nint", $binarydata); Возникающий в результате массив будет содержать «chars1», «chars2» и «int». 

Для объяснения кодов формата см. также: pack()

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

unserialize — создает PHP значение из сохраненного представления

(string str);
 

unserialize() берет одно сохраненное значение  (см. serialize()) и преобразует обратно в PHP значение. Возвращает преобразованное значение, и может иметь тип: integer, double, string, array или object. Если был преобразован object, то методы не востановятся.
 

Пример 1. unserialize // Здесь мы используем unserialize() для загрузки данных о сессии из базы данных // в $session_data.  Этот пример дополняет описанный в месте // с serialize(). $conn = odbc_connect("webdb", "php", "chicken"); $stmt = odbc_prepare($conn, "SELECT data FROM sessions WHERE id = ?"); $sqldata = array($PHP_AUTH_USER); if (!odbc_execute($stmt, &$sqldata) || !odbc_fetch_into($stmt, &$tmp)) {     // Если сбой запуска или выборки , то инициализируем массив     $session_data = array(); } else {     // Мы должны иметь представление в $tmp[0].     $session_data = unserialize($tmp[0]);     if (!is_array($session_data)) {         // Что-то неправильно, инициализируем массив         $session_data = array();     } }

uniqid — генерирует уникальный идентификатор

(string prefix);
 

uniqid() возвращает уникальный идентификатор, основанный на текущем времени в микросекундах. Префикс может быть полезен, например, если Вы генерируете идентификаторы одновременно на отдельных хостах, которые, могли бы случилось,  генерировали идентификатор в одной и той же микросекунде. Префикс может быть длиной до 114 символов.

Если Вы нуждаетесь в уникальном идентификаторе или лексеме(маркере), и Вы предполагаете раздавать эту лексему(маркер) пользователю через сеть (то есть сеанс cookies), то рекомендуется, чтобы Вы использовали что — нибудь со строками

$token = md5(uniqid("")); // Не произвольно $better_token = md5(uniqid(random())); // Намного лучше, труднее подобрать

Это создаст 32 символьный идентификатор (128 бит hex число) который чрезвычайно трудно предсказать.

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

(int micro_seconds);
 

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

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

.

Мне кажется, вам нужен шаблон Singleton. Он создает только один экземпляр класса и возвращает вам то же самое каждый раз, когда вы его запрашиваете.

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

Как защитить файлы инклюда от прямого вызова?

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

Обновление на основе комментария OP:

Пожалуйста, смотрите следующее:

Шаблон проектирования Singleton для PHP

ответ дан Sarfraz 30 апр. '10 в 12:08

источникподелиться

Введение в PHP

Что такое PHP?

PHP — язык создания сценариев, который давно перерос свое название. Дело в том, что PHP — это аббревиатура от слов Personal Home Page. Первая версия PHP была создана Расмусом Лердорфом в 1994 г. и представляла собой набор инструментов для отслеживания посетителей Web-страницы. Со временем PHP из набора инструментов превратился в полноценный язык программирования, а его название было изменено как рекурсивное образование PHP HyperText Preprocessor (препроцессор гипертекста PHP).

PHP — это серверный язык создания сценариев. Конструкции PHP, вставленные в HTML-текст, выполняются сервером при каждом посещении страницы. Результат их обработки вместе с обычным HTML-текстом передается браузеру.

В настоящее время основной версией PHP является седьмая.

Существуют два основных конкурента PHP: Active Server Pages (ASP) компании Microsoft и ColdFusion компании Allaire. По сравнению с ними PHP обладает рядом преимуществ, в числе которых:

  • Высокая производительность. PHP-программы работают быстрее, чем ASP.

    Как «делать что-то OR DIE ()» в PHP?

  • Функциональность. Разработку PHP-программы можно отделить от собственно разработки Web-страницы, что упростит жизнь и программисту, и дизайнеру.
  • Цена. PHP абсолютно бесплатен.
  • Простота в использовании. Имеющие опыт программирования на распространенных языках найдут синтаксис PHP хорошо знакомым.
  • Переносимость. Один и тот же PHP-код можно использовать как в среде NT, так и на платформах UNIX.

Общие правила построения PHP-программы

PHP-программы состоят из простого текста, поэтому набирать их можно в любом текстовом редакторе. Популярные HTML-редакторы имеют встроенную поддержку для редактирования PHP-программ.

Расширение файлов PHP-программ по умолчанию в PHP4 — .php. На основании этого расширения сервер распознает файл как PHP-программу и запускает интерпретатор.

PHP-программа должна быть отделена от обычного HTML-текста. Существует четыре стиля обрамления PHP-кода:

Стиль Открывающий тег Закрывающий тег
Сокращенный <? ?>
XML (стандартный) <?php ?>
ASP <% %>
SCRIPT (программный) <SCRIPT LANGUAGE=»php»> </SCRIPT>

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

Так выглядит простейший смешанный документ, состоящий из HTML-текста и PHP-кода:

Пример 1

<html> <head> <title>Документ, состоящий из HTML-текста и PHP-кода</title> </head> <body> <?php echo «А вот и PHP!<br>»; ?> Всё очень просто! </body> </html>

Здесь содержится один PHP-оператор echo. Этот оператор передает строку-аргумент «А вот и PHP!<br>» в HTML-страницу, которую генерирует сервер. При этом тег сделает свое дело, т.е. осуществит переход на новую строку.

РЕЗУЛЬТАТ ПРИМЕРА 1:

А вот и PHP! Всё очень просто!

Для разделения операторов (по аналогии с Си) используется точка с запятой.

Комментарии в PHP-программе могут быть трех стилей:

/* Многострочный комментарий в стиле классического Си */ // Однострочный комментарий в стиле С++ # Однострочный комментарий в стиле Perl

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

В примере 1 заменим вызов функции на вызов встроенной функции phpinfo( ), которая выдаст список параметров PHP-среды.

Пример 2

<html> <head> <title>Информационная страница PHP</title> </head> <body> <?php phpinfo(); ?> </body> </html>

РЕЗУЛЬТАТ ПРИМЕРА 2:

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

Читать дальше: Основы языка PHP

FILED UNDER : IT

Submit a Comment

Must be required * marked fields.

:*
:*