尝试从进入Perl表单的数据中删除正确的单引号失败。如果我将文本:(不能被躲避)粘贴到表单中,它永远不会删除正确的单引号。我尝试了不同的编码和转义Unicode的方法,似乎没有任何工作。
以下是我正在使用的内容。
#!/usr/bin/perl
use strict;
use CGI::Carp qw( fatalsToBrowser carpout);
use CGI '-utf8';
my $q = CGI->new;
my $buffer = $q->param( 'q' );
print "Content-Type: text/html; charset=UTF-8", "\n\n";
$buffer =~ s/[\'\`\.]//g;
$buffer =~ s/’//sg;
print "$buffer";
答案 0 :(得分:1)
我想你可能会喜欢Text::Demoronise。
答案 1 :(得分:0)
所以,诀窍是找出角色是什么。一种解决方案是做这样的事情:
for my $c (split //, $buffer) {
printf "[$c]: %x\n", ord $c;
}
一旦你知道这个角色是什么,删除它很简单。
答案 2 :(得分:0)
我将替换行更改为:
$buffer =~ s/[\'\’\.]//g;
这是我从命令行得到的结果:
$ ./test.pl q="( Can’t Be Dodged )"
Content-Type: text/html; charset=UTF-8
( Cant Be Dodged )
$
相同的字符串,但使用转义的左单引号,使用原始代码生成相同的结果。
修改强>
我已经清理了输出 - 命令提示符现在只是'$',并且在输出的末尾添加了换行符,这样可以更容易地查看相关输出。