从字符串返回数值

时间:2015-01-06 13:32:09

标签: php string numbers integer preg-match

标题几乎是自我解释,但只是为了澄清。

我想从字符串中取出数值,不一定只包含数值。

现在我可以用preg_match做到这一点,但我想知道是否有一个内部的php命令可以更清洁的方式来做。

所以......只是用例子说明:

$myString = 'qazwsxedc15rfvtgbyhnujmikolp';
$myString = fetchNumber($myString); //Expecting to get $myString=15;

2 个答案:

答案 0 :(得分:2)

我不相信这是一个可以从字符串中获取数字的开箱即用功能。 有一些约定,例如以数字开头的字符串可以类型转换为整数。

无论如何,preg_match可能不是最佳的。考虑使用preg_replace

function fetchNumber($string)
{
  $string = preg_replace('#[^\d]*#', '', $string);
  return (int)$string;
}

$myString = 'qazwsxedc15rfvtgbyhnujmikolp';
$myString = fetchNumber($myString); //Expecting to get $myString=15;

var_dump($myString);

你确实失去了" dot"可以发出浮动的信号,但就你注意到的那样,你的场景排除了这种可能性。

Live Example on sandbox.onlinephpfunctions.com

答案 1 :(得分:1)

尝试这样的事情

$str = 'qazwsxedc15rfvtgbyhnujmikolp';
preg_match_all('!\d+!', $str, $matches);
print_r($matches);