$string = "hello 31 84 1 546 today 77 is 4 good";
如何获得最后一个" 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]);
@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_match的PREG_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 />';
?>