IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

8. diel - Opakovanie textových reťazcov v PHP

V predchádzajúcej lekcii, Vlastnosti textových reťazcov a práce s medzerami , sme si ukázali, ako zistiť vlastnosti textových reťazcov a ako pracovať s medzerami pomocou funkcií v PHP.

V tejto lekcii kurze PHP funkcií si vymenujeme a detailne popíšeme funkcie pre opakovanie znakov alebo častí textových reťazcov.

str_repeat()

Funkcia str_repeat() opakuje znaky alebo textové reťazce, koľkokrát len chceme. Funkcia str_repeat() prijíma dva parametre. Prvým je náš textový reťazec, druhým parametrom je počet opakovaní tohto reťazca. Ukážme si príklad tejto funkcie:

$text = "Yay!";
$str_repeat = str_repeat($text, 10);
print($str_repeat);

Funkcia str_repeat() bude opakovať náš textový reťazec "Yay!". Dostaneme teda nový textový reťazec, kde sa náš reťazec bude vyskytovať presne 10 krát za sebou zoradený zľava doprava:

Funkce str_repeat()
localhost

Funkcia je multi-byte safe, teda sa nemusíme obávať použitie znakov s diakritikou.

Druhý parameter je vyžadovaný (anglicky required), teda ho nemožno vynechať. Pokiaľ tento parameter bude nulový, dostaneme prázdny reťazec.

str_shuffle()

str_shuffle() je funkcia, ktorá náhodne zamieša znaky medzi sebou v zadanom textovom reťazci. Prijíma iba jeden parameter, ktorým je náš reťazec. Jednoduchým príkladom teda môže byť:

$text = "Hello";
$str_shuffle = str_shuffle($text);
print($str_shuffle);

Nie je náhodou, akým spôsobom funkcia str_shuffle() znaky mieša. Všetko je ovplyvnené randomizačním algoritmom, ktorý sa od verzie PHP 7.1 zmenil na generátor náhodných čísel Mersenne Twister, bol teda náhradou za pomalší náhodne priradený algoritmy rand() a srand().

Funkcia str_shuffle() nám vráti zakaždým iný výsledok náhodne prohozených znakov v našom textovom reťazci, príkladom môže byť:

Funkce str_shuffle()
localhost

Dôvod, prečo je zakaždým textový reťazec zamiešaný iným spôsobom, je nešpecifikovanú tzv. Semienka (seed). Miešanie znakov v textovom reťazci možno teda riadiť pridaním napríklad randomizačního algoritmu srand(), do ktorého prvého parametra seed zapíšeme 5:

srand(5);
$text = "Hello";
$str_shuffle = str_shuffle($text);
print($str_shuffle);

Seed sme tu nastavili pomocou srand() na hodnotu 5, teda pre funkciu str_shuffle() bude použitý stále ten rovnaký spôsob miešania znakov v závislosti od hodnoty seedu. Výsledkom potom bude:

Funkce str_shuffle()
localhost

Semienko (seed) je náhodné číslo (alebo pole), ktoré sa používa pri začatí generátora náhodných čísel. Generátor teda pri použití iného semienka vracia inú sekvenciu dát.

Takéto semienko môžete poznať pri náhodne generovaných máp, často napríklad v hre Minecraft, kde môžete vygenerovať úplne rovnaký svet koľkokrát chcete.

Funkcia str_shuffle() nie je multi-byte safe. Použitím diakritiky funkcie vracia nesprávne hodnoty!

strrev()

Funkcia, ktorá vráti prevrátený textový reťazec nášho pôvodného reťazca. Funkcia strrev() za parameter prijíma iba náš textový reťazec. Uvedieme si príklad:

$text = "Natrhali jsme jablka";
$strrev = strrev($text);
print($strrev);

Funkcia teda prevráti pôvodnej reťazec "natrhala sme jablka" a vráti ho otočený:

Funkce strrev()
localhost

Funkcia strrev() nie je multi-byte safe. Znaky obsahujúce diakritiku nebudú správne prevrátené!

str_rot13()

str_rot13() je funkcia, ktorá v zadanom textovom reťazci zamieša znaky, ale nie medzi sebou ani náhodne. Každý znak v textovom reťazci je posunutý o 13 miest v abecede. Textový reťazec teda možno zakódovať, ale aj dekódovať. Funkcia prijíma jeden parameter, ktorým je textový reťazec. Ukážme si príklad:

$text = "Adam byl venku";
$str_rot13 = str_rot13($text);
print($str_rot13);

Každý znak teda bude posunutý o 13 miest v abecede, výsledný reťazec je:

Funkce str_rot13()
localhost

Avšak ak túto funkciu použijeme znovu na náš zakódovaný reťazec, funkcia text dekóduje a my tak dostaneme späť náš pôvodný textový reťazec:

$text = "Adam byl venku";
$str_rot13 = str_rot13($text);
print($str_rot13 . "<br>");

$str_rot13_decode = str_rot13($str_rot13);
print($str_rot13_decode);

Na stránke potom uvidíme ako zakódovaný, tak dekódovaný textový reťazec:

Funkce str_rot13()
localhost

Čísla alebo špeciálne znaky v textovom reťazci nebudú prehodené!

$text = "Venku je 25°C";
$str_rot13 = str_rot13($text);
print($str_rot13);

V reťazci sa vyskytujú ako čísla, tak špeciálny znak stupňa °. Výsledkom na stránke bude textový reťazec:

Funkce str_rot13()
localhost

Ako to, že funkcia str_rot13() náš text zakóduje a rovnakou funkciou dekóduje? Je to jednoduché, anglická abeceda má dokopy 26 písmen, čiže polovica je 13 znakov. Keď teda vyberieme písmeno A, posunieme ho o 13 miest v abecede, dostaneme písmeno N. Keď tento proces zopakujeme, dostaneme sa znova na písmeno A hneď po písmene Z. Toto je tiež dôvod, prečo funkcia nepodporuje diakritiku a ďalšie špeciálne znaky (nie je multi-byte safe).

V ďalšej lekcii, Malé a veľké písmená v textovom reťazci , si ukážeme, ako v textových reťazcoch meniť veľkosť písmen.


 

Predchádzajúci článok
Vlastnosti textových reťazcov a práce s medzerami
Všetky články v sekcii
PHP funkcie
Preskočiť článok
(neodporúčame)
Malé a veľké písmená v textovom reťazci
Článok pre vás napísal Pavel Vaněček
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje psaní článků na Itnetwork.cz
Aktivity