cvs: phpdoc-sk /appendices filters.xml
[email protected] ("Joseph Drake") Thu, 08 Jul 2004 00:07:58 -0000
| Newsgroups | php.doc.sk |
|---|---|
| Message-ID | <cvsjoseph1089245278@cvsserver> |
joseph Wed Jul 7 20:07:58 2004 EDT
Added files:
/phpdoc-sk/appendices filters.xml
Log:
newly added
joseph-20040707200758.txt
(text/plain, 14.8 KB)
http://cvs.php.net/co.php/phpdoc-sk/appendices/filters.xml?r=1.1&p=1
Index: phpdoc-sk/appendices/filters.xml
+++ phpdoc-sk/appendices/filters.xml
<?xml version="1.0" encoding="iso-8859-2"?>
<!-- EN-Revision: 1.7 Maintainer: joseph Status: ready -->
<appendix id="filters">
<title>Zoznam dostupných filtrov</title>
<para>
Následujúce je zoznam niekoµkých zabudovaných prúdových filtrov pre
pou¾itie s <function>stream_filter_append</function>.
Va¹a verzia PHP mô¾e ma» viac filtrov (alebo menej) ako sú tie
vymenované tu.
</para>
<para>
Oplatí sa upozorni» na miernu asymetriu medzi
<function>stream_filter_append</function>
a <function>stream_filter_prepend</function>.
Ka¾dý PHP prúd obsahuje malý <emphasis>read buffer</emphasis>,
kde ukladá bloky dát získané zo súborovného systému
alebo iný zdroj, aby spracoval dáta èo najefektívnej¹ie.
Akonáhle sa dáta posunú zo zdroja do vnútroného prúdu
buffera, okam¾ite sa spracuje v¹etkými prilo¾enými filtrami,
èi je PHP aplikácia pripravená pre dáta alebo nie.
Ak sa dáta nachádzajú v read bufferi, keï je filter
<emphasis>pripojený</emphasis>, tak sa tieto dáta okam¾ite
spracujú cez ten buffer a fakt, ¾e sa nachádzal v bufferi,
sa zdá by» transparentný. Av¹ak, ak sa dáta nachádzajú
v read bufferi, keï je filter
<emphasis>pred-pojený</emphasis>, tieto dáta <emphasis>NEBUDÚ</emphasis>
spracované cez ten filter. Namiesto toho bude èaka» pokým
sa získa ïal¹í blok dát zo zdroja.
</para>
<para>
Pre zoznam filtrov nain¹talované vo va¹ej verzii
<literal>PHP</literal> pou¾ite <function>stream_get_filters</function>.
</para>
<section id="filters.string">
<title>Re»azcové Filtre</title>
<simpara>
Ka¾dý z týchto filtrov robí presne to, èo ich názov implikuje a
zodpovedá správaniu zabudovanej funkcii riadiacej re»azce.
Viac informácii o danom filtri získate na strane manuálu pre
zodpovedajúcu funkciu.
</simpara>
<simpara>
<literal>string.rot13</literal>
(od <literal>PHP 4.3.0</literal>)
Pou¾itie tohto filtra je ekvivalentný spracovaniu v¹etkých dát prúdu cez
funkciu <function>str_rot13</function>.
</simpara>
<example>
<title>string.rot13</title>
<programlisting role="php">
<![CDATA[
<?php
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'string.rot13');
fwrite($fp, "Toto je test.\n");
/* Výstup je: Guvf vf n grfg. */
?>
]]>
</programlisting>
</example>
<simpara>
<literal>string.toupper</literal>
(od <literal>PHP 5.0.0</literal>)
Pou¾itie tohto filtra je ekvivalentné spracovaniu v¹etkých dát prúdu cez
funkciu <function>strtoupper</function>.
</simpara>
<example>
<title>string.toupper</title>
<programlisting role="php">
<![CDATA[
<?php
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'string.toupper');
fwrite($fp, "Toto je test.\n");
/* Výstup je: TOTO JE TEST. */
?>
]]>
</programlisting>
</example>
<simpara>
<literal>string.tolower</literal>
(od <literal>PHP 5.0.0</literal>)
Pou¾itie tohto filtra je ekvivalentné spracovaniu v¹etkých dát prúdu cez
funkciu <function>strtolower</function>.
</simpara>
<example>
<title>string.tolower</title>
<programlisting role="php">
<![CDATA[
<?php
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'string.tolower');
fwrite($fp, "Toto je test.\n");
/* Výstup je: toto je test. */
?>
]]>
</programlisting>
</example>
<simpara>
<literal>string.strip_tags</literal>
(od <literal>PHP 5.0.0</literal>)
Pou¾itie tohto filtra je ekvivalentné spracovaniu v¹etkých dát prúdu cez
funkciu <function>strip_tags</function>.
Akceptuje parametre v jednej z dvoch foriem:
Buï ako re»azec obsahujúci zoznam tagov podobný druhému
parametru funkcie <function>strip_tags</function>
alebo ako pole názvov tagov.
</simpara>
<example>
<title>string.strip_tags</title>
<programlisting role="php">
<![CDATA[
<?php
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'string.strip_tags', STREAM_FILTER_WRITE, "<b><i><u>");
fwrite($fp, "<b>tucny text</b> zvacseny na <h1>level 1 nadpis</h1>\n");
fclose($fp);
/* Vystup je: <b>tucny text</b> zvacseny na level 1 nadpis */
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'string.strip_tags', STREAM_FILTER_WRITE, array('b','i','u'));
fwrite($fp, "<b>tucny text</b> zvacseny na <h1>level 1 nadpis</h1>\n");
fclose($fp);
/* Vystup je: <b>tucny text</b> zvacsneny na level 1 nadpis */
?>
]]>
</programlisting>
</example>
</section>
<section id="filters.convert">
<title>Konverzné filtre</title>
<simpara>
Ako string.* filtre, the convert.* filtre vykonávajú akcie
podobné ich názvom. Konverzné filtre boli pridané s
<literal>PHP 5.0.0</literal>.
Viac informácií o danom filtri získate na strane manuálu pre
zodpovedajúcu funkciu.
</simpara>
<simpara>
<literal>convert.base64-encode</literal> a
<literal>convert.base64-decode</literal>
Pou¾itie týchto filtrov je ekvivalentné spracovaniu v¹etkých dát prúdu cez
funkcie <function>base64_encode</function> a <function>base64_decode</function>.
<literal>convert.base64-encode</literal> podporuje parameter dané ako
asociatívne pole. Ak je <parameter>line-length</parameter> daný, výstup
base64 bude rozdelený na èasti znakov <parameter>line-length</parameter>
Ak je daný <parameter>line-break-chars</parameter>, ka¾dá èas»
bude limitovaná danými znakmi Tieto parametre majú rovnaký efekt ako
pou¾itie <function>base64_encode</function> s
<function>chunk_split</function>.
</simpara>
<example>
<title>
convert.base64-encode &
convert.base64-decode
</title>
<programlisting role="php">
<![CDATA[
<?php
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'convert.base64-encode');
fwrite($fp, "Toto je test.\n");
fclose($fp);
/* Vystup je: VGhpcyBpcyBhIHRlc3QuCg== */
$param = array('line-length' => 8, 'line-break-chars' => "\r\n");
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'convert.base64-encode', STREAM_FILTER_WRITE, $param);
fwrite($fp, "Toto je test.\n");
fclose($fp);
/* Vystup je : VGhpcyBp
: cyBhIHRl
: c3QuCg== */
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'convert.base64-decode');
fwrite($fp, "VGhpcyBpcyBhIHRlc3QuCg==");
fclose($fp);
/* Vystup je: Toto je test. */
?>
]]>
</programlisting>
</example>
<simpara>
<literal>convert.quoted-printable-encode</literal> a
<literal>convert.quoted-printable-decode</literal>
Pou¾itie dekódovacej verzie tohto filtra je ekvivalentný spracovaniu
v¹etkých dát prúdu cez funkcie <function>quoted_printable_decode</function>.
Neexistuje funkcia ekvivalentná k <literal>convert.quoted-printable-encode</literal>.
<literal>convert.quoted-printable-encode</literal> podporuje parametre dané
ako asociatívne pole. Dodatoèné k parametrom, ktoré podporujú
<literal>convert.base64-encode</literal>, <literal>convert.quoted-printable-encode</literal>
tie¾ podporujú boolean argumenty <parameter>binary</parameter> a
<parameter>force-encode-first</parameter>.
<literal>convert.base64-decode</literal> podporuje iba
parameter <parameter>line-break-chars</parameter> ako typovná pomôcka
pre odstránenie zo zakódovaného payloadu.
</simpara>
<example>
<title>
convert.quoted-printable-encode &
convert.quoted-printable-decode
</title>
<programlisting role="php">
<![CDATA[
<?php
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'convert.quoted-printable-encode');
fwrite($fp, "Toto je test.\n");
/* Vystup je: =Totot je test.=0A */
?>
]]>
</programlisting>
</example>
</section>
<section id="filters.compression">
<title>Kompresné filtre</title>
<simpara>
Zatiaµ èo <xref linkend="wrappers.compression"/> poskytujú spôsob tvorby
gzip a bz2 kompatibilných súborov na miestnom filesystéme, neposkytujú
spôsob pre zov¹eobecnenú kompresiu cez prúdy siete, neposkytujú ani
spôsob na zaèatie s nekompresným prúdom a tranzíciu ku kompresnému prúdu.
Pre toto mô¾e by» kompresný filter aplikovaný na hocaký zdroj prúdu kedykoµvek.
</simpara>
<note>
<simpara>
Kompresné filtre <emphasis>ne</emphasis>generujú hlavièky a päty
pou¾ívané commandline utilitami ako <literal>gzip</literal>. Iba komprimujú
a dekomprimujú payload porcie kompresovaných dátových prúdov.
</simpara>
</note>
<simpara>
<literal>zlib.deflate</literal> (kompresia) a
<literal>zlib.inflate</literal> (dekompresia) sú implementácie
kompresných metód popísaných v <ulink url="&url.rfc;1951">RFC 1951</ulink>.
Filter <literal>deflate</literal> berie a¾ tri parametre poslané ako
asociatívne pole.
<parameter>level</parameter> popisuje, akú kompresnú silu
pou¾i» (1-9). Vy¹¹ie èíslo v¹eobecne zabezpeèí men¹ie payloady za
cenu dodatoèného èasu spracovania. Tie¾ existujú dva ¹peciálne
kompresné levely:
0 (pre ¾iadnu kompresiu) a -1 (zlib vnútorný default -- momentálne 6).
<parameter>window</parameter> je base-2 log loopback veµkosti window kompresie.
Vy¹¹ie hodnoty (a¾ 15 -- 32768 bytov) zabezpeèia lep¹iu kompresiu za
cenu pamäte,
zatiaµèo ni¾¹ie hodnoty (a¾ po 9 -- 512 bytov) zabezpeèia hor¹iu
kompresiu v men¹ej tlaèovej stope pamäte.
Východzia veµkos» <parameter>window</parameter> je momentálne <constant>15</constant>.
<parameter>memory</parameter> je ¹kála indikujúca koµko pracovnej
pamäte by sa malo alokova».
Platný rozsah hodnôt od 1 (minimálna alokácia) do 9 (maximálna
alokácia). Táto alokácia pamäte
ovplyvòuje iba rýchlos» a neovplynòuje veµkos» generovaného payloadu.
</simpara>
<note>
<simpara>
Preto¾e kompresný level je najbe¾nej¹ie pou¾ívaný parameter, alternatívne
mô¾e by» poskytnutý ako jednoduchá hodnota integer (ne¾ prvok poµa).
</simpara>
</note>
<note>
<simpara>
Filtre zlib.* nie sú momentálne zabudované do PHP jadra. Pre
povolenie týchto filtrov
v <literal>PHP 5</literal>, nain¹talujte balík <ulink url="&url.pecl.package;zlib_filter">zlib_filter</ulink>
z <ulink url="&url.pecl;">PECL</ulink>. Tieto filtre <emphasis>nie</emphasis>
sú dostupné pre <literal>PHP 4</literal>.
</simpara>
</note>
<example>
<title>
<literal>zlib.deflate</literal> a
<literal>zlib.inflate</literal>
</title>
<programlisting role="php">
<![CDATA[
<?php
$params = array('level' => 6, 'window' => 15, 'memory' => 9);
$original_text = "Toto je test.\nToto je iba test.\nToto nie je dolezity string.\n";
echo "Povodny text je " . strlen($original_text) . " znakov dlhy.\n";
$fp = fopen('test.deflated', 'w');
stream_filter_append($fp, 'zlib.deflate', STREAM_FILTER_WRITE, $params);
fwrite($fp, $original_text);
fclose($fp);
echo "Komprimovany subor je " . filesize('test.deflated') . " bytov dlhy.\n";
echo "Povodny text bol:\n";
/* Pouzite readfile a zlib.inflate na dekompresiu on the fly */
readfile('php://filter/zlib.inflate/resource=test.deflated');
/* Generuje vystup:
Povodny text je 70 znakov dlhy.
Komprimovany subor je 56 bytov dlhy.
Povodny text bol:
Toto je test.
Toto je iba test.
Toto nie je dolezity sring.
*/
?>
]]>
</programlisting>
</example>
<example>
<title>
<literal>zlib.deflate</literal> jednoduchý
</title>
<programlisting role="php">
<![CDATA[
<?php
$original_text = "Toto je test.\nToto je iba test.\nToto nie je dolezity string.\n";
echo "Povodny text je " . strlen($original_text) . " znakov dlhy.\n";
$fp = fopen('test.deflated', 'w');
/* Tu "6" indikuje komresny level 6 */
stream_filter_append($fp, 'zlib.deflate', STREAM_FILTER_WRITE, 6);
fwrite($fp, $original_text);
fclose($fp);
echo "Komprimovany subor je " . filesize('test.deflated') . " bytov dlhy.\n";
/* Generuje vystup:
Povodny text je 70 znakov dlhy.
Komprimovany subor je 56 bytov dlhy.
*/
?>
]]>
</programlisting>
</example>
<simpara>
<literal>bzip2.compress</literal> a
<literal>bzip2.decompress</literal>
fungujú rovnakým spôsobom ako zlib filtre popísané vy¹¹ie.
Filter <literal>bzip2.compress</literal> akceptuje a¾ dva parameter dané ako
prvky asociatívneho poµa:
<parameter>blocks</parameter> je integer hodnota
od 1 do 9 urèujúca poèet 100kbytových blokov pamäte na alokovanie pre
workspace.
<parameter>work</parameter> je tie¾ integer hodnota o rozsahu od
0 do 250 indukujúca koµko snahy treba vynalo¾i» pomocou normálnej kompresnej metódy
pred prechodom na pomal¹iu, ale spoµahlivej¹iu metódu. Ladenie tohto parametra
ovplyvòuje iba kompresnú rýchlos». Ani veµkos» kompresného výstupu
ani vyu¾itie pamäte
nie sú týmto nastavením zmenené. Pracovný faktor 0 nariaïuje bzip kni¾nici
pou¾i» vnútorný default.
Filter <literal>bzip2.decompress</literal> akceptuje iba jedej parameter,
ktorý mô¾e by» poslaný buï ako be¾ná hodnota boolean alebo ako
prvok <parameter>small</parameter> asociatívneho poµa.
<parameter>small</parameter>, ak je nastavený na &true; hodnotu, nariaïuje bzip kni¾nici
na vykonanie dekompresie v minimálnej tlaèovej stope pamäte za cenu
rýchlosti.
</simpara>
<note>
<simpara>
Filtre bzip2.* nie sú momentálne zabudované do PHP jadra. Pre
povolenie týchto filtrov
v <literal>PHP 5</literal>, nai¹talujte balík <ulink url="&url.pecl.package;bz2_filter">bz2_filter</ulink>
z <ulink url="&url.pecl;">PECL</ulink>. Tieto filtre <emphasis>nie</emphasis>
sú dostupné pre <literal>PHP 4</literal>.
</simpara>
</note>
<example>
<title>
<literal>bzip2.compress</literal> a
<literal>bzip2.decompress</literal>
</title>
<programlisting role="php">
<![CDATA[
<?php
$param = array('blocks' => 9, 'work' => 0);
echo "Povodny subor je " . filesize('LICENSE') . " bytov dlhy.\n";
$fp = fopen('LICENSE.compressed', 'w');
stream_filter_append($fp, 'bzip2.compress', STREAM_FILTER_WRITE, $param);
fwrite($fp, file_get_contents('LICENSE'));
fclose($fp);
echo "Komprimovany subor je " . filesize('LICENSE.compressed') . "bytov dlhy.\n";
/* Generuje vystup:
Povodny text je 3288 znakov dlhy.
Komprimovany subor je 1488 bytov dlhy.
*/
?>
]]>
</programlisting>
</example>
</section>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->