Jak pracovat s řetězci v PHP?

Dnes si ukážeme, jaké funkce použít pro úpravu dělení proměnných.
Když máte proměnnou a v ní hodnotu, budete většinou chtít, aby zůstala neporušená a mohli jste s ní jakkoliv manipulovat. Co když ale budete chtít text v proměnné obrátit, vypsat prvních pět znaků nebo převést text v proměnné na malá či velká písmena? Pro tento případ máme v PHP hned několik funkcí, které nám především usnadní práci před definováním vlastních funkcí.

V následujících řádcích si popíšeme všechny funkce, které nám usnadní práci s řetězci.

StrChr

První popisovaná funkce má za úkol najít první výskyt znaku, který nadefinujeme ve funkci, a vypsat řetězec od tohoto znaku včetně.

Příklad

V proměnné $number máme uložena čísla od nuly do devíti a budeme chtít vypsat 56789.

<?
/* První parametr funkce StrChr musí obsahovat jako první hodnotu řetězec a jako druhou znak */
$retezec = "0123456789";
$znak = "5";
$number = StrChr($retezec, $znak);
echo $number;
?>

StrCSpn

Funkce vypíše pozici prvního výskytu znaku řetězce, který jsme zadali.

Příklad: Budeme mít proměnnou s textem "Odpověděl: Bude to v pořádku." a budeme chtít zjistit, jestli náhodou neobsahuje znaky, které zadáme. Zadané znaky přitom budou "@#$%^&*():". Skript vypíše 9, protože za touto pozicí se nalézá dvojtečka, která byla v množině znaků pro ověření.

<?
/* Do funkce nejprve zadáme řetězec, který chceme prozkoumat, a jako druhý parametr znaky pro ověření existence v proměnné. */
$retezec = "Odpověděl: Bude to v pořádku.";
$znaky = "@#$%^&*():";
$fce = StrCSpn($retezec, $znaky);
echo $fce;
?>

StrLen

Jak už napovídá tato funkce ve svém názvu, jedná se o délku řetězce. Přesněji vypíše délku řetězce včetně mezer.

Příklad: Máme text článku uložený v proměnné a chceme zjistit jeho délku. Funkce vypíše 74 (znaků).

<?
/* Neuděláme nic jednoduššího, než že do parametrů funkce StrLen dáme řetězec s článkem a vypíšeme. */
$retezec = "Toto je text článku, kde budeme používat funkci StrLen pro zjištění délky.";
$delka = StrLen($retezec);
echo $delka;
?>

StrPos

Nalezne část hledaného řetězce v hlavním řetězci, tzn., že se vyskytuje naprosto přesně znak po znaku. Funkce vypíše číselně pozici výskytu hledaného řetězce.

Příklad: V textu "Čtu články na Internetu." chceme najít slovo "Internet". Při vypsání dostaneme číslo 14, protože od čtrnácté pozice začíná slovo Internet.

<?
/* Jako první parametr napíšeme hlavní řetězec a za něj hledaný text. */
$retezec = "Čtu články na Internetu.";
$hledany_text = "Internet";
$pozice = StrPos($retezec, $hledany_text);
echo $pozice;
?>

StrRChr

Vypíše text od posledního hledaného znaku včetně.

Příklad: V textu "qwerety" chceme vypsat text od posledního znaku "e". Vypíše se nám "ety".

<?
/* všeobecný formát je StrRChr($retezec, $znak); */
$retezec = "qwerety";
$znak = "e";
$posledni_vyskyt = StrRChr($retezec, $znak);
echo $posledni_vyskyt;
?>

StrRPos

Funkce pracuje téměř stejně jako předchozí s tím rozdílem, že vypíše pozici posledního hledaného znaku v řetězci.

Příklad: Když budeme mít opět text "qwerety" a hledaný znak "e", funkce nám vypíše číslo 4.

<?
/* všeobecný formát zůstává stejný jako u předchozí funkce */
$retezec = "qwerety";
$znak = "e";
$posledni_vyskyt = StrRPos($retezec, $znak);
echo $posledni_vyskyt;
?>

StrSpn

Vypíše počet znaků od začátku řetězce, které vyhovují zadaným znakům.

Příklad: S textem "Ahoj Davide!" porovnáme "Ahoj Petře!". Vypíše se číslo 5.

<?
/* všeobecný formát zůstává stejný jako u předchozí funkce */
$retezec = "qwerety";
$znak = "e";
$posledni_vyskyt = StrRPos($retezec, $znak);
echo $posledni_vyskyt;
?>

StrStr

Najde v řetězci první výskyt hledaného textu a vypíše řetězec od hledaného textu včetně.

Příklad: V řetězci "qwerety" chceme vypsat všechny znaky od "re", vypíše se "rety".

<?
/* všeobecný formát zůstává stejný jako u předchozí funkce */
$retezec = "qwerety";
$mnozina_znaku = "re";
$prvni_vyskyt = StrStr($retezec, $mnozina_znaku);
echo $prvni_vyskyt;
?>

StrRev

Obrátí text v řetězci

Příklad: To se mi zdá nadmíru jasné :) Po provedení skriptu se z textu "Mám se dobře." stane ".eřbod es máM".

<?
/* všeobecný formát je StrRev($retezec); */
$retezec = "Mám se dobře.";
$obraceny_text = StrRev($retezec);
echo $obraceny_text;
?>

Další dvě funkce slouží pro převedení všech znaků na velká či malá písmena, takže si je popíšeme v jednom příkladě.

StrToLower a StrToUpper

První funkce převede text na malá písmena, druhá funkce je zase dokáže převést na velká.

Příklad: Převedeme text "SkVěLá ZáBaVa" pomocí těchto funkcí.

<?
/* všeobecný formát zůstává stejný jako u předchozí funkce */
$retezec = "SkVěLá ZáBaVa";
$mala_pismena = StrToLower($retezec);
$velka_pismena = StrToUpper($retezec);
echo "$mala_pismena<br>$velka_pismena";
?>

A nakonec jedna z nejpoužívanějších funkcí, která dokáže vypsat text od/do určitých znaků.

SubStr

Vypíše definovaný řetězec, přesněji řečeno, vypíše část proměnné od/do definovaných znaků.

Příklad: Z textu "To máme ale dnes pěkné počasí!" chceme vybrat pouze "pěkné počasí". Proměnná $pocet_znaku udává počet znaků od začátku($zacatek) výběru textu z řetězce.

<?
/* všeobecný formát je SubStr($retezec, $zacatek, $pocet_znaku); */
$retezec = "To máme ale dnes pěkné počasí!";
$zacatek = "17";
$pocet_znaku = "12";
$cast_textu = SubStr($retezec, $zacatek, $pocet_znaku);
echo $cast_textu;
?>

Jestli jste článek dočetli a hlavně pochopili až sem, určitě jste zjistili, že v PHP je na úpravu řetězců celkem dost funkcí. Možná, že se vám některé příklady zde popisované zdály jako zbytečné, ale věřte, že až budete programovat náročnější aplikaci, určitě narazíte na spoustu problémů s rozdělováním a upravováním řetězců, které vyřeší právě zde popisované funkce.

Diskuze (7) Další článek: Pracovníci IBM stávkují v Sydney

Témata článku: , , , , , , , , , , , , , , , , , ,