W celu zmodyfikowania tekstu „ala ma psa” na „ALA MA PSA” należy użyć funkcji PHP
A. strtolower('ala ma psa');
B. ucfirst('ala ma psa');
C. strstr('ala ma psa');
D. strtoupper('ala ma psa');
Pytanie z egzaminu CKE, styczeń 2018 (arkusz E.14-X-18.01).
Funkcja strtoupper('ala ma psa') jest właściwa, ponieważ w PHP służy do zamiany liter w podanym łańcuchu znaków na wielkie litery. Dla tekstu 'ala ma psa' wynikiem będzie 'ALA MA PSA', czyli dokładnie taka postać, jakiej wymaga pytanie. To typowa operacja na stringach, przydatna np. przy normalizacji danych z formularza, przygotowaniu nagłówków, porównywaniu kodów wpisanych przez użytkownika albo ujednolicaniu tekstu przed zapisem do bazy. Warto pamiętać, że strtoupper działa dobrze dla podstawowych znaków alfabetu łacińskiego, czyli takich jak a-z. Z mojego doświadczenia, w prawdziwych projektach webowych trzeba uważać na polskie znaki. Jeśli tekst zawiera np. 'zażółć', lepszą praktyką jest użycie mb_strtoupper($tekst, 'UTF-8'), bo funkcje mbstring poprawnie obsługują kodowanie znaków. Sama idea jest jednak prosta: chcesz wszystkie litery duże, używasz strtoupper. To zgodne z dokumentacją PHP i dość standardowe w codziennym programowaniu backendowym.
W tym zadaniu chodzi o pełną zamianę całego tekstu na wielkie litery, więc trzeba odróżnić funkcje modyfikujące wielkość liter od funkcji robiących coś zupełnie innego. strtolower('ala ma psa') działa w przeciwnym kierunku: zamienia litery na małe. Dla podanego tekstu efekt praktycznie się nie zmieni, bo tekst już jest zapisany małymi literami. To częsty błąd myślowy, bo nazwy strtoupper i strtolower są podobne, ale skróty upper i lower oznaczają odpowiednio wielkie oraz małe litery. strstr('ala ma psa') nie służy do zmiany wielkości liter. Ta funkcja wyszukuje fragment tekstu w innym tekście i zwraca część łańcucha od znalezionego miejsca. W dodatku w normalnym użyciu potrzebuje jeszcze argumentu z szukaną frazą, więc samo podanie jednego tekstu nie rozwiązuje problemu. ucfirst('ala ma psa') też nie wykona pełnej konwersji. Ona zmienia tylko pierwszy znak łańcucha na wielką literę, więc wynik byłby w stylu 'Ala ma psa', a nie 'ALA MA PSA'. W praktyce przy pracy z formularzami, loginami, etykietami czy danymi tekstowymi trzeba dobrać funkcję dokładnie do celu. Jeśli wymagane są wszystkie wielkie litery, wybór powinien paść na strtoupper, a przy tekstach z polskimi znakami najlepiej rozważyć mb_strtoupper z kodowaniem UTF-8.