Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Algorytmy i podstawy informatyki PHP

W języku PHP zmiennej a przypisano tekst, w którym kilkukrotnie występuje słowo Kowalski. Aby jednym poleceniem zmienić w zmiennej a wszystkie wystąpienia słowa Kowalski na słowo Nowak, należy zastosować polecenie

A.
$a = str_replace('Nowak', 'Kowalski');
B.
$a = str_rep('Kowalski', 'Nowak', $a);
C.
$a = str_replace('Nowak', 'Kowalski', $a);
D.
$a = str_replace('Kowalski', 'Nowak', $a);

Pytanie z egzaminu CKE, czerwiec 2020 (arkusz E.14-SG-20.06).

Instrukcja $a = str_replace('Kowalski', 'Nowak', $a); jest właściwa, bo funkcja str_replace() w PHP działa według schematu: czego szukamy, na co zamieniamy, w jakim tekście szukamy. Czyli pierwszy argument 'Kowalski' to fragment do odnalezienia, drugi argument 'Nowak' to nowa wartość, a trzeci argument $a to tekst źródłowy zapisany w zmiennej. Ważne jest też przypisanie wyniku z powrotem do $a, ponieważ str_replace() nie modyfikuje zmiennej samoczynnie w miejscu, tylko zwraca nowy łańcuch znaków. Moim zdaniem to jedna z tych funkcji, które warto znać na pamięć, bo pojawia się często przy obróbce danych z formularzy, generowaniu treści stron albo poprawianiu tekstów pobranych z bazy danych. Przykładowo można tak podmienić nazwisko klienta w szablonie wiadomości e-mail albo zmienić stare oznaczenie produktu na nowe w opisie. Funkcja domyślnie zamienia wszystkie wystąpienia, a nie tylko pierwsze, i jest czuła na wielkość liter. Gdyby trzeba było ignorować wielkość liter, używa się str_ireplace(). W praktyce branżowej warto też pamiętać, że taka zamiana tekstu nie zastępuje walidacji ani filtrowania danych, szczególnie gdy tekst pochodzi od użytkownika.
W tym zadaniu kluczowe jest zrozumienie kolejności argumentów funkcji str_replace(), bo PHP nie zgaduje intencji programisty. Jeżeli jako szukany tekst poda się 'Nowak', a jako zamiennik 'Kowalski', to operacja pójdzie w drugą stronę: funkcja próbowałaby zamieniać Nowaków na Kowalskich. To nie spełnia warunku z treści, gdzie trzeba znaleźć każde wystąpienie słowa Kowalski i zastąpić je słowem Nowak. Taki błąd często bierze się z myślenia typu „podaję najpierw wynik końcowy”, ale w PHP dla tej funkcji najpierw podaje się tekst wyszukiwany, dopiero potem zamiennik. Inny problem to pominięcie trzeciego argumentu, czyli tekstu, na którym funkcja ma pracować. Samo str_replace('Nowak', 'Kowalski') nie ma pełnej informacji, gdzie ma szukać. We współczesnym PHP skończy się to błędem liczby argumentów, a nie sensowną zamianą napisu. Trzeba przekazać zmienną $a jako subject, czyli tekst źródłowy. Błędna jest też nazwa str_rep(), ponieważ taka standardowa funkcja PHP nie istnieje. Interpreter potraktuje to jako wywołanie niezdefiniowanej funkcji, więc program się zatrzyma. Z mojego doświadczenia najlepiej zapamiętać wzór: str_replace(stare, nowe, tekst). Do tego wynik trzeba przypisać, na przykład do tej samej zmiennej, bo funkcja zwraca nową wartość, a nie magicznie przerabia napis bez przypisania.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.