php中的白名单

php中的白名单,php,user-input,whitelist,Php,User Input,Whitelist,我有一个用户输入,他们应该输入他们的电话号码。问题是有些人在写电话号码时使用连字符和空格。我想通过一个过滤器将输入内容删除,并在数据库中只存储数字 我想我可以为空格和特殊字符做一些str_replace()。 然而,我认为更好的方法是只选择数字,而不是删除所有其他数字。我想我听说过“白名单”这个词 你能告诉我用PHP解决这个问题的方向吗 示例:我希望输入“0333452-123-4”产生“03334521234” 谢谢 这是一个非常重要的问题,因为有很多口语和地区差异。请参考它的Java,但同样

我有一个用户输入,他们应该输入他们的电话号码。问题是有些人在写电话号码时使用连字符和空格。我想通过一个过滤器将输入内容删除,并在数据库中只存储数字

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

你能告诉我用PHP解决这个问题的方向吗

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


谢谢

这是一个非常重要的问题,因为有很多口语和地区差异。请参考它的Java,但同样的规则适用

我想说的是,除非你需要一些功能更全面的东西,否则请保持简单。创建一个有效正则表达式的列表,并根据每个正则表达式检查输入,直到找到匹配项

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

$phone = preg_replace('![^\d]+!', '', $phone);

顺便说一句,从定义上讲,仅仅挑出数字就等同于删除所有其他数字。如果你的意思不同,你可能需要重新表述。

这是一个非常重要的问题,因为有很多口语和地区差异。请参考它的Java,但同样的规则适用

$number = filter_var(str_replace(array("+","-"), '', $number), FILTER_SANITIZE_NUMBER_INT);
我想说的是,除非你需要一些功能更全面的东西,否则请保持简单。创建一个有效正则表达式的列表,并根据每个正则表达式检查输入,直到找到匹配项

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

$phone = preg_replace('![^\d]+!', '', $phone);
顺便说一句,从定义上讲,仅仅挑出数字就等同于删除所有其他数字。如果你的意思不同,你可能需要重新措辞

$number = filter_var(str_replace(array("+","-"), '', $number), FILTER_SANITIZE_NUMBER_INT);
Filter\u Var
删除除加号和减号以外的所有内容,str\u replace则删除这些内容

或者你可以用preg_替换

$number = preg_replace('/[^0-9]/', '', $number);
Filter\u Var
删除除加号和减号以外的所有内容,str\u replace则删除这些内容

或者你可以用preg_替换

$number = preg_replace('/[^0-9]/', '', $number);

你可以用两种方法。迭代字符串中的每个索引,并在其上运行is\u numeric(),或者您可以在字符串上使用正则表达式。

您可以通过两种方式执行此操作。迭代字符串中的每个索引,并在其上运行is_numeric(),或者您可以在字符串上使用正则表达式。

在客户端,我建议您在创建表单时使用您设计的一些格式。这适用于邮政或电话领域。查看这个jquery以获得参考。以后在服务器端会容易得多。

在客户端,我建议在创建表单时使用您设计的一些格式。这适用于邮政或电话领域。查看这个jquery以获得参考。稍后在服务器端将非常容易。

您的示例代码运行得非常好,但我在理解它时遇到了困难。我写道:$phone=preg_replace('/[^\d]/','$phone);相反这两者之间有区别吗?我在哪里可以阅读更多有关您使用的感叹号的信息?唯一的区别是,我用空字符串替换一组非数字(因此+运算符表示一个或多个),而不是用空字符串替换单个非数字。差别真的很小。您的示例代码确实运行得很好,但我很难理解它。我写道:$phone=preg_replace('/[^\d]/','$phone);相反这两者之间有区别吗?我在哪里可以阅读更多有关您使用的感叹号的信息?唯一的区别是,我用空字符串替换一组非数字(因此+运算符表示一个或多个),而不是用空字符串替换单个非数字。差别真的很小。