2013-01-09 18 views
5

Ho una stringa e voglio loop in modo da poter controllare se ogni carattere è una lettera o un numero.Come posso verificare se un carattere è una lettera o un numero?

$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"; 
    } 
} 

Come posso verificare se un carattere è una lettera o un numero?

+0

E 'possibile usare un'espressione regolare su tutta la stringa invece di iterare su ogni personaggio? –

+0

Controlla http://stackoverflow.com/q/9721636/1169798 e http://php.net/manual/en/function.is-numeric.php – Sirko

+0

'is_numeric()' dovrebbe fare il trucco per controllare i numeri. – tradyblix

risposta

9

Per testare se il carattere is_numeric, utilizzare:

is_numeric($a[$i-1]) 

come di seguito:

$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

Non tutti i caratteri non numerici sono una lettera !! – m4t1t0

+0

Sono i casi in cui l'op è. – hsz

+0

E i caratteri multibyte? –

0

È possibile farlo utilizzando is_numeric() funzione

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

con le espressioni regolari è possibile provare quanto segue.

test per un numero

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

di prova per una "lettera"

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

Il vantaggio di questo approccio è principalmente dal test "lettera", che consente di in modo efficiente definire cosa costituisce come carattere "lettera". In questo esempio, l'alfabeto inglese di base è definito come una "lettera".

+0

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

+0

Credo che OP si riferisca al test di un singolo carattere * lettera *, non * parole *. – Boaz

+0

okok quindi sta facendo il giro –

0

php forniscono alcune funzioni utili per il checkout dei caratteri. Usa le funzioni apt come condizioni in se blocchi.

visita:

PHP char functions

esempio ctype_digit restituisce true se il numero è numerico.

0

È possibile utilizzare ctype_alpha per verificare i caratteri alfabetici.

Analogamente, è possibile utilizzare ctype_digit per verificare i caratteri numerici.

is_numeric - Verifica se una variabile è un numero o una stringa numerica

is_numeric() esempio:

<?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; 
     } 
    } 
?> 

Il precedente esempio:

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

Dove ctype_digit() e is_numeric() differisce?

esempio confrontando stringhe con numeri interi:

<?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 

?>