php中的白名单

Fel*_*sen 1 php user-input whitelist

我为用户输入了他们应该输入电话号码的输入。问题是有些人在写他们的电话号码时带有连字符和空格。我想将输入放入过滤器以删除此类内容并仅将数字存储在我的数据库中。

我想我可以为空格和特殊字符做一些 str_replace() 。但是我认为更好的方法是只挑选数字而不是删除其他所有内容。我想我听说过“白名单”这个词。

你能指出我在 PHP 中解决这个问题的方向吗?

示例:我希望输入“0333 452-123-4”产生“03334521234”

谢谢!

cle*_*tus 5

这是一个不平凡的问题,因为有很多口语和地区差异。请参阅使用 Java 将电话号码转换为国际格式 (E.164) 的最佳方法是什么?它是 Java,但适用相同的规则。

我会说除非您需要功能更齐全的东西,否则请保持简单。创建一个有效的正则表达式列表,并针对每个表达式检查输入,直到找到匹配项。

如果您希望它非常简单,只需删除非数字即可:

$phone = preg_replace('![^\d]+!', '', $phone);
Run Code Online (Sandbox Code Playgroud)

顺便说一句,根据定义,仅挑选数字与删除其他所有内容相同。如果您的意思不同,您可能需要重新表述。