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 &amp;
    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 &amp;
    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
-->