PHP Filter Functions

30 września 2009

Coś ostatnio nie mam czasu na pisanie na blogu, na nic nie mam czasu... A pomysłów na tematy wiele...

Dzisiaj jest jednak okazja ;) Uruchomiłem ogłoszenia na NaszTomaszow.pl nad którymi ostatnio pracowałem a przy okazji natrafiłem na ciekawy element PHP o którym trzeba napisać kilka słów.

Już trochę czasu minęło od premiery PHP 5.3 tymczasem jakimś sposobem nie zauważyłem bardzo ciekawego rozwiązania, które wprowadzono w PHP 5.2.

Często w procesie budowania stron www spotykamy się z problemem poprawnej walidacji adresu e-mail, adresu www czy IP. Użytkownik nam się rejestruje i my musimy być pewni, że ten e-mail to naprawdę e-mail a nie coś w stylu "pocałujcie mnie w dupę" :)

Jak sprawdzić poprawność danego ciągu znaków? Oczywiście kłaniają się, tak przeze mnie ostatnio lubiane, wyrażenia regularne. Przeważnie mamy kilka opcji do wyboru:

      Napisać własne (jak żeś głupi to się męcz :P )
      Poszukać czegoś w google
      Poszukać czegoś w swoich poprzednich projektach

Pierwszego nie będę komentował :P No chyba, że się uczysz i chcesz spróbować własnych sił to możesz się pobawić... Ale lepiej poszukać gotowca w sieci lub mieć gdzieś w dalekich zakątkach swojego dysku jakąś funkcję i używać jej w razie potrzeby.

Której metody byście nie użyli to mam lepsze rozwiązanie :P Z pomocą przychodzi PHP 5.2 i funkcja filter_var (i ogólnie funkcje filtrujące).

Z czym to się je? Prosty przykład:

PHP:
  1. if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
  2. // błędny e-mail, obsłuż błąd
  3. }

Zawsze jedna funkcja, zawsze działa tak samo, wbudowana w parser i ktoś inny martwi się żeby działała poprawnie czyli nie musisz się zastanawiać czy aby na pewno znalezione/napisane przez Ciebie wyrażenie regularne jest poprawne. Kolejna funkcja, która mi ułatwi życie a przeciwnikom PHP da argument, że język ten ma mnóstwo funkcji w których można się pogubić i które rozleniwiają programistę. Świat jest piękny :)

Przydatne linki:
Lista wszystkich funkcji filter_* - pl2.php.net/manual/en/ref.filter.php
Lista dostępnych filtrów i ich opisy - pl2.php.net/manual/en/filter.filters.php

PS
Z jakiegoś powodu filtr FILTER_VALIDATE_URL przepuścił u mnie taki ciąg znaków "http://111111". Dziwne... Sam dodatkowo musiałem zatroszczyć się o sprawdzenie czy jest chociaż jedna kropka. Po jej dodaniu filtr działa już sprawnie.

 Dodaj komentarz

6 odpowiedzi dla tego wpisu

  1. mati napisał:

    nie mam czasu sprawdzić, ale czy filter przepuści mail:
    mati@jakas-tam-bardzo-dluga-domena-ktora-moze-byc-i-pewnie-jest-duzo-dluzsza-od-innych-co-nie-oznacza-ze-jest-bledna-ale-rowniez-nie-oznacza-ze-jest-poprawna-wlasciwie-to-ta-konkretna-jest-akurat-bledna.pl

  2. MariuszT napisał:

    Ty, ja też nie mam czasu :P

    Sprawdziłem, niestety przepuścił… Doskonałe to to nie jest jak widać… Trzeba chyba im zgłosić.

    Jak ktoś chce podpatrzeć jak te filtry działają to zapraszam tutaj http://svn.php.net/viewvc/php/....._filters.c

  3. Michał napisał:

    Bardzo ładnie “rozkręciłeś/casz” portal nasztomaszow.pl. W miom mieście nie ma takiego portalu.
    Sam napisał bym skrypt tylko kto będzie dodawał newsy. Wortal odpada – kto by chcał dodawać rzetelne newsy.

    PS Serwer musisz mieć dobry, żeby do ogłoszeń dodawać masę obrazków.
    Ołoszenia będą na wieczność, czy kasują się same po jakimś czasie?

  4. MariuszT napisał:

    Dzięki za miłe słowa ale faktycznie oprogramowanie to tylko część sukcesu. Trzeba mieć redakcję, bez treści nie da się zrobić nic dobrego. Z nasztomaszow.pl tak się akurat złożyło, że spotkały się odpowiednie osoby i wszyscy się starają jak mogą a przede wszystkim znają się na swojej robocie, dlatego są efekty.

    Serwer jest dobry ale nie też jakiś mega full wypas :) Stronę zoptymalizowałem, praktycznie nie generuje żadnego obciążenia. Dla przykładu strona główna generuje dziennie zaledwie kilkadziesiąt zapytań do bazy danych. Tyle to niektóre strony mają przy każdej odsłonie. A znam takie co mają kilkaset (rekord powyżej 1200 :D ).

    Jeżeli chodzi o zdjęcia to tu raczej mowa tylko o transferze, który niestety trochę kosztuje… Na razie mieszczę się w limitach na moje konto chociaż niedługo chyba zacznie się dopłacanie. Zastanawiam się czy nie przenieść zdjęć na inny, tani serwer albo w jakąś chmurę ale póki co nie są to jeszcze tak duże pieniądze aby warto było się męczyć.

    Podczas dodawania ogłoszeń użytkownik wybiera jak długo ogłoszenie ma być ważne (max to 30 dni). Potem będzie możliwe odnowienie ogłoszenia, w swoim panelu. Jak tylko go zrobię :D

  5. Michał napisał:

    Z jakiego skryptu galerii korzystasz?
    Bardzo mi się spodobał, to coś na jQuery?
    Jakbyś mógł to podaj nazwę. Dziękuję.

  6. MariuszT napisał:

    Wystarczyło zajrzeć do źródła…. http://coffeescripter.com/code/ad-gallery/

    Uważam, że to bardzo dobry skrypt i poświęciłem wiele czasu na jego znalezienie. Wcześniej używałem innego ale tamten ładował tuż po wejściu na stronę wszystkie zdjęcia. To było niedopuszczalne, zjadało dużo transferu i przy większych galeriach wymagało sporej cierpliwości od odwiedzających nim wszystko się załadowało. Niestety większość galerii tak działa, autorzy dają się naciągnąć na “fajny bajer” aby miniaturki były generowane w locie, po stronie przeglądarki. Niby to miłe ale efekty uboczne są takie jak opisałem powyżej.

Odpowiedz



Podobne wpisy: