KWALIFIKACJA INF3 - CZERWIEC 2020

PYTANIE NR 38.
W języku PHP zmiennej a przypisano tekst, w którym kilkukrotnie występuje słowo Kowalski. Aby jednym pleceniem zmienić w zmiennej a wszystkie wystąpienia słowa Kowalski na słowo Nowak, należy zastosować polecenie
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
str_replace służy do zamiany wszystkich wystąpień podanego fragmentu tekstu w łańcuchu. Aby zamienić "Kowalski" na "Nowak" w zmiennej $a, należy wskazać szukany tekst jako pierwszy argument, zamiennik jako drugi, a przetwarzany łańcuch jako trzeci oraz przypisać wynik z powrotem do $a.

Pełne wyjaśnienie:

W PHP do prostej zamiany fragmentów tekstu w łańcuchu znaków stosuje się funkcję str_replace. Jej sens jest następujący: wyszukuje w podanym łańcuchu wszystkie wystąpienia wskazanego ciągu znaków i zastępuje je innym ciągiem, zwracając nowy łańcuch jako wynik.

W tym typie zadania kluczowe są dwa elementy:

  • kolejność argumentów – najpierw podajesz tekst wyszukiwany (to, co ma zniknąć), potem tekst zastępujący (to, co ma się pojawić), a na końcu łańcuch, w którym wykonywana jest zamiana,
  • przypisanie wyniku – ponieważ wynik jest zwracany, a nie "magicznie" zapisywany do zmiennej, najczęściej przypisuje się go z powrotem do tej samej zmiennej:
    $a = str_replace('Kowalski', 'Nowak', $a);

Dlaczego pozostałe propozycje są błędne?

  • Warianty, w których "Nowak" i "Kowalski" są podane w odwrotnej kolejności, wykonują zamianę w przeciwnym kierunku (z "Nowak" na "Kowalski"), czyli nie spełniają warunku zadania.
  • Wariant bez trzeciego argumentu (przetwarzanego łańcucha) nie pasuje do typowego wywołania, bo funkcja musi wiedzieć, w jakim tekście ma wykonywać zamianę.
  • Wariant z nazwą funkcji str_rep jest pułapką: wygląda podobnie, ale nie jest standardową funkcją PHP do takiej operacji. Na egzaminie warto kojarzyć dokładne nazwy funkcji z dokumentacji.

Wskazówka egzaminacyjna: jeśli w treści jest "wszystkie wystąpienia", w pierwszej kolejności rozważaj funkcje działające globalnie na łańcuchu (jak str_replace), a dopiero potem narzędzia oparte o wyrażenia regularne (preg_replace), gdy potrzebujesz wzorca.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
str_replace wyszukuje w tekście wszystkie wystąpienia wskazanego ciągu znaków i zastępuje je innym ciągiem. Zwraca nowy łańcuch jako wynik, więc zwykle przypisuje się go do zmiennej (np. $a = str_replace('stare','nowe',$a);).
Najważniejsze są trzy argumenty: szukany tekst, tekst zamienny, łańcuch wejściowy. Kolejność ma znaczenie: najpierw to, co ma być znalezione, potem to, na co zamieniasz, a na końcu zmienna/tekst, w którym wykonujesz zamianę.
Funkcja nie modyfikuje automatycznie zmiennej "w miejscu", tylko zwraca przetworzony łańcuch. Jeśli nie przypiszesz wyniku, zamiana się wykona, ale jej efekt nie zostanie zachowany w zmiennej, co na egzaminie jest częstą pułapką.
Tak, standardowo zamienia wszystkie wystąpienia pasującego fragmentu w całym łańcuchu. Nie trzeba używać pętli. To właśnie odróżnia typowe zadania "zamień wszędzie" od zadań, gdzie modyfikuje się tylko część tekstu.
Do "tylko pierwszego wystąpienia" często stosuje się inne podejście (np. znalezienie pozycji i złożenie łańcucha), albo użycie wyrażeń regularnych z limitem. str_replace bez dodatkowych zabiegów działa globalnie, więc nie jest naturalnym wyborem do "pierwszego razu".
preg_replace wybiera się wtedy, gdy nie zamieniasz dosłownego tekstu, tylko wzorzec (np. różne odmiany zapisu, cyfry, białe znaki). Jeśli masz stały fragment typu nazwisko lub konkretne słowo, zwykle prościej, szybciej i czytelniej użyć str_replace.
W typowym użyciu str_replace jest wrażliwe na wielkość liter, więc "Kowalski" i "kowalski" to różne ciągi. Jeśli w zadaniu mogą wystąpić różne warianty wielkości liter, trzeba uwzględnić to w logice (np. normalizacja lub inne funkcje), bo prosta zamiana może nie objąć wszystkich przypadków.
Najczęstsze pomyłki to: odwrócenie argumentów (zamiana w złą stronę), brak trzeciego argumentu (nie wiadomo, gdzie zamieniać), oraz brak przypisania wyniku do zmiennej. Na egzaminie sprawdzaj: "co szukam?", "na co zmieniam?", "w jakim tekście?".
Funkcje tekstowe w PHP często mają rozszerzone zastosowania. W praktyce str_replace bywa używana również z danymi tablicowymi, ale na poziomie zadań egzaminacyjnych najczęściej chodzi o klasyczny przypadek: pojedynczy łańcuch i globalna zamiana podanego słowa.
Jeśli w treści widzisz "zamienić wszystkie wystąpienia" oraz podane są dwa konkretne fragmenty tekstu (stary i nowy), to zwykle chodzi o str_replace. Gdy pojawia się "wzorzec", "dopasowanie", "różne warianty", wtedy częściej pasuje podejście z wyrażeniami regularnymi.
info

Statystycznie 64% uczniów zna prawidłową odpowiedź. średnie

Według specjalistów z branży: "str_replace służy do zamiany wszystkich wystąpień podanego fragmentu tekstu w łańcuchu."

Źródła:

  • PHP Manual: str_replace — https://www.php.net/manual/en/function.str-replace.php (dostęp: 2026-02-28)
  • PHP Manual: String Functions — https://www.php.net/manual/en/ref.strings.php (dostęp: 2026-02-28)
  • PHP Manual: preg_replace (dla rozróżnienia zamiany prostej i regex) — https://www.php.net/manual/en/function.preg-replace.php (dostęp: 2026-02-28)

Materiały:

  • Dokumentacja PHP: funkcje do obsługi łańcuchów (String Functions)
  • Ćwiczenia: porównanie str_replace, preg_replace i substr_replace na przykładach
  • Zadania praktyczne: przetwarzanie tekstu i szablonów (template strings) w PHP

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego