Učíme se PHP online a nekupujem knihy :o)

>> Pro všechny, kdo mají rádi tento jazyk nebo pro ty, kteří se v něm chějí zdokonalit.



Lekce 10: Stringy I




- Jestli se ptáte, proč jsem lekci o stringách přesunul až na 10. lekci, tak je to proto, protože stringy mají dost široké možnosti a existuje opravdu spousty příkazů a funkcí pro práci s textem.
- Ani já se nebudu věnovat všem možným příkazům a tak... vše co zde nebude, tak najdete v manuálu.
- V první řadě si projdeme takový to základní. Aby jsme věděli, jak si upravit text bez námahy.


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


This page was loaded in 0.337422 seconds. © 2011-2025 by mimic | mimic.php5.cz
ICQ contact is 204-517-399