我有这个测验应用程序,我将人们输入的内容与正确的答案相匹配。现在,我所做的基本上是:
if ($input =~ /$answer/i) {
print "you won";
}
这很好,就好像答案是“鱼”一样,用户可以输入“一条鱼”并被视为一个好的答案。
我面临的问题是,我的用户是法国人,我希望能够接受用户输入“taton”,而答案是“tâton”。
所以,我能做的是:
use POSIX qw(locale_h);
use locale;
setlocale(LC_TYPE, "fr_FR.ISO8859-15");
setlocale(LC_COLLATE, "fr_FR.ISO8859-15");
在我的检查例程中,执行以下操作:
$input = lc($input);
$input =~ tr/àáâãäåçèéêëìíîïñòóôõöùúûüýÿ/aaaaaaceeeeiiiinooooouuuuyy/;
以及类似的答案。
我不喜欢它,因为我必须对事情进行硬编码,而当我决定离开 ISO-8859-15 世界进入 UTF-8 世界的那一天,我就注定了。
所以,我正在寻找一种比较字符串的方法,这将使"tâton" eq "taton"
, "maçon" eq "macon"
or "macon" =~ /maçon/
是真实的。
Try the 文本::无重音 http://search.cpan.org/dist/Text-Unaccent来自 CPAN 的模块(或文本::无重音::PurePerl http://search.cpan.org/dist/Text-Unaccent-PurePerl).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)