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 .

3voto

jewelhuq Punkte 1146

Folgen Sie diesem Schritt, um eine Zeichenkette in eine Zahl umzuwandeln

$value = '$0025.123';
$onlyNumeric = filter_var($value, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
settype($onlyNumeric,"float");

$result=($onlyNumeric+100);
echo $result;

Eine andere Möglichkeit ist es:

$res = preg_replace("/[^0-9.]/", "", "$15645623.095605659");

2voto

Mehrdad Punkte 49

Andere Weise (Unicode-String sogar):

$res = array();
$str = 'test 1234 555 2.7 string ..... 2.2 3.3';
$str = preg_replace("/[^0-9\.]/", " ", $str);
$str = trim(preg_replace('/\s+/u', ' ', $str));
$arr = explode(' ', $str);
for ($i = 0; $i < count($arr); $i++) {
    if (is_numeric($arr[$i])) {
        $res[] = $arr[$i];
    }
}
print_r($res); //Array ( [0] => 1234 [1] => 555 [2] => 2.7 [3] => 2.2 [4] => 3.3 )

2voto

Eine alternative Lösung mit sscanf:

$str = "In My Cart : 11 items";
list($count) = sscanf($str, 'In My Cart : %s items');

-1voto

Wenn Sie nicht wissen, welches Format die Zahl hat - int oder floating -, dann verwenden Sie dies:

$string = '$125.22';

$string2 = '$125';

preg_match_all('/(\d+.?\d+)/',$string,$matches); // $matches[1] = 125.22

preg_match_all('/(\d+.?\d+)/',$string2,$matches); // $matches[1] = 125

-2voto

kasimir Punkte 1451

Je nach Anwendungsfall könnte dies auch eine Option sein:

$str = 'In My Cart : 11 items';
$num = '';

for ($i = 0; $i < strlen($str); $i++) {

    if (is_numeric($str[$i])) {
        $num .= $str[$i];
    }
}

echo $num; // 11

Obwohl ich zustimmen würde, dass ein Regex oder filter_var() wäre in dem genannten Fall sinnvoller.

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