Velikost písmen
- Pro velikost písmen máme 5 funkcí. Tak si je budeme procházet popořadě.
- První bude funkce strtolower(). Tato funkce nastaví veškerý text na malá písmena.
Pozor: U všech těchto funkcí nefunguje převod diakritiky, takže z ě to neudělá Ě!
$slovo = strtolower("AhOJ SvetE"); // nastavi na "ahoj svete"
- Opakem této funkce je
strtoupper(), která převede text na velká písmena.
$slovo = strtoupper("AhOJ SvetE"); // nastavi na "AHOJ SVETE"
- Další užitečnou funkcí je
ucfirst(), která nastaví první písmeno v celém stringu na velký znak.
$slovo = ucfirst("ahoj svete"); // nastavi na "Ahoj svete"
- Opět opakem této funkce je
lcfirst(), která nastavuje první písmeno na malé.
$slovo = lcfirst("AHOJ SVETE"); // nastavi na "aHOJ SVETE"
- Upravenou funkcí od
ucfirst() je funkce
ucwords(), která nastaví v
každém slově první písmeno velké.
$slovo = ucwords("ahoj svete"); // nastavi na "Ahoj Svete"
Úpravy textu
- První funkce o které si řekneme bude addslashes().
- Tato funkce přidá zpětné lomítko za nebezpečné znaky -> [", ', \]
- Používá se hlavně pro vstupy do databáze, kde je nutno zabezpečit tyto znaky, ale lze použít i jinde.
$slovo = addslashes('Ahoj "super" \ -> svete'); // upravi na "Ahoj \"super\" \\ -> svete"
- Opakem této funkce je
stripslashes(), která odebere zpětná lomítka.
$slovo = stripslashes('Ahoj \"super\" \ -> svete'); // upravi na "Ahoj "super" -> svete"
- Dále jsem si připravil funkci
nl2br(), která nahrazuje nový řádek
\n za
<br/>.
- Tato funkce je použitelná hlavně pro ty z vás, kteří máte řaději zápis nového řádku jako
\n. Bohužel tento typ mi funguje pouze v opeře a ještě né tak úplně správně.
$slovo = nl2br("ahoj\nsvete"); // upravi na "ahoj
svete"
- Nyní si ukážem, jak odstranit mezery ze začátku a konce textu.
- Začneme odstraněním mezer ze začátku textu... k tomu slouží funkce
ltrim().
- Z konce textu bude
rtrim() a z obou stran jen
trim().
$slovo = ltrim(" ahoj svete "); // upravi na "ahoj svete "
$slovo = rtrim(" ahoj svete "); // upravi na " ahoj svete"
$slovo = trim(" ahoj svete "); // upravi na "ahoj svete"
- Teď bych začal s něčím užitečným pro výpis.
- V předchozí verzi jsme se naučili používat
printf(), ale zdá se mi, že tomu stejně moc nerozumíte, tak si ukážem jinej způsob.
- Jedná se o funkci
str_pad(). Tato funkce slouží k tomu, že prodloužíme string na určitý počet znaků.
- Uvedu příklad: Máme slovo
ahoj, které má 4 znaky. Já toto slovo prodloužim na 8 znaků a zbylý 4 znaky nahradím vlastními.
- Tato funkce má 4 parametry, kde první je náš text, druhý nový počet znaků, třetí nový znak a čtvrtý mód.
- Módy jsou následující:
STR_PAD_RIGHT = zapíše znaky doprava (původní nastavení)
STR_PAD_LEFT = zapíše znaky doleva
STR_PAD_BOTH = zapíše znaky z obou stran (rozdělí počet nových znaků)
/* vypise:
* Martin........................26
* Pepa..........................30
*/
echo str_pad("Martin", 30, ".").(26)."
";
echo str_pad("Pepa", 30, ".").(30);
echo str_pad("Martin", 30, ".", STR_PAD_RIGHT).(26); // Martin..............26
echo str_pad("Martin", 30, ".", STR_PAD_LEFT).(26); // ..............Martin26
echo str_pad("Martin", 30, ".", STR_PAD_BOTH).(26); // .......Martin.......26
- Jako další funkci bych určitě zmínil
str_repeat(). Tato funkce je velice užitečná v tom, že nemusíte tvořit cyklus pro vypsání nějakého slova 5x,
ale stačí vám tato funkce, která to udělá za vás.
- Funkce má pouze 2 parametry, kde první je text nebo znak, který se má opakovat a druhý je počet opakování.
echo str_repeat("-", 5); // -----
echo str_repeat("_.-.", 8)."_"; // _.-._.-._.-._.-._.-._.-._.-._.-._
echo str_repeat("ahoj
", 3); // ahoj
ahoj
ahoj
- Další výborná funkce, která vám umožní nahradit nějaký znak nebo celé slovo za něco jiného je
str_replace().
- Má 4 parametry, kde první je hledaný znak nebo slovo, druhý za co se má nahradit, třetí zdroj a čtvrtý vrací počet nalezených výrazů.
- Poslední parametr není povinný.
$slovo = "Ahoj svete jak se mas?"; // nas string
// vypise upraveny string, kde nahradi male "a" za "A" a do $pocet ulozi pocet nalazenych znaku
echo str_replace("a", "A", $slovo, $pocet); // vypise: "Ahoj svete jAk se mAs?"
echo $pocet; // vypise: 2
echo str_replace(" ", "_", $slovo); // vypise: "Ahoj_svete_jak_se_mas?"
- Je tu i možnost pracovat s polem, kde v prvním poli máme slova která hledáme a v druhém poli, za co se mají nahradit.
- Obě pole musí být stejně velké.
$hledame = array('ahoj', 'svete');
$nahradime = array('[X]', '[O]');
echo str_replace($hledame, $nahradime, 'ahoj super svete'); // vypise: "[X] super [O]"
- Další funkce je podobná jak předchozí, jen s tím rozdílem, že je určená pro výměnu znaků a podřetězců.
- Jedná se o fukci
strtr(). Tato funkce má 3 parametry, kde první je tentokrát zdroj, druhý "z" a třetí "do".
echo strtr("ahoj svete", 'e', '_'); // vypise: "ahoj sv_t_"
echo strtr("ahoj svete", 'ahoj', '.'); // vypise: ".hoj svete" - bere pouze znaky
- Stejně jako předešlá funkce, tak i tato podporuje pole (znaků).
- Pokud však použijeme pole znaků, tak funkce bude mít pouze 2 parametry a to zdroj a pole.
$pole = array(
'a' => 'A',
'e' => 'E',
'o' => 'O'
);
echo strtr("ahoj svete", $pole); // vypise: "AhOj svEtE"
- Další funkce nám trochu připomene funkci
rand(), protože se jedná o podobný princip, jen s tím rozdílem, že zde negenerujeme čísla od a do,
ale generujeme směs znaků ze vstupních znaků.
- Funkce se jmenuje
str_shuffle() a má jeden parametr.
// vypise treba: "3768509142" a po refreshnuti opet zmeni na jiny tvar
echo str_shuffle("1234567890");
echo str_shuffle("1234567890abcdef"); // generuje nahodnej hex tvar
echo str_shuffle(".....-----"); // generuje morseovku o 10 znacich
- Jako další funkci bych vám představil
str_split(). Tato funkce převádí string do pole.
- Funkce má 2 parametry, kde první je náš text a druhý je počet znaků na jeden záznam v poli.
$slovo = "ahoj svete"; // nas text
// do pole ulozi kazdy znak zvlast (velikost pole = pocet znaku textu)
$pole1 = str_split($slovo);
// do pole ulozi znaky po 3, takze: "aho", "j s", "vet", "e", a velikost pole je 4
$pole2 = str_split($slovo, 3);
- Určitě vás napadlo, jak porovnat 2 texty. Ano, jde to přes klasické porovnání textů, ale existuje i speciální funkce na to a to
strcmp().
- Tato funkce má 2 parametry, kde oba parametry představují texty, který se mají porovnat.
Pozor: Pokud se texty shodujou, tak funkce vrací
false nebo
0!
// lze to zapsat pomoci podminky - pokud je shoda, tak to napise OK
if (!strcmp("aa", "aa")) echo "OK";
echo strcmp("a", "a"); // napise 0 (shoda)
echo strcmp("a", "b"); // napise 1
// pomoci ternalni podminky
echo !strcmp("xxx", "yyy") ? "stejne" : "odlisne"; // napise "odlisne"
- Nyní vám ukážu další výbornou funkci, která odstraňuje z textu všechny HTML a PHP tagy a to
strip_tags().
- Funkce má 2 parametry, kde první je vstupní text a druhý určuje tagy, které se mají povolit.
$text = 'Ahoj svete
, jak
se mas?';
echo strip_tags($text); // vypise: "Ahoj svete, jak se mas?"
// vypise: "Ahoj svete, jak
se mas?"
echo strip_tags($text, "<h1><a>");
Dobrovolný domácí úkol
1) Vytvořte si proměnnou s textem a odeberte z textu veškerou diakritiku, která se může vyskytovat v českém jazyce.
Bude platit pro velké i malé znaky a jako text můžete použít ěščřžýáíé...dťňóúů...ĚŇŮ.
$text = "ěščřžýáíé...dťňóúů...ĚŇŮ"; // nejaky text
$chars = array( // pole znaku pro prevod
'ě' => 'e', 'š' => 's', 'č' => 'c', 'ř' => 'r', 'ž' => 'z', 'ý' => 'y',
'á' => 'a', 'í' => 'i', 'é' => 'e', 'ó' => 'o', 'ď' => 'd', 'ť' => 't',
'ň' => 'n', 'ú' => 'u', 'ů' => 'u',
'Ě' => 'E', 'Š' => 'S', 'Č' => 'C', 'Ř' => 'R', 'Ž' => 'Z', 'Ý' => 'Y',
'Á' => 'A', 'Í' => 'I', 'É' => 'E', 'Ó' => 'O', 'Ď' => 'D', 'Ť' => 'T',
'Ň' => 'N', 'Ú' => 'U', 'Ů' => 'U'
);
echo strtr($text, $chars); // vypise text bez diakritiky
2) Vytvoříme nějaký text a převedem ho do md5. Nyní celý hash rozdělíme na pole znaků (32 znaků) a každý znak převedeme opět do md5.
To celé ukládáme zvlášť do textu (jeden dlouhý text složený z md5) a na koncí to celé převedem do md5 a vypíšem.
$chars = str_split(md5("mimic")); // prevede na md5 a rozdeli do pole na jednotlive znaky
$out = null; // vystupni text
foreach ($chars as $chr)
{
$out.= md5($chr); // prochazi pole a kazdy znak prevadi do md5
}
echo md5($out); // cely vstup prevede do md5 a vypise