2013-01-09 15 views
5

Mam ciąg znaków i chcę go zapętlić, aby sprawdzić, czy każdy znak jest literą lub cyfrą.Jak mogę sprawdzić, czy znak jest literą lub cyfrą?

$s = "rfewr545 345b"; 

for ($i=1; $i<=strlen($s); $i++){ 
    if ($a[$i-1] == is a letter){ 
     echo $a[$i-1]." is a letter"; 
    } else { 
     echo $a[$i-1]." is a number"; 
    } 
} 

Jak mogę sprawdzić, czy znak jest literą lub cyfrą?

+0

to możliwe, aby użyć wyrażenia regularnego na cały ciąg zamiast iteracji nad każdą postacią? –

+0

Sprawdź http://stackoverflow.com/q/9721636/1169798 i http://php.net/manual/en/function.is-numeric.php – Sirko

+0

'is_numeric()' powinno wystarczyć do sprawdzania liczb. – tradyblix

Odpowiedz

9

Aby sprawdzić, czy znak is_numeric, użyj:

is_numeric($a[$i-1]) 

jak poniżej:

$s = "rfewr545 345b"; 
for ($i = 1; $i <= strlen($s); $i++){ 
    $char = $a[$i-1]; 
    if (is_numeric($char)) { 
     echo $char . ' is a number'; 
    } else { 
     echo $char . ' is a letter'; 
    } 
} 
+9

Nie każdy znak, który nie jest numeryczny, jest literą !! – m4t1t0

+0

Jest to op, jeśli przypadki. – hsz

+0

Co ze znakami wielobajtowymi? –

0

Można to zrobić za pomocą is_numeric function()

if (is_numeric($a[$i-1])){ 
     echo $a[$i-1]." is a number"; 
    } else { 
     echo $a[$i-1]." is a letter"; 
    } 
2

wyrażeń regularnych można spróbować wykonać następujące czynności.

Test numer

if (preg_match('/\d/', $char)) : 
    echo $char.' is a number'; 
endif; 

testowych dla "list"

if (preg_match('/[a-zA-Z]/', $char)) : 
    echo $char.' is a letter'; 
endif; 

Korzyść z tego podejścia jest przede wszystkim z, test "list", który pozwala skutecznie zdefiniuj, co stanowi jako znak "litera". W tym przykładzie podstawowy alfabet angielski jest zdefiniowany jako "litera".

+0

preg_match ('/^[a-zA-Z \ s \,] + $ /') –

+0

Uważam, że OP oznacza testowanie pojedynczej * litery * znaku, a nie * słowa *. – Boaz

+0

okok, więc on jest w pętli –

0

php zapewniają pewną fajną funkcję kasowania znaków. Użyj funkcji apt jako warunków w blokach.

wizyta

PHP char functions

np ctype_digit zwraca wartość true, jeśli liczba ma wartość numeryczną.

0

Możesz użyć ctype_alpha, aby sprawdzić znaki alfabetu.

Podobnie, możesz użyć ctype_digit, aby sprawdzić znaki numeryczne.

is_numeric - stwierdza, czy zmienna jest ilość lub ciąg liczbowy

is_numeric() przykład:

<?php 

    $tests = array(
     "42", 
     0b10100111001, 
     "not numeric", 
     array(), 
     9.1 
    ); 

    foreach ($tests as $element) { 
     if (is_numeric($element)) { 
      echo "'{$element}' is numeric", PHP_EOL; 
     } else { 
      echo "'{$element}' is NOT numeric", PHP_EOL; 
     } 
    } 
?> 

Powyższy przykład Wydajność:

'42' is numeric 
'1337' is numeric 
'not numeric' is NOT numeric 
'Array' is NOT numeric 
'9.1' is numeric 

przypadku ctype_digit() i is_numeric() różnią się?

Przykład porównywania ciągów z liczb:

<?php 
    $numeric_string = '42'; 
    $integer  = 42; 

    ctype_digit($numeric_string); // true 
    ctype_digit($integer);   // false (ASCII 42 is the * character) 

    is_numeric($numeric_string); // true 
    is_numeric($integer);   // true 

?>