Poprawnie – funkcja trim() w PHP służy do usuwania z obu końców napisu tzw. znaków niechcianych, domyślnie białych znaków, czyli spacji, tabulatorów, znaków nowej linii, powrotu karetki itp. Kluczowe jest tu słowo „z końców” – trim nie rusza środka łańcucha, modyfikuje tylko początek i koniec. Składnia jest prosta: trim(string $string, string $characters = " \n\r\t\0\x0B"). Drugi parametr jest opcjonalny i pozwala samodzielnie określić zestaw znaków, które mają być usunięte. Przykład z praktyki: bardzo często po odebraniu danych z formularza stosuje się $name = trim($_POST['name']); żeby usunąć przypadkowe spacje przed i po imieniu użytkownika. Dzięki temu porównywanie napisów, walidacja czy zapisywanie do bazy danych jest bardziej przewidywalne i zgodne z dobrymi praktykami. Moim zdaniem trim to jedna z takich małych funkcji, które powinny wejść w nawyk – szczególnie przy obsłudze inputów użytkownika, importu danych z plików CSV, parsowaniu logów czy przygotowywaniu danych do serializacji. Warto też znać powiązane funkcje: ltrim() usuwa znaki tylko z lewej strony, a rtrim() (alias chop()) tylko z prawej. Dobrą praktyką jest stosowanie trim bezpośrednio po pobraniu danych z zewnętrznych źródeł, zanim zaczniemy robić jakiekolwiek porównania, zapisy do bazy czy generowanie kluczy. Pozwala to uniknąć bardzo irytujących błędów typu „ten sam użytkownik, ale inne spacje”, które potem trudno debugować. W profesjonalnych aplikacjach webowych obróbka łańcuchów, w tym właśnie trim, jest standardowym elementem warstwy walidacji i normalizacji danych wejściowych.
W PHP łatwo pomylić różne funkcje operujące na łańcuchach znaków, bo często używa się ich obok siebie i wszystkie „coś robią z napisem”. Funkcja trim() bywa mylona z innymi narzędziami, które mierzą długość, porównują teksty albo je przycinają w środku. Warto więc to sobie spokojnie uporządkować. Trim nie służy do wyznaczania długości napisu – do tego jest funkcja strlen(), która zwraca liczbę znaków w łańcuchu i nic z nim nie usuwa ani nie modyfikuje. To typowy błąd: ktoś widzi krótką nazwę „trim” i kojarzy ją z „przycięciem do długości”, a tu chodzi wyłącznie o usuwanie znaków z obu końców. Funkcja trim nie porównuje też dwóch napisów i nie wypisuje części wspólnej. Jeżeli chcemy porównać łańcuchy, używamy operatorów porównania (==, ===) albo funkcji strcmp(), strcasecmp() itd. Szukanie części wspólnej między dwoma tekstami wymaga zupełnie innych technik, np. funkcji strpos(), substr(), czasem nawet algorytmów dopasowania wzorców – ale to zupełnie inny temat niż trim. Częste jest też mylne przekonanie, że trim „zmniejsza napis o wskazaną liczbę znaków”, jakby działał na zasadzie: przekaż n i utnij tyle znaków. Tymczasem trim w ogóle nie operuje na liczbach, tylko na zbiorze znaków podanych w drugim parametrze. Usuwa wszystkie wystąpienia tych znaków z początku i końca, niezależnie od tego, ile ich tam jest. Jeżeli ktoś chce przyciąć łańcuch do określonej długości, używa się substr() albo mb_substr() (dla UTF-8), czasem w połączeniu z funkcjami multibajtowymi. Moim zdaniem podstawowy błąd myślowy polega tu na traktowaniu „przycinania” bardzo ogólnie, bez rozróżnienia: czy przycinamy do długości, czy usuwamy białe znaki na brzegach, czy porównujemy zawartość. Trim jest funkcją specjalistyczną: normalizuje początek i koniec łańcucha, co jest kluczowe przy walidacji danych wejściowych, porównywaniu stringów i zapisywaniu ich w spójnej postaci. Dobrą praktyką jest najpierw zastosować trim na danych od użytkownika, a dopiero potem używać strlen, strcmp czy substr do dalszych operacji. Wtedy każdy element ma swoją jasną, techniczną rolę.