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

Słowa kluczowe: Funkcja str_replace() w PHP Funkcje w PHP

W języku PHP do zmiennej a przypisano tekst, w którym słowo Kowalski pojawia się wielokrotnie. Aby jednym poleceniem policzyć, ile razy słowo Kowalski występuje w tym tekście, należy użyć polecenia

A.
$n = strlen('Kowalski');
B.
$n = substr_count($a, 'Kowalski');
C.
$n = substr_count('Kowalski', $a);
D.
$n = str_count($a, 'Kowalski');
Właściwe polecenie to $n = substr_count($a, 'Kowalski');, ponieważ funkcja substr_count w PHP służy dokładnie do zliczania, ile razy dany fragment tekstu występuje w innym tekście. Bardzo ważna jest kolejność argumentów: najpierw podaje się tekst, w którym szukamy, czyli tutaj zmienną $a, a dopiero potem szukany ciąg znaków, czyli 'Kowalski'. Moim zdaniem to jedna z tych funkcji, które warto zapamiętać praktycznie, bo często przydaje się przy analizie treści, prostym raportowaniu albo sprawdzaniu danych wpisanych przez użytkownika. Przykład: jeśli $a zawiera tekst 'Jan Kowalski i Adam Kowalski', to substr_count($a, 'Kowalski') zwróci 2. Trzeba też wiedzieć, że funkcja jest czuła na wielkość liter, więc 'kowalski' i 'Kowalski' to dla niej różne napisy. Dodatkowo substr_count liczy wystąpienia podciągu, a nie zawsze całego wyrazu w sensie językowym, więc w bardziej wymagających projektach, np. przy walidacji tekstu, czasem lepsze będzie wyrażenie regularne z preg_match_all i granicami słowa. Jednak dla treści tego pytania standardowe, proste i branżowo poprawne rozwiązanie to właśnie substr_count($a, 'Kowalski');.
W tym zadaniu najłatwiej pomylić funkcje tekstowe, bo ich nazwy w PHP są do siebie trochę podobne, a każda robi coś innego. Funkcja strlen('Kowalski') nie analizuje zawartości zmiennej $a, tylko zwraca długość napisu 'Kowalski'. Wynikiem byłaby więc liczba znaków w tym słowie, czyli 8, a nie liczba jego wystąpień w większym tekście. To typowy błąd myślowy: ktoś widzi funkcję od stringów i zakłada, że skoro pracuje na tekście, to policzy szukane słowa. Niestety, strlen odpowiada na pytanie „jak długi jest napis?”, a nie „ile razy napis występuje?”. Równie istotna jest kolejność argumentów w substr_count. Wywołanie substr_count('Kowalski', $a) oznaczałoby: sprawdź, ile razy cały tekst ze zmiennej $a występuje wewnątrz słowa 'Kowalski'. W praktyce prawie zawsze da to 0, bo długi tekst raczej nie mieści się w pojedynczym nazwisku. Poprawny układ to najpierw tekst przeszukiwany, potem szukany fragment. Z mojego doświadczenia właśnie takie odwrócenie argumentów jest bardzo częste u osób zaczynających z PHP. Warto też uważać na funkcje, które wyglądają logicznie z nazwy, ale po prostu nie należą do standardowego PHP. str_count($a, 'Kowalski') brzmi wiarygodnie, ale nie jest wbudowaną funkcją PHP do takiego zadania. W dobrych praktykach branżowych zawsze korzysta się z dokumentacji, np. php.net, żeby potwierdzić nazwę funkcji, jej parametry i zachowanie. Do prostego zliczenia fragmentu tekstu używa się substr_count($a, 'Kowalski'), pamiętając że działa ono z uwzględnieniem wielkości liter i liczy podciągi znaków, niekoniecznie pełne słowa w sensie gramatycznym.

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.