CentOS
有没有简单的方法可以从数据流中转换 HTML 特殊实体?我将数据传递给 bash 脚本,有时该数据包含特殊实体。例如:
“测试” & 测试 $test !测试 @ # $ % ^ & *
我不确定为什么有些字符可以正常显示而其他字符却不能,但不幸的是,我无法控制传入的数据。
我想我也许可以在这里使用 SED,但这似乎很麻烦,而且可能容易出现误报。有没有一个 Linux 命令可以专门解码这种类型的数据?
答案1
PHP 非常适合此用途。此示例需要 PHP 5:
cat file.html | php -R 'echo html_entity_decode($argn);'
答案2
Perl 一如既往地是你的朋友。我认为这样做可以:
perl -n -mHTML::Entities -e ' ; print HTML::Entities::decode_entities($_) ;'
例如:
echo '"test" & test $test ! test @ # $ % ^ & *' |perl -n -mHTML::Entities -e ' ; print HTML::Entities::decode_entities($_) ;'
输出:
someguy@somehost ~]$ echo '"test" & test $test ! test @ # $ % ^ & *' |perl -n -mHTML::Entities -e ' ; print HTML::Entities::decode_entities($_) ;'
"test" & test $test ! test @ # $ % ^ & *
答案3
答案4
从标准输入获取文本文件:
#!/bin/bash
#
while read lin; do
newl=${lin//>/>}
newl=${newl//</<}
newl=${newl//&/<}
# ...other entites
echo "$newl"
done
它可能需要 bash >= 版本 4