PHP在字符串中查找最后一位数的位置和值

时间:2014-12-25 21:35:35

标签: php

$string = "hello 31 84 1 546 today 77 is 4 good";

如何获得最后一个" 4"?

的位置

我如何获得价值" 4"?

4 个答案:

答案 0 :(得分:1)

您的问题不明确,但我认为这是您正在寻找的内容?

$string = "hello 31 84 1 546 today 77 is 4 good";
if(preg_match_all('/\d+/', $string, $numbers))
    $lastnum = end($numbers[0]);
  1. 匹配字符串中的所有分组整数
  2. 将它们放入数组中。
  3. 数组的最后一个元素是句子中的最后一个数字。
  4. 编辑:

    @Michael在评论中说:

      

    也许,如果OP要求,删除a中的最后一位数字   多位数 - 例如如果它结束的是49好,substr()得到   9这在技术上是最后一位而不是49   返回。但问题不明确。

答案 1 :(得分:1)

以下是答案:

$s1 = "hello 31 84 1 546 today 77 is 894 good";

if(preg_match_all('/\d+/', $s1, $numbers)){

    $lastFullNum =      end($numbers[0]);               //eg. "894"
    $lastDigit =        substr($lastFullNum, -1);       //eg. "4"
    $lastDigitPos =     strrpos($s1, $lastDigit, 0);    //eg. "32"

}

答案 2 :(得分:0)

您可以使用preg_match获取最后一位数字,定义" last" as"从那里找不到更多数字",即"它是非数字(\ D)直到字符串结尾($)&#34 ;:

preg_match('#(\\d+)\\D*$#', $string, $gregs);

现在$gregs[1]包含最后一位 s 。 (如果您只想要最后一个,请省略" +")。如果字符串包含回车符,则可能需要多行修饰符。

要获得数字偏移,您需要strrpos

$offset = strrpos($string, $gregs[1]);

或者您可以使用preg_matchPREG_OFFSET_CAPTURE选项:

if (false !== preg_match('#(\\d+)\\D*$#', $string, $gregs, PREG_OFFSET_CAPTURE)) {
    list ($digit, $offset) = $gregs[1];
}

答案 3 :(得分:0)

数组示例;

<?php
  $s1 = "hello 31 84 1 546 today 77 is 894 good";
  $array = explode(' ',$s1);
  echo end($array) . '<br />';
  echo prev($array) . '<br />';
?>