2010-11-06 33 views
6

Sto tentando di implementare la funzione seguente. Sarebbe meglio usare qualche tipo di regex qui? Devo anche catturare il numero.Verifica se una stringa termina con un numero in PHP

function endsWithNumber($string) { 
    $endsWithNumber = false; 

    // Logic 

    return $endsWithNumber; 
} 
+0

Dato che è solo un carattere, è probabilmente meglio non preoccuparsi di usare espressioni regolari. – DaiYoukai

risposta

7
$test="abc123"; 
//$test="abc123n"; 
$r = preg_match_all("/.*?(\d+)$/", $test, $matches); 
//echo $r; 
//print_r($matches); 
if($r>0) { 
    echo $matches[count($matches)-1][0]; 
} 

l'espressione regolare viene spiegato come segue:.

*? - questo prenderà tutti i caratteri nella stringa dall'inizio fino a trovare una corrispondenza per la parte successiva.

(\ d +) $ - questa è una o più cifre fino alla fine della stringa, raggruppate.

senza il? nella prima parte, solo l'ultima cifra verrà cercato nella seconda parte perché tutte le cifre prima di esso sarebbero prese dal. *

19

return is_numeric(substr($string, -1, 1));

Questo controlla solo per vedere se l'ultimo carattere della stringa è numerica, se si desidera catturare e restituire numeri multidigit, potrebbe essere necessario utilizzare una regex.

Un'espressione regolare appropriata sarebbe /[0-9]+$/ che prenderà una stringa numerica se si trova alla fine di una riga.

+0

Per la regex, è possibile sostituire [0-9] con \ d –

+1

E per il primo carattere, è sufficiente passare a restituire 'is_numeric (substr ($ string, 0, 1));' – DaiYoukai

+0

+1 per la raccomandazione un'alternativa per l'uso di un'espressione regolare – Maurice

1

a mio parere il modo più semplice per trovare una stringa termina con il numero è

$length=strlen("string1")-1; 
if(is_numeric($string[$length])) 
{ 
    echo "String Ends with Number"; 
} 
Problemi correlati