在字符串中找到第一个出现的任何数字的位置(php)

时间:2011-09-21 06:46:33

标签: php regex string

有人可以帮我找到字符串中任意数字首次出现位置的算法吗?

我发现它在网络上的代码并不起作用:

function my_ofset($text){
    preg_match('/^[^\-]*-\D*/', $text, $m);
    return strlen($m[0]);
}
echo my_ofset('[HorribleSubs] Bleach - 311 [720p].mkv');

5 个答案:

答案 0 :(得分:19)

function my_offset($text) {
    preg_match('/\d/', $text, $m, PREG_OFFSET_CAPTURE);
    if (sizeof($m))
        return $m[0][1]; // 24 in your example

    // return anything you need for the case when there's no numbers in the string
    return strlen($text);
}

答案 1 :(得分:15)

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

应该为此工作。原始代码需要-来到第一个数字之前,这可能就是问题了吗?

答案 2 :(得分:7)

内置的PHP函数strcspn()将与Stanislav Shabalin的答案中的函数相同,如下所示:

karate.log()

示例:

strcspn( $str , '0123456789' )

HTH

答案 3 :(得分:0)

我可以做正则表达式,但我必须进入改变状态 记住我编码后它的作用。

这是一个简单的PHP函数,你可以使用......

[HPM] Error occurred while trying to proxy request /webpack/vendor-bundle-310d7ea8b116074b3610.js from localhost:3035 to http://lvh.me:3035 (ENFILE) (https://nodejs.org/api/errors.html#errors_common_system_errors)

答案 4 :(得分:0)

问题

查找字符串中第一个出现的数字

解决方案

这是JavaScript中的非正则表达式解决方案

var findFirstNum = function(str) {
    let i = 0;
    let result = "";
    let value;
    while (i<str.length) {
      if(!isNaN(parseInt(str[i]))) {
        if (str[i-1] === "-") {
          result = "-";
        }
        while (!isNaN(parseInt(str[i])) && i<str.length) {
          result = result + str[i];
          i++;
        }
        break;
      }
      i++;
    }
    return parseInt(result);  
};

示例输入

findFirstNum("words and -987 555");

输出

-987