397 Stimmen

Extrahieren einer einzelnen (vorzeichenlosen) Ganzzahl aus einer Zeichenkette

Ich möchte die Ziffern aus einer Zeichenfolge extrahieren, die Zahlen und Buchstaben enthält:

"In My Cart : 11 items"

Ich möchte die Nummer extrahieren 11 .

12voto

mroncetwice Punkte 422

Ich habe nicht das Verdienst daran, aber ich muss es einfach teilen. Diese Regex wird Zahlen aus einer Zeichenkette, einschließlich Dezimalpunkte / Stellen, sowie Kommas:

/((?:[0-9]+,)*[0-9]+(?:\.[0-9]+)?)/

Zitiert von hier:
php - regex - wie extrahiert man eine Zahl mit Dezimalzeichen (Punkt und Komma) aus einem String (z.B. 1.120,01)?

11voto

Dmitri Gudkov Punkte 2045

Sie können verwenden preg_match :

$s = "In My Cart : 11 items";
preg_match("|\d+|", $s, $m);
var_dump($m);

10voto

eapo Punkte 887

Die Spitze ressourcenschonende Lösungen

<?php
    var $string = "In My Cart : 11 items";
?>

1. Schnellste: filter_var - Filtert eine Variable mit einem angegebenen Filter

<?php
    filter_var($string, FILTER_SANITIZE_NUMBER_INT); // string(2) "11"
?>

2. Fast der Schnellste: str_replace - Alle Vorkommen des Suchstrings durch den Ersetzungsstring ersetzen

<?php
    str_replace(array('In My Cart : ',' item', 's'),"", $string); // string(2) "11"
?>

3. Schnell genug: preg_replace - Suchen und Ersetzen mit einem regulären Ausdruck

<?php
    preg_replace("/[^0-9]/","",$string); // string(2) "11"
?>

Allerdings

  • die Einfachheit der str_replace verursachen Geschwindigkeit, aber auch begrenzte Anwendungsfälle
  • preg_replace ist viel vielseitiger als str_replace o filter_var
  • stattdessen ist es möglich, eine Funktion um anzugeben, was ersetzt werden soll durch preg_replace_callback
  • con preg_replace_callback kann mehrere Ersetzungen in einem Aufruf vornehmen
  • filter_var beschränkt auf Sanierungsmöglichkeiten

10voto

Hariadi Punkte 606

使用方法 preg_replace

$str = 'In My Cart : 11 12 items';
$str = preg_replace('/\D/', '', $str);
echo $str;

7voto

Rakesh Punkte 756
$value = '25%';

Oder

$value = '25.025$';

Oder

$value = 'I am numeric 25';
$onlyNumeric = filter_var($value, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);

Es wird nur der numerische Wert zurückgegeben

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X