W języku PHP funkcja trim ma za zadanie
A. usuwać białe znaki lub inne znaki podane w parametrze, z obu końców napisu.
B. porównywać dwa napisy i wypisać część wspólną.
C. podawać długość napisu.
D. zmniejszać napis o wskazaną w parametrze liczbę znaków.
Pytanie z egzaminu CKE, styczeń 2017 (arkusz E.14-X-17.01).
Funkcja trim() w PHP służy do usuwania znaków z początku i końca napisu, domyślnie głównie białych znaków, czyli spacji, tabulatorów, znaków nowej linii i podobnych znaków sterujących. To jest bardzo praktyczna funkcja, bo dane wpisywane przez użytkownika w formularzu często mają przypadkowe spacje na początku albo na końcu. Przykład: jeśli ktoś wpisze w polu login ' adam ', to trim() zamieni to na 'adam'. Dzięki temu łatwiej porównywać teksty, zapisywać dane w bazie i unikać dziwnych błędów przy logowaniu czy walidacji formularzy. Co ważne, trim() nie usuwa znaków ze środka napisu, tylko z obu końców. Można też podać drugi parametr, czyli listę znaków do usunięcia, np. trim($tekst, '. ') usunie kropki i spacje z początku oraz końca. Z mojego doświadczenia trim() warto stosować przed walidacją danych wejściowych, razem z innymi mechanizmami bezpieczeństwa, ale nie wolno jej traktować jako pełnego zabezpieczenia. To raczej porządkowanie danych, nie filtrowanie anty-SQL injection czy ochrona przed XSS. W dobrych praktykach PHP często spotyka się schemat: najpierw pobranie danych, potem trim(), potem walidacja, a dopiero później zapis lub dalsze przetwarzanie.
W tym pytaniu łatwo pomylić funkcję trim() z innymi funkcjami operującymi na napisach, bo PHP ma ich naprawdę sporo i część nazw brzmi dość podobnie. Długość napisu w PHP zwraca strlen(), a nie trim(). Jeśli chcemy sprawdzić, ile znaków ma tekst, używamy właśnie strlen($tekst). trim() nie liczy znaków, chociaż po jej użyciu długość napisu może się zmienić, bo zostaną usunięte spacje lub inne znaki z początku i końca. To jest taki typowy haczyk: efekt może wpłynąć na długość, ale celem funkcji nie jest mierzenie długości. Porównywanie dwóch napisów też nie jest zadaniem trim(). Do porównań można używać operatorów ==, === albo funkcji takich jak strcmp(), zależnie od potrzeb i dokładności porównania. trim() przydaje się przed porównaniem, bo usuwa przypadkowe spacje, ale sama nie wyszukuje części wspólnej tekstów i niczego nie wypisuje. Również skracanie napisu o wskazaną liczbę znaków to inna operacja. Do wycinania fragmentów tekstu służy na przykład substr(), gdzie można podać pozycję startową i długość fragmentu. trim() nie dostaje liczby znaków do usunięcia, tylko opcjonalny zestaw znaków, które mają być obcięte z brzegów napisu. Moim zdaniem najważniejsze jest zapamiętać różnicę między usuwaniem znaków z końców tekstu a wycinaniem tekstu według pozycji. W praktyce webowej trim() najczęściej pojawia się przy obsłudze formularzy, gdy użytkownik wpisze dane trochę niedbale, np. z dodatkową spacją. To porządkuje wejście, ale nie zastępuje walidacji, filtrowania ani zabezpieczeń po stronie serwera.