webentwicklung-frage-antwort-db.com.de

PHP regulärer Ausdruck - nur Filternummer

Ich weiß, das klingt vielleicht wie eine Scheinfrage, aber ich versuche sicherzustellen, dass der bereitgestellte String ein Zahlen-/Dezimalformat hat, um ihn später mit der number_format () - Funktion von PHP zu verwenden.

Wie würde ich es tun - sagen Sie, jemand tippt 15:00 in das Textfeld - - welche regulären Ausdrücke und PHP-Funktionen sollte ich verwenden, um den Doppelpunkt daraus zu entfernen und nur die gültigen Zeichen zurückzugeben?.

preg_match () gibt Array zurück - daher kann ich das Ergebnis nicht an number_format () übergeben, es sei denn, implode () oder etwas ähnliches.

Ihre Hilfe wäre sehr dankbar.

36
user398341

Die Verwendung von is_numeric oder intval ist wahrscheinlich der beste Weg, um eine Zahl hier zu bestätigen. Um Ihre Frage zu beantworten, können Sie stattdessen preg_replace verwenden. In diesem Beispiel werden alle nicht numerischen Zeichen entfernt:

$output = preg_replace( '/[^0-9]/', '', $string );
110
buley

Um etwas zu entfernen, das keine Nummer ist:

$output = preg_replace('/[^0-9]/', '', $input);

Erläuterung:

  • [0-9] stimmt mit einer beliebigen Zahl zwischen 0 und 9 überein.
  • ^ negiert ein []-Muster.
  • Also stimmt [^0-9] mit allem überein, was keine Zahl ist, und da wir preg_replace verwenden, werden sie durch nichts '' (zweites Argument von preg_replace) ersetzt.
38
netcoder

Sie können das ausprobieren:

$string = preg_replace('/[^0-9]/', '', $string);

Prost.

6
SileNT

verwenden Sie die integrierte PHP-Funktion is_numeric, um zu prüfen, ob der Wert numerisch ist.

2
Headshota

Sie könnten so etwas tun, wenn Sie nur ganze Zahlen wollen.

function make_whole($v){
    $v = floor($v);
    if(is_numeric($v)){
      echo (int)$v;
      // if you want only positive whole numbers
      //echo (int)$v = abs($v);
    }
}
0
toystory