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

Find first occurence numerical position in a string by php

请问如何找到PHP字符串中第一个出现的数字位置? 例如,如果 "abc2.mp3" 是一个字符串,return 的值为 3 因为第一个出现的数字 "2""abc2.mp3" 中的位置是 3 (第一个位置是0)。

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

感谢您的回复。

strpos() 是您正在寻找的 PHP 函数。这个函数 returns FALSE 当找不到字符串时,这就是你可能会感到困惑的原因。

来自 PHP 文档:

Returns 针所在的位置相对于 haystack 字符串的开头(与偏移量无关)。另请注意,字符串位置从 0 开始,而不是 1。

Returns 如果找不到针则为假。

编辑:

您可以在 preg_match() 中使用正则表达式。这个函数应该可以解决问题:

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

最简单的方法是使用带有标志 PREG_OFFSET_CAPTURE 的 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";
}