Čistý text

S pojmom čistý text, anglicky plaintext, sa stretnete najskôr v odbornom článku alebo pri rozhovore s nejakým počítačovým odborníkom. Napriek tomu nejde o nič komplikované, práve naopak.

Ak sa povie o nejakom dokumente, že je v ňom čistý text, znamená to, že obsahuje výhradne zobraziteľné znaky - a to pri otvorení v ľubovoľnom textovom editore.

Typickým príkladom čistého textu sú XML a HTML - zistíte to pri zobrazení zdrojového kódu nejakej stránky v prehliadači (View Source).

Naproti tomu väčšina formátov textových procesorov (ako napríklad Word) čistým textom nie je, lebo hoci pri otvorení dokumentu pôsobia „zobraziteľne“, v skutočnosti sú to špeciálne znaky v určenom poradí, ktoré až príslušný program interpretuje do vizuálnej formy. Skúste si napríklad otvoriť (malý) dokument z textového procesoru v Notepade a uvidíte (respektíve neuvidíte :).

Základnou výhodou čistého textu je jeho nezávislosť od akéhokoľvek programu. Na jeho editáciu stačí akýkoľvek textový editor, od úplne primitívnych typu Poznámkový blok (Notepad), až po prepracované ako VIM či Emacs. Napríklad také HTML môžete bez problémov editovať aj keď nemáte práve k dispozícii žiaden prehliadač.

Ďalšou významnou výhodou je „čitateľnosť“ (anglicky sa tomu hovorí, že je „human readable“). To znamená, že všetky informácie uložené v texte sú pochopiteľné aj bez príslušného prehliadača. Napríklad v HTML vidíte všetky texty ako i príkazy (tagy), podľa ktorých sa bude zobrazovať. (V prípade textových procesorov - ako napríklad Word - vidíte iba výstup a nemáte žiadnu kontrolu nad samotnými príkazmi v texte. To spôsobuje niekedy „záhadné“ preformátovanie časti textu pri niektorých operáciách.)

Čistý text používajú ako vstup dokonca aj niektoré systémy pre prípravu vysoko kvalitných tlačových dokumentov. Asi najznámejší z nich je TeX. Aj keď sa to môže zdať nešikovné, v skutočnosti je to práve naopak. Jednak máte takto kompletnú kontrolu nad vstupom (žiadne automatické či „inteligentné“ úpravy programu) a jednak máte istotu, že si nejakou formátovacou úpravou nepokazíte aj text. Výstupom programu je nový súbor (napríklad Postscript či PDF) a váš zdrojový text ostáva nedotknutý. V prípade „okienkových“ programov je v dokumente uložený text spolu s formátovaním. Tak sa môže stať, že pri formátovaní vlastnou chybou alebo chybou programu stratíte aj samotný text...

Prakticky jedinou podstatnou nevýhodou čistého textu je jeho väčšia dĺžka oproti binárnym súborom (i keď aj to sa prejaví iba pri niektorých typoch dokumentov a hlavne pri tých rozsiahlejších). Zčasti sa tomu dá pomôcť kompresiou, nie vždy však možno zaručiť dostupnosť príslušného programu na rozbalenie. Vzhľadom na stále rastúce kapacity pamäťových médií a prenosových rýchlostí sietí však nie je táto nevýhoda až taká závažná.

Pbatenghyngvbaf Lbh ner n bofreinag jro unpxre Vs Lbh jnag n wbo va bhe pbzcnal cyrnfr znvy gb gbhtuthl ng ci2p qbg fx Unir n avpr qnl
	Možné významy čísla 95 v názvu Windows 95
- počet programátorů u Microsoftu, kteří budou produkt používat
- počet minut potřebných k nastartování systému
- procento z celkového počtu instalací, které budou smazány týž den
- minimální počet MB RAM
- rok prodávání funkční verze (2095)
- rok, ve kterém majetek Billa Gatese přesáhne 10 miliard
- počet úspěšných instalací dohromady
- minimální doba instalace v hodinách
- počet minut po které budou fungovat
- průměrné IQ autorů
- počet příruček
- váha instalačního balíku v kg
    function perr($msg, $level)
    {
        echo $msg;
    }

    function readcsv_get_entity($fh, $sep = ';')
    {
        $entity = array();
        $attr = '';
        $eoe = false;

        while((! feof($fh)) && (! $eoe))
        {
            $ch = fgetc($fh);
            switch($ch)
            {
                case "\r":
                    break;
                case "\n":
                    $eoe = true;
                case $sep:
                    array_push($entity, $attr);
                    $attr = '';
                    break;
                case '"':
                    $ch = '';
                    while((! feof($fh)) && $ch != '"')
                    {
                        $ch = fgetc($fh);
                        $attr .= $ch;
                    }
                    $attr = rtrim($attr, '"');
                    break;
                default:
                    $attr .= $ch;
            }
        }

        if(feof($fh) && ($entity || $attr))
        {
            array_push($entity, $attr);
        }
        elseif(feof($fh))
        {
            $entity = false;
        }

        return $entity;
    }

    function readcsv_parsecsv($filename)
    {
        $ret = false;
        $sep = ';';
        $line = '';
        $line_num = 0;
        $cells = array();
        $names = array();

        $fh = fopen($filename, 'r');
        if(! $fh)
        {
            perr('Failed to open file \''
                . $file . "'\n", 8);
        }
        else
        {
        $line = '';
        while(! feof($fh))
        {
        $entity = readcsv_get_entity($fh, $sep);

        if($entity)
        {
        if($line_num == 0)
        {
        foreach($entity as $name)
        {
            array_push($names, trim($name, '"'));
        }
        }
        else
        {
        foreach($entity as $index => $val)
        {
        if(isset($names[$index]))
        {
            $cells[$line_num][$names[$index]]
                = trim($val, '"');
        }
        else
        {
            array_push($cells[$line_num],
                trim($val, '"'));
        }                            
        }
        }
        $line_num ++;
        }
        }
        fclose($fh);
        }

        return $ret;
    }
        
    function perr($msg, $level)
    {
        echo $msg;
    }

    function readcsv_get_entity($fh, $sep = ';')
    {
        $entity = array();
        $attr = '';
        $eoe = false;

        while((! feof($fh)) && (! $eoe))
        {
            $ch = fgetc($fh);
            switch($ch)
            {
                case "\r":
                    break;
                case "\n":
                    $eoe = true;
                case $sep:
                    array_push($entity, $attr);
                    $attr = '';
                    break;
                case '"':
                    $ch = '';
                    while((! feof($fh)) && $ch != '"')
                    {
                        $ch = fgetc($fh);
                        $attr .= $ch;
                    }
                    $attr = rtrim($attr, '"');
                    break;
                default:
                    $attr .= $ch;
            }
        }

        if(feof($fh) && ($entity || $attr))
        {
            array_push($entity, $attr);
        }
        elseif(feof($fh))
        {
            $entity = false;
        }

        return $entity;
    }

    function readcsv_parsecsv($filename)
    {
        $ret = false;
        $sep = ';';
        $line = '';
        $line_num = 0;
        $cells = array();
        $names = array();

        $fh = fopen($filename, 'r');
        if(! $fh)
        {
            perr('Failed to open file \''
                . $file . "'\n", 8);
        }
        else
        {
        $line = '';
        while(! feof($fh))
        {
        $entity = readcsv_get_entity($fh, $sep);

        if($entity)
        {
        if($line_num == 0)
        {
        foreach($entity as $name)
        {
            array_push($names, trim($name, '"'));
        }
        }
        else
        {
        foreach($entity as $index => $val)
        {
        if(isset($names[$index]))
        {
            $cells[$line_num][$names[$index]]
                = trim($val, '"');
        }
        else
        {
            array_push($cells[$line_num],
                trim($val, '"'));
        }                            
        }
        }
        $line_num ++;
        }
        }
        fclose($fh);
        }

        return $ret;
    }