【问题标题】:Perl equivalent to htmlentities()Perl 等价于 htmlentities()
【发布时间】:2016-08-09 19:25:25
【问题描述】:

我是 Perl 新手。

我正在尝试复制 PHP 的 htmlentities() 的部分/大部分功能

到目前为止,我有这个:

$str = '" \' < >';

$str = join('&lt;', split('<', $str));
$str = join('&gt;', split('>', $str));
$str = join('&quot;', split('"', $str));
$str = join('&#039;', split("'", $str));

print $str;

它可以满足我的需求,但我的微优化器只是觉得必须有更好的方法。

我对正则表达式很糟糕,很多 Perl 教程都处理自定义或非标准库,或者由于我的经验不足,所以看起来就是这样。

perl -v 产生:

v5.10.1

【问题讨论】:

  • 与其说“我身上的微优化器只是觉得必须有更好的方法”,不如考虑一下:“我身上的 [美德] 懒惰的程序员希望避免重新发明轮子”。努力寻找和使用已经正确编写的其他/现有方法。
  • @user2864740 感谢您的意见,但我确实尝试找到合适的现有方法已经有一段时间了,当然有很多信息,但我没有成功。询问 SO 通常是我解决所有问题的最后手段。
  • 确保 SO 不是第一选择:google.com/webhp?q=perl%20html%20encode

标签: php perl html-escape-characters


【解决方案1】:

使用HTML::Entitiesencode_entities。 (它显然不会 100% 等效,因为 htmlentities 的 beavhour 根据传递给它的参数而有所不同。)

【讨论】:

  • 嗯,我可以发誓这是我尝试并收到服务器错误的解决方案,但我昨天真的启动了 Perl,所以错误可能在其他代码部分。无论如何,这个解决方案对我有用并且没有错误。谢谢!
【解决方案2】:

您所要求的可以通过使用 decode_entities() 来实现

示例代码:-

use HTML::Entities; my $html = "Hey &amp; &lt"; print decode_entities($html), "\n";

将此作为参考:- Reference

【讨论】:

  • 这与 OP 要求的相反
  • 由于上面的答案已经提到了编码,我已经编辑了我的解码答案,所以用户都知道!见上文我的答案已被编辑。
  • 好的 Perl 示例似乎很受欢迎,所以我想为未来的 Google 员工提供这个答案 :-) +1
  • 这就是我们发展的精神!和平
猜你喜欢
  • 1970-01-01
  • 2012-11-02
  • 1970-01-01
  • 2010-10-22
  • 2012-05-23
  • 2012-02-21
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多