我有一个多级哈希,我有一个用户的头像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&id=11111
<img src="https://foo.com/useravatar%3Fsize%3Dsmall%26id%3D11111">
当网址插入src
属性之外时,它会被正确转义。但是当它被插入src
属性内部时,它会被破坏。
答案 0 :(得分:4)
您注意到的转义旨在处理
<img src="https://foo.com/useravatar?size=small&id=[+ $avatar_id +]">
您可以更改转义模式。使用
<img src="[+ do { local $escmode = 1; $issue->{avatar}{url} } +]">
生产
<img src="https://foo.com/useravatar?size=small&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__,
});