【问题标题】:Return numeric value from string [duplicate]从字符串返回数值[重复]
【发布时间】:2015-03-04 04:26:24
【问题描述】:

标题几乎是不言自明的,但只是为了澄清。

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

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

所以...只是为了举例说明:

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

【问题讨论】:

  • 也许这是一个好的解决方案? stackoverflow.com/questions/6278296/…
  • 我认为正则表达式将是您执行此操作的最佳选择。
  • @Jimmi Elofsson 你是德国人!!! :))))))))))))) 这正是我要找的东西!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!
  • @iprophesy 我知道我的谷歌技能总有一天会得到回报,尽情享受吧! :)

标签: php string numbers integer preg-match


【解决方案1】:

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

无论如何,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);

您确实丢失了可以发出浮动信号的“点”,但据我所知,您的情况排除了这种可能性。

Live Example on sandbox.onlinephpfunctions.com

【讨论】:

  • 谢谢你!很有用!
  • 谢谢兄弟!我只是发现可以使用 intval(filter_var($matches[0], FILTER_SANITIZE_NUMBER_INT));完美运行!!!
【解决方案2】:

试试这样的

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

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 2016-02-15
    • 1970-01-01
    相关资源
    最近更新 更多