加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 如何在Perl中替换所有HTML编码的重音?

发布时间:2020-12-14 05:58:49 所属栏目:百科 来源:网络整理
导读:我有以下情况: 有一个工具可以从Web界面获取XSLT并将XSLT嵌入到XML文件中(应该有人被解雇). “不幸的是”我在一个法语国家工作,因此XSLT有很多带有重音符号的单词.当XSLT嵌入到XML中时,该工具会将所有重音转换为其HTML代码(Iacute,igrave等…). 我的Perl代
我有以下情况:

有一个工具可以从Web界面获取XSLT并将XSLT嵌入到XML文件中(应该有人被解雇). “不幸的是”我在一个法语国家工作,因此XSLT有很多带有重音符号的单词.当XSLT嵌入到XML中时,该工具会将所有重音转换为其HTML代码(Iacute,igrave等…).

我的Perl代码正在从XML中检索XSLT,并使用Xalan命令行工具针对其他XML执行它.每次XSLT中都有一些重音时,Xalan工具会抛出异常.

我最初做一个正则表达式来改变XSLT中的所有重音:

# the & is omitted in the codes becuase it will be rendered in the page
$xslt =~s/Aacute;/á/gso;
$xslt =~s/aacute;/á/gso;
$xslt =~s/Agrave;/à/gso;
$xslt =~s/Acirc;/?/gso;
$xslt =~s/agrave;/à/gso;

但这样做意味着我必须为每个重音代码写一个正则表达式….

我的问题是,如果没有为每个代码编写正则表达式,有没有这样做呢? (认为??这是唯一的解决方案,想要呕吐.)

顺便说一句,该工具是TeamSite,它很糟糕…..

编辑:我忘了提到我需要一个Perl唯一的解决方案,安全性不允许我安装他们没有检查一周左右的任何类型的库:(

解决方法

您可以尝试像 HTML::Entities这样的东西.来自POD:

use HTML::Entities;
$a = "Våre norske tegn bør &#230res";
decode_entities($a);
#encode_entities($a,"200-377");  ## not needed for what you are doing

为了响应您的编辑,HTML :: Entities不在perl核心中.它可能仍然安装在您的系统上,因为它被许多其他库使用.您可以通过运行此命令来检查:

perl -MHTML::Entities -le 'print "If this prints,the it is installed"'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读