Stringi — praca z tekstem

🎯 Po tej lekcji połączysz i sformatujesz tekst, używając interpolacji, konkatenacji i wbudowanych funkcji stringów.

Tekst — czyli string — to jeden z najczęściej używanych typów danych w PHP. Wyświetlasz go na stronie, zapisujesz do bazy, wysyłasz w e-mailu. Czas poznać, jak z nim pracować.

Cudzysłowy: pojedyncze i podwójne

W PHP możesz zapisać string na dwa sposoby — i wybór ma znaczenie:

<?php
declare(strict_types=1);

$imie = 'Ola';

echo 'Cześć, $imie!';   // wynik: Cześć, $imie!
echo "Cześć, $imie!";   // wynik: Cześć, Ola!
  • Pojedyncze cudzysłowy '...' — string jest dosłowny. PHP nie analizuje, co jest w środku. $imie zostanie wypisane jako tekst $imie.
  • Podwójne cudzysłowy "..." — PHP interpoluje zmienne: zamienia $imie na jej aktualną wartość.
💡 Kiedy co? Używaj podwójnych cudzysłowów, gdy chcesz wstawić zmienną do tekstu. Pojedyncze cudzysłowy są nieco szybsze i mniej zaskakujące — idealne dla tekstów bez zmiennych.

Konkatenacja — łączenie stringów

Czasem chcesz złożyć tekst z kilku kawałków. Do tego służy operator . (kropka):

<?php
declare(strict_types=1);

$imie    = 'Kuba';
$powitanie = 'Cześć, ' . $imie . '!';

echo $powitanie; // wynik: Cześć, Kuba!

Możesz też użyć operatora .=, żeby dopisać coś do istniejącej zmiennej:

<?php
declare(strict_types=1);

$wiadomosc  = 'Twoje zamówienie ';
$wiadomosc .= 'zostało złożone.';
$wiadomosc .= ' Dziękujemy!';

echo $wiadomosc;
// wynik: Twoje zamówienie zostało złożone. Dziękujemy!

Funkcja strlen — długość stringa

strlen zwraca liczbę bajtów w stringu (dla tekstów bez polskich liter to równoznaczne z liczbą znaków):

<?php
declare(strict_types=1);

$haslo = 'Tajne123';
echo strlen($haslo); // wynik: 8

$pusto = '';
echo strlen($pusto); // wynik: 0
💡 Polskie znaki: strlen liczy bajty, nie znaki Unicode. Dla polskich liter (które zajmują 2 bajty w UTF-8) użyj mb_strlen(). Na razie wystarczy Ci wiedzieć, że taka funkcja istnieje.

Funkcja strtoupper — wielkie litery

strtoupper zamienia wszystkie litery na wielkie:

<?php
declare(strict_types=1);

$kategoria = 'promocje';
echo strtoupper($kategoria); // wynik: PROMOCJE

$imie = 'ola';
echo strtoupper($imie); // wynik: OLA

Jest też strtolower — zamienia na małe litery:

<?php
declare(strict_types=1);

$email = '[email protected]';
echo strtolower($email); // wynik: [email protected]

Funkcja str_replace — podmiana tekstu

str_replace zamienia wszystkie wystąpienia jednego fragmentu tekstu na inny:

<?php
declare(strict_types=1);

$opis = 'Sklep Oli sprzedaje jabłka i gruszki.';

$nowyOpis = str_replace('jabłka', 'truskawki', $opis);
echo $nowyOpis;
// wynik: Sklep Oli sprzedaje truskawki i gruszki.

Jeśli szukany tekst nie istnieje w stringu, str_replace zwraca oryginał bez zmian:

<?php
declare(strict_types=1);

$tekst = 'Cześć!';
echo str_replace('Hej', 'Witaj', $tekst);
// wynik: Cześć!  ← bez zmian, bo 'Hej' nie ma w $tekst

Wszystko razem — przykład z życia

<?php
declare(strict_types=1);

$imieKlienta = 'anna';
$produktNazwa = 'kurtka zimowa';
$cena = 249.0;

// Formatujemy imię i nazwę produktu
$imieFormatowane   = strtoupper($imieKlienta);
$produktFormatowany = ucfirst($produktNazwa);  // ucfirst → pierwsza litera wielka

$potwierdzenie = "Droga $imieFormatowane, Twój produkt \"$produktFormatowany\" "
    . "o wartości $cena PLN jest już w drodze!";

echo $potwierdzenie;
// wynik: Droga ANNA, Twój produkt "Kurtka zimowa" o wartości 249 PLN jest już w drodze!

Funkcje w tej lekcji

Sprawdź się

Jakie cudzysłowy umożliwiają interpolację zmiennych w PHP?

Jaki operator służy do łączenia (konkatenacji) stringów w PHP?

Co zwróci strlen('PHP')?

Co wypisze echo strtoupper('ola')?

Ćwiczenie

Masz zmienną $imie z imieniem użytkownika (np. 'kuba'). Zbuduj powitanie: zamień imię na wielkie litery, oblicz ile ma znaków i wyświetl zdanie: 'Witaj, KUBA! Twoje imię ma 4 znaki.'

Pokaż rozwiązanie
<?php
declare(strict_types=1);

$imie        = 'kuba';
$imieWielkie = strtoupper($imie);
$dlugosc     = strlen($imie);

echo "Witaj, $imieWielkie! Twoje imię ma $dlugosc znaki.";
// wynik: Witaj, KUBA! Twoje imię ma 4 znaki.