我如何处理'&';在perl cgi url参数中,其中参数值包含一个'&';签名
我正在尝试在URL中传递参数,并使用param()读取参数。 我的一个参数值包含一个“&”符号,因此当通过param()读取该值时,它会跳过“&”后面的部分。 是否有任何方法可以在不影响包含“&”的值的情况下使用此方法 例如:我如何处理'&';在perl cgi url参数中,其中参数值包含一个'&';签名,perl,cgi,Perl,Cgi,我正在尝试在URL中传递参数,并使用param()读取参数。 我的一个参数值包含一个“&”符号,因此当通过param()读取该值时,它会跳过“&”后面的部分。 是否有任何方法可以在不影响包含“&”的值的情况下使用此方法 例如: 参数品牌的值是“Bell”,而不是“Bell&Ross”。处理包含&的参数值不必做任何特殊的操作。例如,$cgi->param('brand')将返回Bell&RossFor http://someurl/?brand=Bell%20%26%20Ross&cat
参数品牌的值是“Bell”,而不是“Bell&Ross”。处理包含
&
的参数值不必做任何特殊的操作。例如,$cgi->param('brand')
将返回Bell&Ross
For
http://someurl/?brand=Bell%20%26%20Ross&category=Wrist%20Watch%20Dealers&qq_cat_id=8798798
^^^
问题是OP中的url没有正确构造;brand
参数未设置为Bell&Ross
。以下所有内容都将正确构造url:
use URI::Escape qw( uri_escape );
my $url = 'http://someurl/';
$url .= "?" . join('&',
join('=', map { uri_escape($_) } brand => $brand),
join('=', map { uri_escape($_) } category => $category),
join('=', map { uri_escape($_) } qq_cat_id => $qq_cat_id),
);
或
或
处理包含
&
的参数值不需要做任何特殊的操作。例如,$cgi->param('brand')
将返回Bell&Ross
For
http://someurl/?brand=Bell%20%26%20Ross&category=Wrist%20Watch%20Dealers&qq_cat_id=8798798
^^^
问题是OP中的url没有正确构造;brand
参数未设置为Bell&Ross
。以下所有内容都将正确构造url:
use URI::Escape qw( uri_escape );
my $url = 'http://someurl/';
$url .= "?" . join('&',
join('=', map { uri_escape($_) } brand => $brand),
join('=', map { uri_escape($_) } category => $category),
join('=', map { uri_escape($_) } qq_cat_id => $qq_cat_id),
);
或
或
你的URL并不代表你认为它的意思。这并不意味着创造它的人认为这意味着什么。
&
字符在URL中有特殊的含义-它分隔不同的参数。任何遇到URL的URL解析器都会在该点拆分参数(这就是为什么会得到“Bell”而不是“Bell&Ross”)
如果希望URL中的&
不被视为分隔符,则需要对&
进行URL编码(这会将其转换为%26
)
问题不在于处理URL的代码。问题在于生成URL的代码。这就是需要解决的问题
(更新:我最初声称URL无效。这不是真的。)您的URL并不是您认为的意思。这并不意味着创造它的人认为这意味着什么。
&
字符在URL中有特殊的含义-它分隔不同的参数。任何遇到URL的URL解析器都会在该点拆分参数(这就是为什么会得到“Bell”而不是“Bell&Ross”)
如果希望URL中的&
不被视为分隔符,则需要对&
进行URL编码(这会将其转换为%26
)
问题不在于处理URL的代码。问题在于生成URL的代码。这就是需要解决的问题
(更新:我最初声称URL无效。事实并非如此。)第二种方法工作得非常好。非常感谢@ikegami帮助解决这个问题。第二种方法非常有效。非常感谢@ikegami帮助解决这个问题。不,OP的url是完全有效的。是的,我想你是对的。它是有效的;这并不意味着他们认为这意味着什么。不,OP的url是完全有效的。是的,我想你是对的。它是有效的;这并不意味着他们认为这意味着什么。