检查字符串是否以PHP中的数字结尾

时间:2010-11-06 18:50:57

标签: php string numbers

我正在尝试实现以下功能。这里使用某种类型的正则表达式最好吗?我也需要捕获这个数字。

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

  // Logic

  return $endsWithNumber;
}

5 个答案:

答案 0 :(得分:21)

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

这只检查字符串中的最后一个字符是否为数字,如果要捕获并返回多位数字,则可能必须使用正则表达式。

一个合适的正则表达式是/[0-9]+$/,如果它在一行的末尾,它将获取一个数字字符串。

答案 1 :(得分: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];
}

正则表达式解释如下:

。*? - 这将从开始时占用字符串中的所有字符,直到找到后续部分的匹配。

(\ d +)$ - 这是一个或多个数字,直到字符串结尾,分组。

没有?在第一部分中,只有最后一个数字将在第二部分匹配,因为它之前的所有数字都将被。*

占用。

答案 2 :(得分:1)

在我看来,找到以数字结尾的字符串的简单方法是

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

答案 3 :(得分:1)

为了避免潜在的未定义索引错误使用

is_numeric($code[strlen($code) - 1])

相反。

答案 4 :(得分:0)

首先,取字符串的长度,检查它是否等于零(空)然后return false其次,检查最后一个字符$len-1的内置函数。

<块引用>

is_numeric(var) 返回布尔值,无论变量是否为数字字符串。

function endsWithNumber($string){
    $len = strlen($string);
    if($len === 0){
        return false;
    }
    return is_numeric($string[$len-1]);
}

测试

var_dump(endsWithNumber(""));
var_dump(endsWithNumber("str123"));
var_dump(endsWithNumber("123str"));

结果

bool(false)
bool(true)
bool(false)