通过php查找字符串中第一个出现的数字位置


Find first occurence numerical position in a string by php

我可以问一下如何用PHP在字符串中找到第一个出现的数字位置吗?例如,如果"abc2.mp3"是字符串,则返回值3,因为"abc2.mp3"中第一个出现编号"2"的位置是3(第一个位置是0)。

我在PHP中使用了strpos()函数,它只返回字符串是否为数字,即TRUEFALSE

谢谢你的回复。

最简单的方法是使用带有preg_OFFSET_CAPTURE IMHO 标志的preg_match()

$string = 'abc2.mp3';
if(preg_match('/[0-9]/', $string, $matches, PREG_OFFSET_CAPTURE)) {
  echo "Match at position " . $matches[0][1];
} else {
  echo "No match";
}

strpos()是您要查找的PHP函数。当找不到字符串时,此函数返回FALSE,这就是您可能感到困惑的原因。

来自PHP文档:

返回指针相对于草垛字符串起点的位置(与偏移无关)。还要注意,字符串位置从0开始,而不是从1开始。

如果未找到针头,则返回FALSE。

编辑:

您可以将regex与preg_match()一起使用。这个功能应该可以做到:

function getFirstNumberOffset($string){
    preg_match('/^'D*(?='d)/', $string, $m);
    return isset($m[0]) ? strlen($m[0]) : FALSE;
}