Wpisy otagowane ‘wyrażenia regularne’

UTF-8 i zła walidacja tekstu

poniedziałek, 11 Kwiecień 2011

Jak dobrze wiadomo, słabą stroną języka PHP jest między innymi wsparcie dla bardzo popularnego w dzisiejszych czasach kodowania znaków w UTF-8. O ile w wersji 5.3 pojawiła się biblioteka ext/intl, to jednak większość istniejących mechanizmów walidacji tekstu opiera się wyłącznie na regułkach zapisanych w postaci wyrażeń regularnych. Mechanizm ten jest bardzo wygodny, lecz w przypadku znaków spoza alfabetu łacińskiego nie zawsze działa tak, jak programista to przewidział.

W skrajnych przypadkach użycie wyrażeń regularnych prowadzi to do bardzo ciekawych skutków ubocznych, które mogą negatywnie wpłynąć na bezpieczeństwo serwisu internetowego. (więcej…)

UTF-8 w PHP 5.0+: Klasa String wzorowana na języku Java

środa, 30 Marzec 2011

Jak dobrze wiemy w PHP obsługa UTF-8 jest po dziś dzień dosyć skromna. Co prawda nie jest to cecha charakterystyczna wyłącznie dla tego języka (podobne problemy mają developerzy np. Ruby’ego), to w czasach, gdy większość stron WWW kodowanych jest w unikodzie, staje się to bolesną niedogodnością podczas developmentu.

Co prawda w wersji 5.3 pojawiła się nowa biblioteka ext/intl próbująca nadrobić opóźnienia w stosunku do reszty świata, jest to niestety zmiana prawie kosmetyczna, a nawet nieelegancka. Prawdziwa rewolucja miała nastąpić dopiero w PHP 6.0. Jako że ta wersja nie ujrzy już niestety światła dziennego, a programiści PHP 5.2, którzy z jakichś powodów nie mogą przesiąść się na wersję 5.3, skazani zostali na używanie zbioru różnych klas nie do końca sprawdzonych lub przemyślanych, postanowiłem że napiszę własną wzorując się na klasie String z języka Java. (więcej…)

Kolorowy var_dump()

niedziela, 27 Marzec 2011

Często podczas programowania potrzebujemy wyświetlić na zawartość jakiejś zmiennej w celu jej zdebugowania. W takim przypadku bardzo przydatną mechanizmem wbudowanym w język PHP okazuje się funkcja var_dump(). Jej główną zaletą w porównaniu do innych funkcji tego typu (jak print_r(), czy var_export()) jest to, że wyświetla ona nie tylko wartość zmiennej, lecz także rodzaj typów w niej przechowywanych.

Funkcja ta ma niestety jedną dokuczliwą wadę, przy dużej ilości danych (rozbudowany array / obiekt) prezentowany wynik potrafi być bardzo nieczytelny.

W tym celu napisałem niewielką klasę, która dodaje do polecenia var_dump() kolorowanie wyników. (więcej…)