【问题标题】:PHP - remove all non-numeric characters from a string [duplicate]PHP - 从字符串中删除所有非数字字符[重复]
【发布时间】:2016-03-03 18:50:59
【问题描述】:

对我来说最好的方法是什么?我应该使用正则表达式还是可以使用其他内置的 PHP 函数?

例如,我希望:12 months 变为 12Every 6 months 变成 61M 变成 1,等等

【问题讨论】:

标签: php string


【解决方案1】:

在这种情况下你可以使用preg_replace

$res = preg_replace("/[^0-9]/", "", "Every 6 Months" );

在这种情况下,$res 返回 6。

如果还想包含小数分隔符或千位分隔符,请查看此示例:

$res = preg_replace("/[^0-9.]/", "", "$ 123.099");

在这种情况下,$res 返回“123.099”

包括句点作为小数分隔符或千位分隔符:“/[^0-9.]/”

包括逗号作为小数分隔符或千位分隔符:“/[^0-9,]/”

包括句点和逗号作为小数分隔符和千位分隔符:“/[^0-9,.]/”

【讨论】:

  • 谢谢。出于兴趣,是否也可以用多个分隔符分解字符串?所以基本上允许explode() 处理逗号、分号、冒号等?
  • 提供的答案允许字符串保留逗号和句点。该问题要求删除所有非数字字符。这是一个小编辑(不完全符合编辑条件,因为它只有 2 个字符),但删除所有非数字的答案应该是 $res = preg_replace("/[^0-9]/", "", "Every 6 Months" );
  • 负数 * 存在 * ,则 $res = preg_replace("/[^0-9.-]/", "", "$ -123.099");
【解决方案2】:

使用\D 匹配非数字字符。

preg_replace('~\D~', '', $str);

【讨论】:

  • 同时删除句点。这可能是一些人正在寻找的。​​span>
  • 它会删除空格/换行符,这正是一些人正在寻找的 :)
  • 也是最简单的,就是我要找的
猜你喜欢
  • 2019-04-16
  • 1970-01-01
  • 2011-05-22
  • 1970-01-01
  • 2013-04-30
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 2010-12-04
相关资源
最近更新 更多