我试图找到一种快速简便的方法来检查字符串中的第一个字母是否为数字。我在S.O上看到的很多功能和方法看起来都很复杂。我想知道,这会是这样的工作:
is_numeric($string[0]);
答案 0 :(得分:19)
更简单的方法可能是:
is_numeric(substr($string, 0, 1))
它使用substr()
解决了可能的空字符串(没有第一个字符)的问题。如果是空字符串,则substr()
会返回false
,false
不会将is_numeric()
识别为数字。
答案 1 :(得分:6)
不,那不行。您可能会得到" 注意:未初始化的字符串偏移量:0 "注意。要使其有效,请添加strlen()
:
if ( strlen($string) > 0 && is_numeric($string[0]) ) {
}
答案 2 :(得分:6)
我不知道为什么这个答案会被删除,但正确答案是
preg_match('/^\d/', $string);
为什么呢?因为它提供了标准方式来查询字符串。通常,您必须在应用程序中回答许多类似的问题:
等等。如果没有正则表达式,您必须为每种情况发明不同的字符串函数组合,而RE提供统一的标准接口,您可以一次又一次地重复使用。与算术相比,这就像代数一样。
答案 3 :(得分:3)
是的,这是一种干净的方式,但是使用ctype_digit代替,因为它只允许数字0到9而不是其他。
答案 4 :(得分:1)
它不适用于空字符串,因此您应该在访问它之前检查偏移量:
$result = isset($string[0]) ? is_numeric($string[0]) : false;