Pamiętaj o Ctype Functions
28 października 2009
Kolejna drobna wskazówka dla programistów PHP. W kursach o tym nie przeczytacie
Bywa tak, nawet całkiem często, że musimy się upewnić, że w zmiennej mamy np. tylko same cyfry lub małe litery. Pierwsze co wszystkim przychodzi do głowy to wyrażenia regularne. Ale chyba każdy z nas słyszał nie raz przestrogę, że jak można to lepiej unikać wyrażeń bo są wolne. Czy jest jakaś alternatywa?
A jest
Nazywa się to Character type checking. Funkcji do wyboru jest kilkanaście, przykładowo (za php.net):
Dostaniemy:
-
The string 1820.20 does not consist of all digits.
-
The string 10002 consists of all digits.
-
The string wsl!12 does not consist of all digits.
Lista wszystkich dostępnych funkcji znajduje się tutaj, polecam się z nimi zapoznać. Testy wykazują, że funkcje wykonują się znacznie szybciej niż wyrażenia regularne. Funkcje ctype_* są wbudowane w PHP, nie trzeba się martwić o ich dostępność.
Blog przede wszystkim o Internecie i mojej pasji jaką jest tworzenie stron www. Ale nie ograniczam się do jednej tematyki, piszę o wszystkim o czym mam ochotę :-)
guci0 napisał: 29.10.09 o godzinie 11:23
Dzięki – nie znałem tak z głowy
Pozdrawiam miło!
Paweł P.
guci0 napisał: 29.10.09 o godzinie 11:25
A orientujesz się może, jak teraz dla PHP 5+ porównać, czy w danym
string’u mamy jakiś string – patrz funkcja eregi(). Ponieważ wczoraj przeczytałem, przez przypadek, że “This function has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.”
MariuszT napisał: 29.10.09 o godzinie 11:38
Jak chcesz sprawdzić czy w stringu znajduje się jakiś inny string to skorzystaj ze strpos(). eregi odchodzą w zapomnienie, są wolne, nie korzystam z nich od lat. Do wyrażeń regularnych używaj preg_*, w Twoim przypadku preg_match(). Ale rozsądnie z tymi wyrażeniami, często można się obejść bez nich.
guci0 napisał: 29.10.09 o godzinie 12:04
@MariuszT – dzięki! Napewno sprawdzę!
guci0 napisał: 29.10.09 o godzinie 12:43
strpos() – działa świetnie, trochę inaczej niż eregi(), ale ma większą funkcjonalność. To bardzo dobrze, że nie korzystasz “z nich” od lat.
Zyx napisał: 08.12.09 o godzinie 11:20
Funkcje ctype_* będą od PHP 6.0 wycofywane z powodu przejścia na Unicode, z którym nie są zgodne. W zamian mają zostać zaproponowane inne mechanizmy.
Paweł napisał: 20.01.10 o godzinie 13:41
Funkcja strpos służy do sprawdzania na której pozycji w stringu leży drugi string. Do sprawdzania czy w ciągu znaków występuje jakiś tekst służy funkcja strstr albo ignorująca wielkość liter stristr.
MariuszT napisał: 20.01.10 o godzinie 13:57
Nieprawda:
string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
Returns part of haystack string from the first occurrence of needle to the end of haystack .