HTML::Entities的 decode_entities 可以为您解码:
$redirect_target = decode_entities($redirect_target);
但是将目标 URL 作为 HTTP 参数(例如隐藏的表单字段)传递是危险的(正如@Sinan Ünür 在评论中已经说过的那样)。更好地将目标 URL 存储在您的脚本中,并从表单中传递一个选择器:
if ($selector eq 'home') { $target_url = 'http://www.foo.bar/'; }
elsif ($selector eq 'bling') { $target_url = 'http://www.foo.bar/NewOLS_GCUK_EN/bling.aspx'; }
else {
$target_url = 'http://www.foo.bar/default.html'; # Fallback/default value
}
使用哈希会更短:
my %targets = {
home => 'http://www.foo.bar/',
bling => '/NewOLS_GCUK_EN/bling.aspx',
};
$target_url = $targets{$selector} || '/default_feedback_thanks.html';