← Lekcje
PHP · lekcja 11

Funkcje wbudowane 1/2: gotowe funkcje na tekst

Dzisiaj poznajecie funkcje, które PHP ma już gotowe:

  1. Setki funkcji czekających w PHP - nie musicie ich pisać sami, tak jak na poprzednich lekcjach
  2. Cztery funkcje na tekst: strlen, trim, strtoupper, str_replace
  3. trim usuwa spacje z brzegów napisu, str_replace zamienia jeden fragment na inny
  4. Ćwiczenie: string-functions.php z napisem "Ala ma kota"
Rozgrzewka · 3 minuty

Rozgrzewka: zmienne lokalne

function sumUpTo($upTo) {
    $sum = 0;
    $i = 1;
    while ($i <= $upTo) {
        $sum += $i;
        $i++;
    }
    return $sum;
}
echo sumUpTo(3);
echo $sum;
  1. Co wypisze echo sumUpTo(3);?
  2. Co się stanie przy echo $sum; napisanym poza funkcją?
  3. Czy zmienna $i wewnątrz sumUpTo to ta sama zmienna, co ewentualne $i poza funkcją?
Część 1 · Funkcje gotowe do użycia

Nie musicie pisać wszystkiego sami

Funkcja własna (lekcje 08–10)

Piszecie całe ciało funkcji sami: nazwę, parametry i to, co ma się wykonać w środku.

function squareArea($side) {
    return $side * $side;
}

Funkcja wbudowana (dzisiaj)

Kod już jest napisany wewnątrz PHP. Wy tylko wołacie funkcję po nazwie, z właściwymi argumentami.

strlen("Ala ma kota");
// ciała funkcji nie widzicie - jest w PHP

Samych funkcji operujących na tekście (napisach) jest w PHP ponad sto, od addcslashes() do wordwrap().

PHP Manual: przegląd funkcji operujących na łańcuchach znaków (napisach), od addcslashes() do wordwrap() · php.net/manual/en/ref.strings.php
Część 1 · Funkcja, co robi, przykład

Cztery funkcje na start

Dla każdej funkcji: $text = " Ala ma kota "; Funkcja Co robi Wynik strlen($text) liczy znaki, spacje też się liczą 13 trim($text) usuwa spacje z obu brzegów napisu "Ala ma kota" strtoupper($text) zamienia litery na wielkie, spacje zostają " ALA MA KOTA " str_replace("kota","psa",$text) zamienia jeden fragment na inny " Ala ma psa "

Ciekawostka z PHP Manual: strlen() liczy bajty, nie znaki. Napis "zł" ma 3 bajty w kodowaniu UTF-8 („z” to 1 bajt, „ł” to 2 bajty), więc strlen("zł") zwróci 3, choć w napisie są 2 znaki. Do poprawnego liczenia polskich liter służy mb_strlen().

PHP Manual: function.strlen.php, function.trim.php, function.strtoupper.php, function.str-replace.php · ciekawostka: „strlen() returns the number of bytes rather than the number of characters in a string” · php.net/manual/en/function.strlen.php
Część 2 · trim() czyści krawędzie napisu

trim(): przed i po

Przed trim() Ala ma kota spacja spacja strlen = 13 trim() Po trim() Ala ma kota strlen = 11 (o 2 mniej - zniknęły obie spacje)
PHP Manual: „Strip whitespace (or other characters) from the beginning and end of a string” · php.net/manual/en/function.trim.php
Część 3 · str_replace() zamienia fragment

str_replace(): zamiana kafelka

Ala ma kota Ala ma psa str_replace( "kota", ← czego szukać (search) "psa", ← na co zamienić (replace) $text ← gdzie szukać (subject) );
PHP Manual: „Replace all occurrences of the search string with the replacement string” · php.net/manual/en/function.str-replace.php
Egzamin INF.03

Tak pytają na egzaminie

1. Która z przedstawionych funkcji języka PHP zamieni słowo „kota” na słowo „mysz” w napisie „ala ma kota”?

  1. replace("ala ma kota", "kota", "mysz");
  2. replace("kota", "mysz", "ala ma kota");
  3. str_replace("ala ma kota", "kota", "mysz");
  4. str_replace("kota", "mysz", "ala ma kota");

2. W celu zmodyfikowania tekstu „ala ma psa” na „ALA MA PSA” należy użyć funkcji PHP

  1. strtoupper('ala ma psa');
  2. strtolower('ala ma psa');
  3. ucfirst('ala ma psa');
  4. strstr('ala ma psa');
CKE, EE.09, styczeń 2021, zadanie 10 · CKE, E.14, styczeń 2018, zadanie 36 (bank pytań, przedmiot strony, temat php)
Ćwiczenie przy komputerze · 20 minut

Ćwiczenie: string-functions.php

  1. W folderze swojego serwera (htdocs) utwórz plik string-functions.php z linią $text = " Ala ma kota ";.
  2. Zapisz do $trimmed wynik trim($text) i wypisz w nawiasach kwadratowych: echo "[" . $trimmed . "]"; - ma być widać, że spacje zniknęły.
  3. Zapisz do $upper wynik strtoupper($trimmed) i wypisz.
  4. Zapisz do $replaced wynik str_replace("kota", "psa", $trimmed) i wypisz.
  5. Sprawdź w przeglądarce pod localhost/string-functions.php.

Ma się pojawić: [Ala ma kota], potem ALA MA KOTA, potem Ala ma psa.

Zasady pracowni
Na koniec

Sprawdź się

  1. Czym różni się funkcja wbudowana od funkcji, którą sami zdefiniowaliście na poprzednich lekcjach?
  2. Co zwróci trim(" Ala ma kota ") - jaki napis i o ile krótszy od oryginału?
  3. W jakiej kolejności str_replace() przyjmuje argumenty: czego szuka, na co zamienia, w czym szuka?

Na następnej lekcji: gotowe funkcje na liczby i typy danych.

Poza szkołą

A jak to wygląda w produkcji?

Na lekcjiW produkcjiStatus
Cztery pojedyncze funkcje tekstowe wołane jedna po drugiejWywołania łączone we własnej funkcji pomocniczej (np. cleanText()), żeby nie powtarzać tych samych kroków w wielu miejscach kodu.nadal w użyciu
str_replace() do zamiany jednego, znanego z góry słowaDo bardziej złożonych wzorców (np. wiele wariantów pisowni naraz) używa się funkcji z rodziny wyrażeń regularnych, np. preg_replace().nadal w użyciu
Sprawdzanie wyniku funkcji przez echo w przeglądarceTesty jednostkowe (np. narzędzie PHPUnit) sprawdzają wynik funkcji automatycznie, bez patrzenia w przeglądarkę.nadal w użyciu
PHP Manual: ref.strings.php, function.preg-replace.php