PHP formátování řetězců
V této části se budeme zabývat relativně podrobně formátováním řetězců v PHP. Kdy se nám může formátování řetězců hodit? Například při generování loginů, jako jednoznačných identifikátorů uživatelů, nebo při formátování vstupu od uživatele. Každá aplikace tohoto typu musí tyto kontroly provádět. A to alespoň do té míry aby nesprávné zadání nezpůsobilo havárii systému nebo nesprávné výstupní zpracování případného výpisu zadaných dat. květen 06 Střední průmyslová škola Bruntál 2
Funkce substr () Vrací podřetězec podle zadaného intervalu. string substr ( string string, int start [, int length] ) string string je vstupní řetězec z něhož se bude extrahovat výsledek. int start vyjadřuje pořadí znaku ve formátovaném řetězci, od kterého se bude ořezávat. Číslován je od nuly. [, int length] je délka podřetězce od startovního znaku Zdroj: http://php.ftp.cvut.cz/manual/cs/function.substr.php květen 06 Střední průmyslová škola Bruntál 3
Příklady: <?php echo substr("práce s řetězci", 1)."<br>"; // bezezměn echo substr("práce s řetězci", 5, 11)."<br>"; // řetězci echo substr("práce s řetězci", 0, 5)."<br>"; // Práce echo substr("práce s řetězci", -1)."<br>"; // i echo substr("práce s řetězci", -7)."<br>"; // řetězci echo substr("práce s řetězci", -10, 4)."<br>"; // s ř?> květen 06 Střední průmyslová škola Bruntál 4
Funkce substr_replace () Funguje podobně jako substr () s tím, že vybraný podřetězec nahradí jiným. string substr_replace ( string string, string replacement, int start [, int length] ) string replacement řetězec který má být substituován. Délka je libovolná. Ostatní parametry viz. předchozí fce. Zdroj: http://www.php.net/manual/cs/function.substr-replace.php květen 06 Střední průmyslová škola Bruntál 5
Příklady: <?php echo substr_replace ('Bruntál', 'Br.', 0)."<br>"; // Kompletní nahrazení za Br. echo substr_replace ('Bruntál', 'SPŠ ', 0, 0)."<br>"; // SPŠ Bruntál echo substr_replace ('Bruntál', ' 792 01', 7, -1)."<br>"; // Bruntál 792 01 echo substr_replace ('Bruntál', 'Á', -2, -1)."<br>"; // BruntÁl echo substr_replace ('Bruntál', 'x', -6, -1)."<br>"; // Bxl - zkuste odvodit proč??> květen 06 Střední průmyslová škola Bruntál 6
Funkce substr_count () Tato funkce spočítá počet výskytů podřetězce ve vstupní řetězci. int substr_count ( string haystrack, string needle ) string haystrack původní řetězec. string needle zde zadáte řetězec, jehož počet má být vypsán. Zdroj: http://www.php.net/manual/cs/function.substr-replace.php květen 06 Střední průmyslová škola Bruntál 7
PHP a MySQL - formátování času Příklady: <?php echo substr_count("ahoj jak se máte?", "?"); // 1 echo substr_count("ahoj jak se máte?", "Ahoj"); // 1 echo substr_count("ahoj jak se máte?", "e a"); // 0 - proč? echo substr_count("ahoj jak se máte?", (""); // 0 - proč??> květen 06 Střední průmyslová škola Bruntál 8
Funkce str_pad () Doplní řetězec na určitou délku string str_pad ( string input, int pad_length [, string pad_string [, int pad_type]] ) string input původní řetězec. string pad_lenght délka nového řetězce. pad_string definice posloupnosti znaků, které se mají doplnit na požadovanou délku pad_type způsob doplněníní, respektive umístění. STR_PAD_LEFT STR_PAD_BOTH STR_PAD_RIGHT Zdroj: http://www.php.net/manual/cs/function.str-pad.php květen 06 Střední průmyslová škola Bruntál 9
PHP a MySQL - formátování času Příklady: <?php echo str_pad("ahoj", 8)."<BR>"; // vypíše "Ahoj " není zadán řetězec - doplní se nulami echo str_pad("ahoj", 8, " ", STR_PAD_RIGHT)."<BR>"; // vypíše "Ahoj " není zadán řetězec - doplní se nulami echo str_pad("ahoj", 9, "000", STR_PAD_LEFT)."<BR>"; // "00000Ahoj" echo str_pad("ahoj", 10, "+", STR_PAD_BOTH)."<BR>"; // "+++Ahoj+++" echo str_pad("ahoj", 9, "", STR_PAD_LEFT)."<BR>"; // Zamyslete se nad tím jak dopadne výstup zde??> květen 06 Střední průmyslová škola Bruntál 10
Funkce str_pad () Doplní řetězec na určitou délku string str_repeat ( string input, int multiplier ) string input řetězec, který chceme aby se opakoval. int multiplier počet opakování řetězce. Zdroj: http://www.php.net/manual/cs/function.str-repeat.php květen 06 Střední průmyslová škola Bruntál 11
PHP a MySQL - formátování času Příklady: <?php echo str_repeat ("01", 3)."<br>"; // vypíše na výstup řetězce "010101" echo str_repeat (" ", 3)."<br>"; // vypíše na výstup řetězce "" - proc? echo str_repeat(" ", 3).str_repeat("2", 3)."<br>"; // vypíše na výstup řetězce "222" echo str_repeat ("", 3)."<br>"; // zamyslete se nad tím jaký výstup bude mít tento příkaz??> květen 06 Střední průmyslová škola Bruntál 12
Funkce str_replace () Tato funkce nahradí všechny výskyty hledaného textového vstupu string str_replace ( string needle, string str, string haystack [, int &count] ) string needle hledaný výskyt. string str řetězec, který se má vsunout. string haystack původní řetězec. int &count počet nahrazení. Zdroj: http://www.php.net/manual/cs/function.str-replace.php květen 06 Střední průmyslová škola Bruntál 13
PHP a MySQL - formátování času Příklady: <?php echo str_replace("a", "ahoj", "**a**")."<br>"; // na výstupu bude "**ahoj**" echo str_replace("a", "ahoj", "*a*a*a*")."<br>"; // na výstupu bude "*ahoj*ahoj*ahoj*" echo str_replace("a", "", "**a**")."<br>"; // na výstupu bude "****" echo str_replace("", "1", "*a*")."<br>"; // na výstupu "*a*" echo str_replace("", "1", "*")."<br>"; // na výstupu "*"?> květen 06 Střední průmyslová škola Bruntál 14
Funkce str_split () Tato funkce převede vstupní řetězec na pole. array str_split ( string string [, int split_length] ) string string vstupnířetězec. split_length počet znaků prvků jednotlivého pole. Zdroj: http://www.php.net/manual/cs/function.str-split.php květen 06 Střední průmyslová škola Bruntál 15
PHP a MySQL - formátování času Příklady: <?php echo str_split("ahoj")."<br>"; // naformátuje výstup: /*Array ( [0] => a [1] => h [2] => o [3] => j )*/ echo str_split("ahoj", 2)."<br>"; // naformátuje výstup: /*Array ( [0] => ah [1] => oj )*/?> květen 06 Střední průmyslová škola Bruntál 16