我们都知道在涉及字符串时什么是黑名单:删除指定的“不良”字符。虽然这有助于保护用户输入,但不如白名单安全。白名单是说“让我告诉你你能给我什么”的过程,而黑名单是说“如果我找到这个,我会删除它。”
一位客户最近要求我创建允许字母、数字、空白字符、句点、逗号和破折号的白名单功能。任何其他字符都将替换为空格。
PHP
function make_valid($input) { return preg_replace('/[^A-Za-z0-9.,\(\)\s-]/',' ',$input); }
上述函数使用preg_match()和一个小的正则表达式来去除垃圾字符。