Функции Язык программирования PHP

swf_closefile

(PHP 4)

swf_closefile - закрывает текущий Shockwave Flash-файл.

Описание

void swf_closefile ([int return_file])

Закрывает файл, открытый функцией swf_openfile(). Если параметр return_file установлен, то возвращается содержимое SWF-файла.

Пример 1. Создание простого flash-файла на основе
пользовательского ввода и вывод его и сохранение в БД
<?php 
// переменная $text отправляется пользователем // Глобальные переменные для доступа 
к БД // (используются в функции swf_savedata()) $DBHOST = "localhost"; $DBUSER 
= "sterling"; $DBPASS = "secret"; swf_openfile ("php://stdout", 256, 256, 30, 
1, 1, 1); swf_definefont (10, "Ligon-Bold"); swf_fontsize (12); swf_fontslant 
(10); swf_definetext (11, $text, 1); swf_pushmatrix (); swf_translate (-50, 80, 
0); swf_placeobject (11, 60); swf_popmatrix (); swf_showframe (); swf_startdoaction 
(); swf_actionstop (); swf_enddoaction (); $data = swf_closefile (1); $data ? 
swf_savedata ($data) : die ("Error could not save SWF file"); // void swf_savedata 
(string data) // Сохранить сгенерированный файл в БД // для последующего запрашивания 
function swf_savedata ($data) { global $DBHOST, $DBUSER, $DBPASS; $dbh = @mysql_connect 
($DBHOST, $DBUSER, $DBPASS); if (!$dbh) { die (sprintf ("Error [%d]: %s", mysql_errno 
(), mysql_error ())); } $stmt = "INSERT INTO swf_files (file) VALUES ('$data')"; 
$sth = @mysql_query ($stmt, $dbh); if (!$sth) { die (sprintf ("Error [%d]: %s", 
mysql_errno (), mysql_error ())); } @mysql_free_result ($sth); @mysql_close ($dbh); 
} ?>

Назад Оглавление Вперёд
swf_addcolor Вверх swf_definebitmap

Производительность

Он может совпасть с "aaaa" 33 разными способами, и это количество увеличивается очень быстро по мере увеличения длины строки. (Повторение * может совпасть 0, 1, 2, 3 или 4 раза, и для каждого случая/case, отличного от 0, повторения + могут совпадать разное количество раз.)
Если остаток патэрна таков, что всё совпадение терпит неудачу, PCRE должно, в принципе, попытаться выполнить все возможные варианты, и это может потребовать огромного количества времени.

С помощью оптимизации можно отловить наиболее простые случаи, такие как

 (a+)*b
где следом идёт литеральный символ. Прежде чем полагаться на стандартную процедуру поиска совпадений, PCRE проверяет, имеется ли "b" далее в строке-субъекте, и если нет, совпадение немедленно завершается неудачей. Однако, когда последующего литерала нет, эта оптимизация не может быть использована. Почувствуйте разницу, сравнив поведение
 (a+)*\d
с поведением вышеприведённого патэрна. Первый выдаёт неудачу почти сразу, когда применяется к строке символов "a", а второй затрачивает значительное время на поиск в строках длиной более 20 символов.