stream_filter_register

creationdev

Documentation

Conception web ecommerce
Conception web ecommerce

2500$ CAD

Référencement web optimisé
Référencement web optimisé

500$ CAD

Conception web microsite
Conception web microsite

1000$ CAD

Conception d'application web
Conception d'application web

100$ CAD

Référencement web organique
Référencement web organique

300$ CAD

Formation référencement web
Formation référencement web

100$ CAD

Conception web standard
Conception web standard

2500$ CAD

Conception web extra
Conception web extra

5000$ CAD

Référencement web expert
Référencement web expert

750$ CAD

Référencement web stratégique
Référencement web stratégique

1000$ CAD

Fonction

Fonction

stream_filter_register

stream_filter_register

Page Vue 15 nov. 2018
Page Vue 15 fois

(PHP 5, PHP 7, PHP 8)

stream_filter_register — Enregistre un filtre de flux

Description

stream_filter_register(string $filter_name, string $class): bool

stream_filter_register() vous permet d'implémenter votre propre filtre de flux, à utiliser avec les fonctions d'accès aux données externes (comme fopen(), fread(), etc.).

Liste de paramètres

filter_name

Le nom du filtre à enregistrer.

class

Pour créer une classe de filtre, vous devez définir une classe qui étend la classe php_user_filter. Lorsque vous réalisez des opérations de lecture et d'écriture dans le flux auquel votre filtre est attaché, PHP passera les données à travers votre filtre (et tous les autres filtres attachés), de façon à ce que les données soient modifiées tel que désiré. Vous devez implémenter les méthodes tel que décrit dans php_user_filter, sous peine de comportements indéfinis.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

stream_filter_register() doit toujours retourner false si le paramètre filter_name est déjà défini.

Exemples

Exemple #1 Filtre sur les lettres majuscules sur le flux foo-bar.txt

L'exemple ci-dessous implémente un filtre appelé strtoupper, sur le flux foo-bar.txt, qui passe en majuscule toutes les lettres écrites/lues depuis ce flux.

<?php

/* Définition de la classe */
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;
}
}

/* Enregistrement de notre filtre avec PHP */
stream_filter_register("strtoupper", "strtoupper_filter")
or die("Erreur lors de l'enregistrement du filtre");

$fp = fopen("foo-bar.txt", "w");

/* Attachement du filtre enregistré au flux que l'on vient d'ouvrir */
stream_filter_append($fp, "strtoupper");

fwrite($fp, "Ligne1\n");
fwrite($fp, "Mot - 2\n");
fwrite($fp, "Facile comme 123\n");

fclose($fp);

/* Lecture du contenu
*/
readfile("foo-bar.txt");

?>

L'exemple ci-dessus va afficher :

LIGNE1
MOT - 2
FACILE COMME 123

Exemple #2 Enregistrement d'une classe de filtre générique pour correspondre avec de multiples noms de filtres

<?php

/* Définition de la classe*/
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 {
/* Quelques autres filtres str.* sont demandés,
traitement de l'erreur avec PHP */
return false;
}

return true;
}
}

/* Enregistrement de notre filtre avec PHP */
stream_filter_register("str.*", "string_filter")
or die("Failed to register filter");

$fp = fopen("foo-bar.txt", "w");

/* Attachement du filtre enregistré au flux que l'on vient d'ouvrir
Nous pouvons alternativement passer à str.tolower ici */
stream_filter_append($fp, "str.toupper");

fwrite($fp, "Ligne1\n");
fwrite($fp, "Mot - 2\n");
fwrite($fp, "Facile comme 123\n");

fclose($fp);

/* Lecture du contenu
*/
readfile("foo-bar.txt");

?>

L'exemple ci-dessus va afficher :

LINE1
MOT - 2
FACILE COMME 123

Voir aussi


Source : http://www.php.net/
Ref : fonction-stream-filter-register.php




Contact

Contact

Veuillez saisir les infos dans le formulaire d'identification
suivant pour concevoir et référencer votre site.









Veuillez saisir votre message.

Carte d'affaires

Affichage de la carte d'affaires recto/verso.

Carte d'affaires recto
Carte d'affaires verso

Partagez

Partagez

Discussion ayant comme sujet la page stream_filter_register.

©2025 creationdev -  F.A.Q. -  Soutien -  Haut de page
THÈMES: