stream_filter_register
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
stream_filter_register
Референца за `function.stream-filter-register.php` со подобрена типографија и навигација.
stream_filter_register
класата mysqli_driver
stream_filter_register — Регистрирајте филтер за стрим дефиниран од корисникот
= NULL
stream_filter_register() ви овозможува да имплементирате сопствен филтер на кој било регистриран стрим што се користи со сите други функции за датотечен систем (како што се fopen(), fread() итн.).
Параметри
filter_name-
Името на филтерот што треба да се регистрира.
class-
За да имплементирате филтер, треба да дефинирате класа како екстензија на php_user_filter со број на член функции. При извршување на операции за читање/запишување на стримот на кој е прикачен вашиот филтер, PHP ќе ги помине податоците низ вашиот филтер (и сите други филтри прикачени на тој стрим) така што податоците може да се изменат по желба. Мора да ги имплементирате методите точно како што е опишано во php_user_filter - правењето на спротивното ќе доведе до недефинирано однесување.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.
stream_filter_register() ќе врати false ако
filter_name веќе е дефинирано.
Примери
Пример #1 Филтер за капитализирање на знаци на foo-bar.txt stream
Стримот што ќе ги капитализира сите букви што се запишуваат/читаат од тој стрим. strtoupper
Пред PHP 7.2.0, користењето на foo-bar.txt Пример #2 Регистрирање на генеричка класа за филтрирање за да одговара на повеќе имиња на филтри.
<?php
/* Define our filter class */
class strtoupper_filter extends php_user_filter {
function filter($in, $out, &$consumed, $closing)
{
while ($bucket = stream_bucket_make_writeable($in)) {
$bucket->data = strtoupper($bucket->data);
$consumed += $bucket->datalen;
stream_bucket_append($out, $bucket);
}
return PSFS_PASS_ON;
}
}
/* Register our filter with PHP */
stream_filter_register("strtoupper", "strtoupper_filter")
or die("Failed to register filter");
$fp = fopen("foo-bar.txt", "w");
/* Attach the registered filter to the stream just opened */
stream_filter_append($fp, "strtoupper");
fwrite($fp, "Line1\n");
fwrite($fp, "Word - 2\n");
fwrite($fp, "Easy As 123\n");
fclose($fp);
/* Read the contents back out
*/
readfile("foo-bar.txt");
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
LINE1 WORD - 2 EASY AS 123
- Регистрирајте обвивка за URL имплементирана како PHP класа
<?php
/* Define our filter class */
class string_filter extends php_user_filter {
var $mode;
function filter($in, $out, &$consumed, $closing)
{
while ($bucket = stream_bucket_make_writeable($in)) {
if ($this->mode == 1) {
$bucket->data = strtoupper($bucket->data);
} elseif ($this->mode == 0) {
$bucket->data = strtolower($bucket->data);
}
$consumed += $bucket->datalen;
stream_bucket_append($out, $bucket);
}
return PSFS_PASS_ON;
}
function onCreate()
{
if ($this->filtername == 'str.toupper') {
$this->mode = 1;
} elseif ($this->filtername == 'str.tolower') {
$this->mode = 0;
} else {
/* Some other str.* filter was asked for,
report failure so that PHP will keep looking */
return false;
}
return true;
}
}
/* Register our filter with PHP */
stream_filter_register("str.*", "string_filter")
or die("Failed to register filter");
$fp = fopen("foo-bar.txt", "w");
/* Attach the registered filter to the stream just opened
We could alternately bind to str.tolower here */
stream_filter_append($fp, "str.toupper");
fwrite($fp, "Line1\n");
fwrite($fp, "Word - 2\n");
fwrite($fp, "Easy As 123\n");
fclose($fp);
/* Read the contents back out
*/
readfile("foo-bar.txt");
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
LINE1 WORD - 2 EASY AS 123
Види Исто така
- stream_wrapper_register() - Прикачете филтер на стрим
- stream_filter_append() Прикачи филтер на стрим
- stream_filter_prepend() Прикачи филтер на стрим