无法删除右侧单引号

时间:2011-07-30 11:44:23

标签: regex perl apostrophe quote

尝试从进入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";

3 个答案:

答案 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 )
$ 

相同的字符串,但使用转义的单引号,使用原始代码生成相同的结果。

修改

我已经清理了输出 - 命令提示符现在只是'$',并且在输出的末尾添加了换行符,这样可以更容易地查看相关输出。