Pamiętaj o Ctype Functions

28 października 2009

Kolejna drobna wskazówka dla programistów PHP. W kursach o tym nie przeczytacie :P

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 :P Nazywa się to Character type checking. Funkcji do wyboru jest kilkanaście, przykładowo (za php.net):

PHP:
  1. <?php
  2. $strings = array('1820.20', '10002', 'wsl!12');
  3. foreach ($strings as $testcase) {
  4.     if (ctype_digit($testcase)) {
  5.         echo "The string $testcase consists of all digits.\n";
  6.     } else {
  7.         echo "The string $testcase does not consist of all digits.\n";
  8.     }
  9. }
  10. ?>

Dostaniemy:

CODE:
  1. The string 1820.20 does not consist of all digits.
  2. The string 10002 consists of all digits.
  3. 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ść.