查找字符串中的最后一个数值

时间:2018-06-21 08:08:10

标签: php

我有这个字符串#22aantal283xuitvoeren。 在字符串中查找最后一个数字值的最佳方法是什么? (在这种情况下为283)

我不认为chop()substr()是要去的地方。

3 个答案:

答案 0 :(得分:7)

您可以使用preg_match_all并匹配所有数字。
然后,数组中的最后一项是字符串中的最后一个数字。

$s = "#22aantal283xuitvoeren";
preg_match_all("/\d+/", $s, $number);
echo end($number[0]); // 283

https://3v4l.org/44VUJ

答案 1 :(得分:1)

您可以尝试preg_match_all():

$string = "#22aantal283xuitvoeren";

$result = preg_match_all(
    "/(\d+)/",
    $string,
    $matches);

    $lastNumericValueInString = array_pop($matches[1]);

    echo $lastNumericValueInString;

回声283

答案 2 :(得分:1)

这是不使用正则表达式的解决方案。

基本上从后到前循环,直到找到第一个数字。然后,循环直到找到第一个非数字。

$string = "#22aantal283xuitvoeren";

for($i = strlen($string) - 1; $i >= 0; --$i) {
    if(is_numeric($string[$i])) {
        // found the first number from back to front
        $number = $string[$i];
        while(--$i >= 0 && is_numeric($string[$i])) {
            $number = $string[$i].$number;
        }
        break;
    }
}
// $number is now "283"
// if you want an integer, use intval($number)