Perl:转义从变量扩展的双引号
Perl: Escaping the double-quotes expanded from a variable
如何获得
my $name = 'John "FOO" Rambo';
扩展到
<span title=\"The great and mighty $name\"
类似于
<span title=\"The great and mighty John \"FOO\" Rambo\"</span>
而不是
<span title=\"The great and mighty John "FOO" Rambo\"
这样我的 html 标签在生成页面时不会被破坏并且名称包含 "
?
使用"
可以得到正确的HTML
my $name = 'John "FOO" Rambo';
$name =~ s/"/"/g;
my $html = "<span title=\"The great and mighty $name\"/>";
print $html ."\n";
澄清你原来的问题:
您可以使用简单的正则表达式来代替引号。
示例:
my $name = 'John "FOO" Rambo';
$name =~ s/"/\"/g;
my $html = "<span title=\"The great and mighty $name\"/>";
print $html ."\n";
这个
$name =~ s/"/\"/g;
简单地说用\"
替换所有"
(但由于\
是特殊字符,需要转义为\"
。
g
表示 globally
,即字符串中所有出现的地方。
(即,如果您 运行 仅 $name =~ s/"/\"/;
,则 $name
将是 John \"FOO" Rambo
,但如果 g
则为 John \"FOO\" Rambo
)
但这不会产生有效的 HTML
正确的HTML如下:
<span title="The great and mighty John "FOO" Rambo">...</span>
您可以通过以下方式获取:
use HTML::Entities qw( encode_entities );
my $html = '<span title="' . encode_entities("The great and mighty $name") . '">...</span>';
-or-
my $html = '<span title="The great and mighty ' . encode_entities($name) . '">...</span>';
您可能应该使用模板系统。如果您使用 Template-Toolkit,模板将是
<span title="The great and mighty [% name | html %]">...</span>
如何获得
my $name = 'John "FOO" Rambo';
扩展到
<span title=\"The great and mighty $name\"
类似于
<span title=\"The great and mighty John \"FOO\" Rambo\"</span>
而不是
<span title=\"The great and mighty John "FOO" Rambo\"
这样我的 html 标签在生成页面时不会被破坏并且名称包含 "
?
使用"
my $name = 'John "FOO" Rambo';
$name =~ s/"/"/g;
my $html = "<span title=\"The great and mighty $name\"/>";
print $html ."\n";
澄清你原来的问题:
您可以使用简单的正则表达式来代替引号。 示例:
my $name = 'John "FOO" Rambo';
$name =~ s/"/\"/g;
my $html = "<span title=\"The great and mighty $name\"/>";
print $html ."\n";
这个
$name =~ s/"/\"/g;
简单地说用\"
替换所有"
(但由于\
是特殊字符,需要转义为\"
。
g
表示 globally
,即字符串中所有出现的地方。
(即,如果您 运行 仅 $name =~ s/"/\"/;
,则 $name
将是 John \"FOO" Rambo
,但如果 g
则为 John \"FOO\" Rambo
)
但这不会产生有效的 HTML
正确的HTML如下:
<span title="The great and mighty John "FOO" Rambo">...</span>
您可以通过以下方式获取:
use HTML::Entities qw( encode_entities );
my $html = '<span title="' . encode_entities("The great and mighty $name") . '">...</span>';
-or-
my $html = '<span title="The great and mighty ' . encode_entities($name) . '">...</span>';
您可能应该使用模板系统。如果您使用 Template-Toolkit,模板将是
<span title="The great and mighty [% name | html %]">...</span>