我有这个字符串#22aantal283xuitvoeren
。
在字符串中查找最后一个数字值的最佳方法是什么? (在这种情况下为283)
我不认为chop()
或substr()
是要去的地方。
答案 0 :(得分:7)
您可以使用preg_match_all并匹配所有数字。
然后,数组中的最后一项是字符串中的最后一个数字。
$s = "#22aantal283xuitvoeren";
preg_match_all("/\d+/", $s, $number);
echo end($number[0]); // 283
答案 1 :(得分:1)
您可以尝试preg_match_all():
$string = "#22aantal283xuitvoeren";
$result = preg_match_all(
"/(\d+)/",
$string,
$matches);
$lastNumericValueInString = array_pop($matches[1]);
echo $lastNumericValueInString;
回声283
答案 2 :(得分:1)
这是不使用正则表达式的解决方案。
基本上从后到前循环,直到找到第一个数字。然后,循环直到找到第一个非数字。
$string = "#22aantal283xuitvoeren";
for($i = strlen($string) - 1; $i >= 0; --$i) {
if(is_numeric($string[$i])) {
// found the first number from back to front
$number = $string[$i];
while(--$i >= 0 && is_numeric($string[$i])) {
$number = $string[$i].$number;
}
break;
}
}
// $number is now "283"
// if you want an integer, use intval($number)