Archív Inet.sk Pôvodný autor: Rasťo Turek
04. 11. 2003 o 00:00 9118x

Php v praxi – štvrtá časť: Rozdelenie textu podľa vašej požiadavky

Je pomaly až neuveriteľné, že sa rútime do štvrtého dielu nášho seriálu. Dnes si povieme niečo o tom, ako si naformátovať text do vašej stránky podľa vami zadanej normy, trebárs 40 znakov na riadok. Tento programček nám však nebude dávať pomlčky, ak slovo nevôjde na riadok, ale nechá nám celé slovo na riadku, poprípade podľa podmienky ho presunie na ďalší riadok.
Php v praxi – štvrtá časť: Rozdelenie textu podľa vašej požiadavky

Celé sa to bude skladať len z jednej funkcie, ktorá nám bude logicky rozdeľovať text podľa našej požiadavky. To znamená, že jej musíme udať aj nejaké parametre. No najskôr si ukážme script a potom si ho vysvetlíme. Nazvime si script napríklad rozklad_textu.php.

<?php
function rozdel_text($text, $pocet, $break="<br>")
{
 $len = strlen($text);
 if ($len > $pocet)
 {
     $h    ='';
         $poslednyBiely = 0;
     $poslednyZnak   = 0;
     $poslednyBreak = 0;

     while ($poslednyZnak < $len)
  {
   $znak = substr($text, $poslednyZnak, 1);

   if (($poslednyZnak - $poslednyBreak > $pocet) && ($poslednyBiely > $poslednyBreak))
   {
    $h .= substr($text, $poslednyBreak, ($poslednyBiely - $poslednyBreak)) . $break;
    $poslednyZnak = $poslednyBiely + 1;
    $poslednyBreak = $poslednyZnak;
        }

        if ($znak == ' ' || $znak == chr(13) || $znak == chr(10))
   {
    $poslednyBiely = $poslednyZnak;
        }
        $poslednyZnak = $poslednyZnak + 1;
     }

 $h .= substr($text, $poslednyBreak);
 }
   else
 {
     $h = $text;
 }

return $h;
}
?>

Najskôr si opíšeme samotnú funkciu rozdel_text(), do ktorej si zadáme tri parametre. Prvým parametrom je $text, ktorý nám určí samotný text pre rozdelenie. Druhým parametrom je $pocet a tento parameter nám určuje, po koľkých znakoch sa nám text rozdelí. Nakoniec máme tretí parameter $break a pri tomto parametri sa na chvíľu pozastavíme. Do tohto parametru budeme totiž udávať všetky možné oddeľovače, ako napríklad <br> pre nový riadok, \n pre zobrazenie nového riadku, \t pre tabulátor a ďalšie formátovacie značky. Takto jednoducho si môžete určiť, ako bude váš text vyzerať po formátovaní. Teda formátovanie závisí len od vás a udáte ho spôsobom $break=“\n\t\r“. Takže, keď sme si vysvetlili základy, poďme sa pozrieť na celú funkciu pekne poporiadku.

Najskôr si určíme dĺžku zadávaného textu pomocou funkcie strlen(). Táto funkcia vracia dĺžku textu. Ďalej si určíme podmienku, že ak je vložený text väčší ako nami zadaná hodnota pre rozdelenie, tak budeme rozdelenie prevádzať a ak nie je, tak vrátime priamo vložený text. Určíme si 4 pomocné parametre $h pre náš text. Ak doplníte do tohto parametru nejaký text, tak sa bude zobrazovať na začiatku pred vloženým textom $poslednyBiely určuje, akú dĺžku bude mať prvá časť vety, ale len ak je hodnota parametru $poslednyZnak väčšia ako $pocet. Tento parameter však odstráni aj prvé písmeno v počiatočnej vete. Ďalej tu máme parameter $poslednyZnak, ktorý, ak je väčší ako $pocet, nám vždy zobrazí prvú vetu v takejto dĺžke. No a nakoniec máme štvrtý pomocný parameter a tým je $poslednyBreak. Ten nám určuje, koľko znakov odstránime z vkladaného textu, teda od začiatku. Už poznáme všetky pomocné parametre a môžeme sa pozrieť hlbšie do našej funkcie.

Vytvoríme si cyklus, ktorý sa bude prevádzať, ak je dĺžka vkladaného textu väčšia ako veľkosť prvej vety. V opačnom prípade by to význam nemalo. Tu si určíme parameter $znak, pomocou funkcie substr(), ktorá nám určuje čítanie textu podľa určitých kritérií. Vytvoríme si podmienku pre kontrolu logiky reťazca a naformátujeme výstup. Ďalej si vytvoríme podmienku pre nahradenie bieleho miesta v texte pomocou funkcie chr() a zadáme si hodnotu parametra $poslednyBiely = $poslednyZnak. Uzavrieme si podmienku a ešte do cyklu pridáme určenie parametru $poslednyZnak = $poslednyZnak + 1, aby sme zaručili, že dĺžka bude vždy plus jedna, teda aby sme zaručili, že sa text nebude deliť v slove. Nakoniec prvej podmienky vložíme do parametra $h odstránenie x znakov od začiatku textu pomocou parametru $poslednyBreak. No a v poslednom rade urobíme výstup z funkcie a teda navrátime hodnotu $h, ktorá predstavuje náš text.

Táto funkcia vám ponúka mnoho druhov formátovania s textom a v neposlednom rade aj mnoho pokročilejších nastavení pre výstup vami vkladaného textu. Čo je podľa môjho názoru dobrá vec a prečo som sa rozhodol napísať takýto script je to, že vám text neroztrhá, nedáva vám žiadne pomlčky, jednoducho buď ponechá celé slovo (čo síce môže prekročiť zadané delenie textu aj o niekoľko znakov), alebo nám slovo dá o riadok nižšie. Takto síce nedostaneme úplne rovné zarovnanie textu, ale aspoň si nemusíte trhať vlasy, že tam a tam vám script nedal pomlčku a hlavne formátovanie je rovnaké vo všetkých prehliadačoch, čo je dosť dôležitá podmienka.

Keďže už poznáme celú funkciu, poďme si do toho istého scriptu spraviť aj výstup. Spravíme si výstup pomocou cyklu for(), ktorý nám umožní pozrieť si výstupy od nami zadaného formátovania riadku až po najmenšiu čiastku. Teda my budeme klesať po desiatkach, je však možné klesať, či stúpať po akýchkoľvek jednotkách. Tu je celý výstup, dole si ho vysvetlíme.

<HTML>
    <HEAD>
  <TITLE>Rozklad textu</TITLE>
 </HEAD>
    <BODY>
<?php

$test = "Toto je príklad, ako správne deliť veľmi dlhý text. Samozrejme dajú sa využiť asi tri druhy spôsobu delenia, dokonca sa dá docieliť aj formátovanie pomocou \\n či odsadenie pomocou \\t. A nikdy nám to tie slová neroztrhá.";

echo("$test<BR><BR>");

 for ($r = 80; $r > 0; $r = $r - 10)
 {
  $rozdel = rozdel_text($test, $r);
  echo "$r<BR>$rozdel<BR><BR>";
 }
?>
    </BODY>
</HTML>

$test = "Toto je príklad, ako správne deliť veľmi dlhý text. Samozrejme dajú sa využiť asi tri druhy spôsobu delenia, dokonca sa dá docieliť aj formátovanie pomocou \\n či odsadenie pomocou \\t. A nikdy nám to tie slová neroztrhá.";

Keď sa pozriete na výstup do html, tak zistíte nasledovné. V prvom rade si určíme vstupný text, ktorý bude obsiahnutý v parametre $test. Tento text si vypíšeme, aby sme mali prehľad o formátovaní. Ďalej si dáme do cyklu podmienku, že $r je parameter pre delenie, takže si doň určíme, po koľkých znakoch sa nám majú deliť vety. Potom tu máme podmienku, že parameter $r musí byť vždy väčší od nuly. No a nakoniec si budeme prevádzať cyklus vždy spôsobom parameter $r mínus desať, teda sa nám bude text formátovať vždy o desať znakov menej na jeden riadok. Nakoniec pristúpime k samostatnému formátovaniu. Zavoláme si funkciu rozdel_text() a zadáme jej parametre. No a konečne si urobíme výstup formou, počet znakov v jednom riadku – riadok – delený text v x riadkoch – riadok – riadok.

Použitie:
Tento script môžete použiť do akejkoľvek stránky, kde potrebujete mať určitú dĺžku textu, napríklad v tabuľkách či pre potrebu grafickej úpravy. Prípadne použitie som už videl aj v guestbookoch alebo napríklad aj v takýchto internetových denníkoch ako je inet.sk.

Vylepšenia:
Neviem, ako by sa to dalo vylepšiť, ale vždy sa nájde nejaké to riešenie. Dúfam, že mi prípadné vylepšenia či pripomienky budete písať na email, nech som aj ja trošička skúsenejší. :-)

Upozornenia:
Pozor na tento spôsob vypísania. Máte dve možnosti, ako si vypisovať len jeden text, aby sa vám to stále nezmenšovalo. Každú vám ukážem už priamo na scripte. Prvou je používať podmienku if().

<?php
$test = "Toto je príklad, ako správne deliť veľmi dlhý text. Samozrejme dajú sa využiť asi tri druhy spôsobu delenia, dokonca sa dá docieliť aj formátovanie pomocou \\n či odsadenie pomocou \\t. A nikdy nám to tie slová neroztrhá.";
echo("$test<BR><BR>");
 if($r=80)
 {
  $rozdel = rozdel_text($test, $r);
  echo "$r<BR>$rozdel<BR><BR>";
 }
?>

a tou druhou je určiť si parameter $r niekde do stránky

<?php
$test = "Toto je príklad, ako správne deliť veľmi dlhý text. Samozrejme dajú sa využiť asi tri druhy spôsobu delenia, dokonca sa dá docieliť aj formátovanie pomocou \\n či odsadenie pomocou \\t. A nikdy nám to tie slová neroztrhá.";
echo("$test<BR><BR>");
$r=80;
$rozdel = rozdel_text($test, $r);
echo "$r<BR>$rozdel<BR><BR>";
?>

Tak a máme dokončený ďalší z našich dielov. Ďakujem za vaše názory a pripomienky, ktoré ste mi zaslali a dúfam, že v tomto trende budete naďalej pokračovať. Aj naďalej mi píšte, akú tému by ste chceli vidieť v našom mini seriále. Dúfam, že budú tieto témy pre vás užitočné a že vám pomôžu vo vašom programátorskom raste. Ako vždy si môžete stiahnuť tieto scripty kliknutím na tento odkaz.

Nabudúce sa pozrieme na päť malých scriptov, ktoré vám pomôžu a skrášlia vaše stránky. Všetkým želám krásny a príjemný týždeň.


Rastislav Turek // break.sk

Novinky a inšpirácie

Z nášho blogu

Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami Oznamy
21. 10. 2026

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami

Vývojársky tím PHP vydal dôležité bezpečnostné záplaty pre všetky oficiálne podporované verzie PHP 8. Na našich serveroch sme nezaváhali ...

Čítať viac
Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás? Oznamy
01. 10. 2026

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás?

Google oznámil, že v januári 2027 zruší v Gmaile funkciu „Odoslať ako“ (Send as) pre e-mailové adresy od iných poskytovateľov. Ak ste si ...

Čítať viac
Večerná „prestávka“ pre server VIP033 Oznamy
25. 09. 2026

Večerná „prestávka“ pre server VIP033

Neustále pracujeme na tom, aby vaše weby bežali hladko, rýchlo a bezpečne. Technológie idú míľovými krokmi vpred a my v Inet.sk s nimi dr...

Čítať viac
Novinky na Inet.sk (09 / 2026) Novinky
09. 09. 2026

Novinky na Inet.sk (09 / 2026)

Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...

Čítať viac

Podpora klientom

Máte ďalšie otázky?

Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.

Zistiť viac

Naše výhody

Prečo si nás vybrať?

Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.

Sme skutočný slovenský webhosting

Slovenská
firma

Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.

Na nás sa môžete kedykoľvek spoľahnúť

Dlhoročné
skúsenosti

Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.

Naši prví zákazníci sú stále s nami

Spokojní
zákazníci

Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1250 klientov.

Maximálna bezpečnosť

Maximálna
bezpečnosť

Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.

Prozákaznícka podpora

Ochotná
podpora

Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.

Kvalita a dobrá cena

Férová
cena

Cena pri obnove je rovnaká ako pri objednávke. Nezdražujeme po prvom roku a bez skrytých poplatkov.

U nás sa Vám nič nestratí

Pravidelné
zálohovanie

Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.

Svižný Admin Panel nájdete len u nás

Prehľadný
Admin Panel

Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.

Správa používateľov

Správa
používateľov

Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.

Máme zľavy pre verných klientov

Vernostné
zľavy

Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.

My Vás nebudeme obmedzovať

Bez
obmedzení

Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.

Hosting pre WordPress

WordPress
na 1 klik

Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.

Referencie

Spokojní zákazníci

Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.

Auto 100
Bystricoviny
eCall Slovakia
Filip Jančík
Frost
Merkury Broker
Mi:Su Design
Mesto Nitra
Pro Clienta
Schneider Lekáreň
Vego Marketing
Mesto Zlaté Moravce

Všetky ceny sú uvádzané bez DPH
© 2006 - 2026, Inet.sk, s. r. o., Všetky práva vyhradené

Na našej stránke používame "cookies". Vďaka nim sledujeme návštevnosť, prispôsobujeme reklamu a používateľské nastavenia, čo zlepšuje Váš zážitok z našej stránky. Súhlasíte s ich spracovaním?
Vlastné nastavenia cookies