Obsah
Nette\String
Nette\String je statická třída s užitečnými funkcemi pro práci s řetězci. Je navržena speciálně pro práci s řetězci v kódování UTF-8.
String::checkEncoding
Zjistí, je-li řetězec v požadovaném kódování.
public static bool checkEncoding (string $s, [string $encoding = 'UTF-8'])
Příklad:
$isUtf = String::checkEncoding($string, 'UTF-8');
String::fixEncoding
Vrací správně zakódovaný řetězec v určitém kódování. Výchozí
je UTF-8, případně je změněno druhým parametrem metody.
public static string fixEncoding (string $s, [string $encoding = 'UTF-8'])
Příklad:
$correctString = String::fixEncoding($string);
String::startsWith
Vrací TRUE v případě, že řetězec $haystack začíná
řetězcem $needle.
public static bool startsWith (string $haystack, string $needle)
Příklad:
$haystack = "Začíná";
$needle = "Za";
String::startsWith($haystack, $needle); // true
String::endsWith
Vrací TRUE v případě, že řetězec $haystack končí
řetězcem $needle.
public static bool endsWith (string $haystack, string $needle)
Příklad:
$haystack = "Končí";
$needle = "čí";
String::endsWith($haystack, $needle); // true
String::normalize
Odstraní z textu pravostranné mezery a sjednotí oddělovače řádků.
public static string normalize (string $s)
Příklad:
$normalizedString = String::normalize($string);
String::webalize
Upraví řetězec do tvaru použitelného v URL adresách. Odstraní
diakritiku a všechny znaky kromě alfanumerických nahradí oddělovačem slov
-.
public static string webalize (string $s, [string $charlist = NULL])
Příklad:
echo String::webalize("krásná webová adresa"); // vypíše krasna-webova-adresa
Mají-li být zachovány i jiné znaky, lze je vyjmenovat v druhém parametru funkce.
echo String::webalize("19. 2. podtržítková_akce", "._");
// 19.-2.-podtrzitkova_akce
Vstupní řetězec musí být kódován v UTF-8.
Pokud je v jiném kódování, převeďte jej funkcí iconv.
String::truncate
Ořízne řetězec na maximální délku a zachová celá slova, je-li to možné. Na konec oříznutého textu se přidá trojtečka, což lze změnit třetím nepovinným parametrem.
public static string truncate (string $s, int $maxLen, [string $append = "…"])
Příklad:
$text = 'Řekněte, jak se máte?';
echo String::truncate($text, 5); // 'Řekn…'
echo String::truncate($text, 20); // 'Řekněte, jak se…'
echo String::truncate($text, 30); // 'Řekněte, jak se máte?'
Vstupní řetězec musí být kódován v UTF-8.
Pokud je v jiném kódování, převeďte jej funkcí iconv.
Změna velikosti písmen v řetězci
$s = "Dobrý den";
// převést na malá
echo String::lower($s); // dobrý den
// převést na velká
echo String::upper($s); // DOBRÝ DEN
// každé první písmeno ve slově velké
echo String::capitalize($s); // Dobrý Den
Regulární výrazy
Třída String zapouzdřuje několik užitečných funkcí pro práci
s regulárními výrazy. Jejich společným důležitým rysem je, že
v případě jakékoliv chyby vyhodí výjimku
Nette\RegexpException.
public static array split (string $subject, string $pattern, [int $flags = 0])
Rozdělí řetězec do pole dle regulárního výrazu. Jako příznak
$flag je možné uvést PREG_SPLIT_NO_EMPTY nebo
PREG_SPLIT_OFFSET_CAPTURE, viz dokumentace PHP. Příklad:
$res = String::split('Prvni, druhy,treti', '~,\s*~'); // array('Prvni', 'druhy', 'treti')
$res = String::split('Prvni, druhy,treti', '~(,)\s*~'); // array('Prvni', ',', 'druhy', ',', 'treti')
Vyhledávání výrazů:
public static array match(string $subject, string $pattern, [int $flags = 0, [int $offset = 0]])
Hledá v řetězci dle regulárního výrazu a vrátí pole s jednotlivými
subvýrazy (pokud subvýrazy nepoužijete, vrátí se pole s jedním prvkem).
Jako příznak $flag je možné uvést
PREG_OFFSET_CAPTURE, viz dokumentace PHP. Příklad:
list($res) = String::match('Prvni, druhy,treti', '~[a-z]+~i'); // 'Prvni'
list($res) = String::match('Prvni, druhy,treti', '~\d+~'); // NULL
public static array matchAll(string $subject, string $pattern, [int $flags = 0, [int $offset = 0]])
Hledá v řetězci všechny výskyty dle regulárního výrazu a vrátí je
jako dvourozměrné pole. Jako příznak $flag je možné uvést
PREG_OFFSET_CAPTURE nebo PREG_PATTERN_ORDER, viz dokumentace PHP. (Narozdíl od
funkce preg_match_all je příznak PREG_SET_ORDER
výchozí). Příklad:
$res = String::matchAll('Prvni, druhy,treti', '~[a-z]+~i');
// array(0 => array('Prvni'), 1 => array('druhy'), 2 => array('treti'))
$res = String::matchAll('Prvni, druhy,treti', '~\d+~'); // array()
Záměny v řetězci:
public static string replace(string $subject, mixed $pattern, [mixed $replacement = NULL, [int $limit = -1]])
Provede v řetězci záměny dle regulárního výrazu. Druhý parametr
$pattern může kromě řetězce s regulárním výrazem nabývat
také hodnoty asociativního pole ve tvaru pattern =>
replacement. Jako třetí parametr $replacement lze uvést
callback. Příklad:
echo String::replace('Prvni, druhy,treti', '~[a-z]+~i', '*'); // '*, *,*'
echo String::replace('Prvni, druhy,treti', array('~[a-z]+~i' => '*')); // '*, *,*'
echo String::replace('Prvni, druhy,treti', '~[a-z]+~i', function($m) { return strrev($m[0]); }); // 'invrP, yhurd,itert'
Viz také:



