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

Find first occurence numerical position in a string by php

本问题已经有最佳答案,请猛点这里访问。

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

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

谢谢你的回复。


最简单的方法是使用preg_match()和标志preg_offset_capture imho

1
2
3
4
5
6
$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。

编辑:

你可以在preg_match()中使用regex。这个函数应该实现以下功能:

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