Zauważ proszę, że Twoja funkcja... w ogóle nie działa. Zwraca to samo, co otrzymała.
Funkcje takie jak trim
, addslashes
, stripslashes
, htmlspecialchars
NIE modyfikują danych wejściowych. One oczekują, że podasz im jako parametr jeden ciąg znaków i zwracają inny ciąg znaków. Tego podanego jako parametr nie modyfikują.
Jeśli napiszesz coś takiego:
$dane = ' foo ';
trim($dane);
echo "[$dane]";
To funkcja trim() nic nam nie da. Wyświetlone zostanie [ foo ]
, czyli spacje z początku i końca ciągu nie będą ucięte. Bo funkcja trim nie modyfikuje parametru $dane. Ona zwraca nowy ciąg, pozbawiony spacji na początku i na końcu. Ale my ten zwracany ciąg ignorujemy. Powinniśmy go przypisać do zmiennej, w ten sposób:
$dane = ' foo ';
$danePrzefiltrowane = trim($dane);
echo "[$danePrzefiltrowane]";
Teraz zapisujemy wynik działania funkcji trim w zmiennej $danePrzefiltrowane
, a potem wyświetlamy tę zmienną. Tym razem to zadziała, wyświetlony będzie ciąg [foo]
.
Nic nie stoi na przeszkodzie, żeby wynik funkcji zapisać nie do nowej zmiennej ($danePrzefiltrowane
), tylko z powrotem do zmiennej $dane
. Wtedy wygląda to tak:
$dane = ' foo ';
$dane = trim($dane);
echo "[$dane]";
Zrozum to i zapamiętaj sobie, że jeśli chcesz zmodyfikować zmienną przekazaną do funkcji takich jak trim
, stripslashes
itp., to robisz to nie tak:
// źle! to nie robi nic pożytecznego! zmienna $dane nie jest modyfikowana!
trim($dane);
stripslashes($dane);
tylko tak:
// źle! to nie robi nic pożytecznego!
$dane = trim($dane);
$dane = stripslashes($dane);
To BARDZO ważne, bo bez tego Twoja funkcja niczego pożytecznego nie robi (!). Dziwne, że nikt tego nie zauważył. Szczególnie Tobie, elektroniku, powinno wyjść w testach, że funkcja w ogóle niczego nie robi...