Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中检查字符串是否以数字结尾_Php_String_Numbers - Fatal编程技术网

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

在PHP中检查字符串是否以数字结尾,php,string,numbers,Php,String,Numbers,我正在尝试实现下面的功能。这里最好使用某种类型的正则表达式吗?我也需要捕捉数字 function endsWithNumber($string) { $endsWithNumber = false; // Logic return $endsWithNumber; } 返回值是数字(substr($string,-1,1)) 这只检查字符串中的最后一个字符是否为数字,如果要捕获并返回多位数,可能必须使用正则表达式 一个合适的正则表达式应该是/[0-9]+$/,如果它在一行的末尾

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

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

  // Logic

  return $endsWithNumber;
}
返回值是数字(substr($string,-1,1))

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

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

$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+$)-这是一个或多个数字,直到字符串末尾为止,已分组


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

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

$string=“string1”;
$length=strlen($string)-1;
if(是数值($string[$length]))
{
echo“字符串以数字结尾”;
}

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

is_numeric($code[strlen($code) - 1])
相反。

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

is\u numeric(var)
返回布尔值,无论变量是否为数字字符串

函数endsWithNumber($string){
$len=strlen($string);
如果($len==0){
返回false;
}
返回值为数字($string[$len-1]);
}
测试:

var_转储(endsWithNumber(“”);
变量转储(endsWithNumber(“str123”);
变量转储(endsWithNumber(“123str”);
结果:

bool(假)
布尔(真)
布尔(假)

对于正则表达式,您可以将[0-9]替换为\d,对于第一个字符,您只需将其切换为返回
is_numeric(substr($string,0,1))
因为它只有一个字符,实际上最好不要麻烦使用regex.Good short code,但是如果
$code
字符串为空。将抛出警告:未初始化的字符串偏移量-1。你需要添加一个测试来检查字符串是否为空,你能看到我的答案吗?我处理这个案例!