【问题标题】:Img source is a variable, the URL gets encodedImg 源是一个变量,URL 被编码
【发布时间】:2015-04-27 20:04:15
【问题描述】:

我有一个多级哈希,其中包含用户头像的 URL。

我正在尝试使用“Jane Doe image”制作一个单元格,但是当代码运行时,URL 正在发生变化。当我将其插入 Embperl 模板时,

https://foo.com/useravatar?size=small&id=11111

变成

https://foo.com/useravatar%3Fsize%3Dsmall%26id%3D11111

如您所见,特殊字符已编码,因此找不到图像。你如何解决这个问题?

use strict;
use warnings;

use Embperl qw( );

our $issue = {
   avatar => {
      url => 'https://foo.com/useravatar?size=small&id=11111',
   },
};

my $template = <<'__EOI__';
[+ $issue->{avatar}{url} +]
<img src="[+ $issue->{avatar}{url} +]">
__EOI__

Embperl::Execute({
   input   => \$template,
   package => __PACKAGE__,
});

这会产生:

https://foo.com/useravatar?size=small&amp;id=11111
<img src="https://foo.com/useravatar%3Fsize%3Dsmall%26id%3D11111">

当 URL 插入到 src 属性之外时,它会被正确转义。但是当它被插入到 src 属性中时,它会被破坏。

【问题讨论】:

  • 我添加了一些代码,但我认为这在这里没有帮助。
  • 问一个好问题有点艺术。您需要提供足够的信息,以便其他人能够理解您的意思,查看可能出错的地方并提出解决方案。您提供的信息越少,您就越依赖遇到完全相同问题的人,并且知道他们做了什么来解决它。这就是How to Ask 存在的原因 - 为如何获得最佳响应提供指导。 SO上的人喜欢他们可以回答的问题 - 否则他们不会在这里。

标签: html image perl url embperl


【解决方案1】:

你注意到的转义是为了处理

<img src="https://foo.com/useravatar?size=small&amp;id=[+ $avatar_id +]">

您可以更改转义模式。使用

<img src="[+ do { local $escmode = 1; $issue->{avatar}{url} } +]">

生产

<img src="https://foo.com/useravatar?size=small&amp;id=11111">

在 URL 处获取图像

https://foo.com/useravatar?size=small&id=11111

测试:

use strict;
use warnings;

use Embperl qw( );

our $issue = {
   avatar => {
      url => 'https://foo.com/useravatar?size=small&id=11111',
   },
};

my $template = <<'__EOI__';
<img src="[+ $issue->{avatar}{url} +]">
<img src="[+ do { local $escmode = 1; $issue->{avatar}{url} } +]">
__EOI__

Embperl::Execute({
   input   => \$template,
   package => __PACKAGE__,
});

【讨论】:

  • 不批评您的回答,但没有更好的方法吗?这看起来很糟糕而且很乱。当然,相信这是“Embperl 授权”方式,我不会感到惊讶。
  • 我特意选择了更复杂的解决方案,以防万一您要求我简化它!
  • 如果你不构建任何像&lt;img src="https://foo.com/useravatar?size=small&amp;amp;id=[+ $avatar_id +]"&gt;这样的url,你可以全局设置而不是本地设置(例如[- $escmode = 1 -]
  • 我不是最初的提问者,只是将其视为驾车。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
  • 2018-07-01
  • 2011-03-30
  • 2017-09-22
  • 1970-01-01
相关资源
最近更新 更多