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

时间:2016-01-07 12:20:13

标签: php string strpos

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

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

感谢您的回复。

2 个答案:

答案 0 :(得分:2)

最简单的方法是使用带标志的preg_match()PREG_OFFSET_CAPTURE恕我直言

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

答案 1 :(得分:0)

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

来自PHP文档:

返回针存在于相对于haystack字符串开头的位置(与offset无关)。另请注意,字符串位置从0开始,而不是1。

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

修改

您可以将正则表达式与preg_match()一起使用。这个功能可以解决这个问题:

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