我该如何将
my $name = 'John "FOO" Rambo';
扩展到
<span title=\"The great and mighty $name\"
而不是
<span title=\"The great and mighty John "FOO" Rambo\"
这样当生成页面时,我的HTML标记不会被破坏,同时名称中包含"
?
我该如何将
my $name = 'John "FOO" Rambo';
扩展到
<span title=\"The great and mighty $name\"
而不是
<span title=\"The great and mighty John "FOO" Rambo\"
这样当生成页面时,我的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>
正确的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
表示全局匹配,即字符串中的所有出现。
(例如,如果您只运行$name =~ s/"/\\"/;
,那么$name
将是John \"FOO" Rambo
,但使用g
则是John \"FOO\" Rambo
)
但这不会产生有效的HTML
$name =~ s/"/\\"/g;
是什么意思? - rbmg
是什么意思?谢谢。 - Zloj\"
不是有效的 HTML 转义字符,而"
才是。 - el.pescado - нет войне