【问题标题】:PHP filter_var() function allowing more than one minus in integer numbersPHP filter_var() 函数允许整数中有多个减号
【发布时间】:2013-04-28 23:33:03
【问题描述】:

我正在尝试使用filter_var() 过滤整数,但在这种情况下:

echo filter_var('-3-6-5', FILTER_SANITIZE_NUMBER_INT); // Output: -3-6-5

我希望得到 -365 而不是 -3-6-5。

有人知道如何解决这个问题或有正则表达式吗?

感谢您的帮助!

【问题讨论】:

  • 为什么会这样?一些上下文会有所帮助...
  • @elclanrs,我正在尝试清理一些变量,然后验证它们
  • @Marcio Simao:-3-6-5 应该验证失败。您应该向用户显示一条错误消息,而不是试图猜测他们的意思
  • 函数按定义工作:“删除除数字、加号和减号之外的所有字符”。例如过滤-3-6+5a 也会给你-3-6+5。它并没有声称给你一个有效的号码,只是可能是一个有效的号码。

标签: php regex filter-var


【解决方案1】:
echo preg_replace('~^[^-\d]|(?<!^)\D~', '', '-3-6-5'); // -365

它将删除任何不是数字的内容,并在字符串的开头保留- 符号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2015-08-13
    相关资源
    最近更新 更多