在PHP中,我有以下reqular表达:正则表达式替换
$regexp = "/^([-a-z0-9.,[email protected]'?_-\s])+$/i";
我试着去验证我的网站上的联系方式(特别是消息字段),以确保没有讨厌的代码已被输入。我遇到的问题是我需要允许某些正常的标点符号和字符,但是我担心它们可能会被用于插入恶意代码。
对于任何不服从上述表达式的字符,我想将其替换以使其安全。两个问题:
- 如何更换?
- 我应该用什么替换角色?例如,我不允许括号
()
。最好的做法是将其替换为"(" ")"
或\(\)
?
编辑
的数据将被发送到电子邮件地址,并保存到数据库
为什么你担心联系表单中的恶意代码?信息在哪里去?另一个网站?你的邮件?你可能会过度这样做。 –
根据您使用它的位置转移数据。如果插入到数据库中,请使用PDO或正确的* _escape函数。在网站上输出时,请使用htmlspecialchars和urlencode。在shell环境中使用时,escapeshellcmd/escapeshellarg。等等...请参阅问题[»用PHP清理用户输入的最佳方法是什么?](http://stackoverflow.com/q/129677/112968) – knittl
这一切都取决于正在处理的数据。如果它被输出到浏览器,插入数据库,通过一些命令行运行,都需要不同的卫生手段。 –