Práce s řetězci Řetězec je libovolný text nebo libovolná skupina znaků. Řetězec se také označuje jako string. Činnosti prováděné s řetězci: Počítání znaků Ořezávaní Záměna Šifrování a další
Formátování řetězců ořezávání řetězců chop() - ořízne prázdné znaky na konci ltrim() - ořízne prázdné znaky vlevo trim() - ořízne prázdné znaky na začátku a na konci <? $text=" Zítra půjdeme do školy "; $name=trim($text); echo $name; // vypíše – Zítra půjdeme do školy ?>
Změna velikosti písmen strtoupper() - všechna písmena velká strtolower() - všechna písmena malá ucfirst() - první písmeno v řetězci velké ucwords() - první písmena všech slov velká
Změna velikosti písmen Některé funkce pro práci s řetězci mají problém se správnou funkcí při používání kódování UTF-8. Lze využít knihovnu mbstring, která tento problém řeší. U změny velikosti písmen na malá lze použít: mb_strtolower($text,"utf-8")
Příklad Vytvořte proměnnou, ve které bude uložen řetězec "aHoj šKoLo!". Tento řetězec nechte vypsat tak, aby všechna písmena byla: velká malá pouze první písmeno v řetězci velké pouze první písmena všech slov velká Výpis jednotlivých řetězců musí být pod sebou
Řešení Obr. 1
Funkce pro spojování a dělení řetězců implode(separátor, pole) - spojí řetězce daným separátorem explode(separátor, řetězec) - vytvoří pole, roztrháním řetězce dle daného separátoru substr(řetězec, začátek, konec) - umožní pomocí počátečního a koncového znaku získat podřetězec z řetězce mb_substr(řetězec, začátek, konec,"utf-8") - umožní pomocí počátečního a koncového znaku získat podřetězec z řetězce – podpora kódování UTF-8
Funkce implode Ukázka spojení dvou řetězců z pole <? $jmeno = Array("Roman", "Blábolil"); $celejmeno = implode (" ", $jmeno); echo $celejmeno; ?>
Funkce explode Ukázka oddělení jména od domény u e-mailové adresy <? $email = ("blabolil@sosvaz.cz"); $pole = explode ("@", $email); echo $pole[0]."<br />"; echo $pole[1]; ?>
Funkce substr Získání podřetězce - 5 znaků zleva (znaky se počítají od 0) <? $test = ("Ahoj světe!"); echo mb_substr($test, 0, 5, "utf-8"); ?> Získání posledních 6 znaků echo mb_substr($test, -6, 6, "utf-8");
Testování délky řetězce strlen() - vrátí délku řetězce mb_strlen() - vrátí délku řetězce (pro kódování utf-8) <? $test = ("Ahoj světe!"); echo mb_strlen($test, "utf-8"); ?>
Vyhledávání řetězců strstr(řetězec, hledaný řetězec) - vyhledá daný řetězec nebo znak stristr(řetězec, hledaný řetězec) - nerozlišuje velikost písmen Pokud budete chtít otestovat, zda uživatel požaduje e-mail na zástupce nebo ředitele <? $test = ("chci adresu zástupce"); if (strstr($test, "zástupce")) $email = "blabolil@sosvaz.cz"; else if (strstr($test, "ředitel")) $email = "kabele@sosvaz.cz"; echo "Požadovaná adresa je ". $email; ?>
Nahrazení a odstranění znaků z řetězce Nahrazení hledané části <? $text="rkola"; $novy=str_replace ("r","š",$text); echo $novy; ?> Odstranění tagů HTML a PHP z řetězce $text="<b>škola</b>"; $novy=strip_tags ($text); echo $novy; ?>
Převod tagů v řetězci, zakódování řetězce Převod tagů v řetězci na entity HTML <? $text="<b>škola tučně</b>"; $novy=htmlspecialchars ($text); echo $novy; ?> Zakódování řetězce $text="<b>škola</b>"; $novy=crypt ($text); echo $novy; ?>
Převod řetězců na jiné znaky <? $text="školička"; $prevodni_tabulka = Array('ä'=>'a','Ä'=>'A','á'=>'a','Á'=>'A','à'=>'a','À'=>'A', 'ã'=>'a','Ã'=>'A','â'=>'a','Â'=>'A','č'=>'c','Č'=>'C','ć'=>'c','Ć'=>'C', 'ď'=>'d','Ď'=>'D','ě'=>'e','Ě'=>'E','é'=>'e','É'=>'E','ë'=>'e','Ë'=>'E', 'è'=>'e','È'=>'E','ê'=>'e','Ê'=>'E','í'=>'i','Í'=>'I','ï'=>'i','Ï'=>'I', 'ì'=>'i','Ì'=>'I','î'=>'i','Î'=>'I','ľ'=>'l','Ľ'=>'L','ĺ'=>'l','Ĺ'=>'L', 'ń'=>'n','Ń'=>'N','ň'=>'n','Ň'=>'N','ñ'=>'n','Ñ'=>'N','ó'=>'o','Ó'=>'O', 'ö'=>'o','Ö'=>'O','ô'=>'o','Ô'=>'O','ò'=>'o','Ò'=>'O','õ'=>'o','Õ'=>'O', 'ő'=>'o','Ő'=>'O','ř'=>'r','Ř'=>'R','ŕ'=>'r','Ŕ'=>'R','š'=>'s','Š'=>'S', 'ś'=>'s','Ś'=>'S','ť'=>'t','Ť'=>'T','ú'=>'u','Ú'=>'U','ů'=>'u','Ů'=>'U', 'ü'=>'u','Ü'=>'U','ù'=>'u','Ù'=>'U','ũ'=>'u','Ũ'=>'U','û'=>'u','Û'=>'U', 'ý'=>'y','Ý'=>'Y','ž'=>'z','Ž'=>'Z','ź'=>'z','Ź'=>'Z'); //Převodní tabulka pomocí pole je použita z důvodu kódování UTF-8 $novy = strtr($text, $prevodni_tabulka); echo $novy; ?>
Otázky k opakování K jakým účelům se používá funkce "trim"? Jaké funkce se používají pro změnu velikosti písma řetězce? Jaké funkce se používají pro spojování a dělení řetězců? K jakým účelům se používá funkce "strstr"?
Použité zdroje BLÁBOLIL, R. Informační a komunikační technologie. 3. rozšířené vydání. České Budějovice: KOPP, 2011. str. 407 Použité obrázky: Vlastní