题
我试图使用下面的Perl音译清理形式输入:
sub ValidateInput {
my $input = shift;
$input =~ tr/a-zA-Z0-9_@.:;',#$%&()\/\\{}[]?! -//cd;
return $input;
}
的问题是,这是音译去除嵌入用户可以进入其中我想保持作为字符串的一部分一个textarea字段换行符。我如何能更新此从取出嵌入换行符停止任何想法?在此先感谢您的帮助!
解决方案 4
感谢您的帮助家伙!最终,我决定来处理我们的数据库中的所有数据删除这是导致该问题,以便使被通过我们的更新表单提交的任何文本(而不是由用户更改)将匹配什么在数据库中的字符。根据您的建议,我还添加了一些额外允许的字符以验证正则表达式。
其他提示
我不知道你在做什么,但我怀疑你正试图把所有的空间和ASCII表中的波浪线,有一些空格字符的沿之间的字符。我想大多数的列表中凝结成一个单一的范围\x20-\x7e
:
$string =~ tr/\x0a\x0d\x20-\x7e//cd;
如果您想敲出来像"
一个角色(虽然我怀疑你真的想要它,因为你让单引号),只是调整范围:
$string =~ tr/\x0a\x0d\x20-\xa7\xa9-\x7e//cd;
这一点做的拜占庭方式!如果添加\ 012应该保持换行。
$input =~ tr/a-zA-Z0-9_@.:;',#$%&()\/\{}[]?! \012-//cd;
请参阅形式的内容类型一>
<强>
application/x-www-form-urlencoded
强>:换行符被表示为 “CR LF” 对(即,%0D%0A
)...
<强>
multipart/form-data
强>:对于所有的MIME传输, “CR LF”(即,%0D%0A
)用于数据的单独的行
我不知道你在数据库中。现在你知道你的脚本它看到的东西。
您正在使用CGI.pm
,对吧?
不隶属于 StackOverflow