我有以下网址:
需要以正确的方式提取“?”之后的值 需要找到如何在 perl 中仅将http://example.com部分从字符串中分解出来,并将其存储在自己的变量中,将其拆分并在传递之前保存在变量中。
我有以下网址:
需要以正确的方式提取“?”之后的值 需要找到如何在 perl 中仅将http://example.com部分从字符串中分解出来,并将其存储在自己的变量中,将其拆分并在传递之前保存在变量中。
不要自己做,使用URI模块,它旨在理解这类数据。
my $uri = URI->new('http://hostname.com/...?...');
$uri->query; # The value after the '?'
$uri->scheme; # "http"
$uri->host; # hostname.com
此答案的扩展,包括query_param:
use URI;
use URI::QueryParam;
my $url = 'http://stagingbugzilla.cpiv.com/html/estVerificationPool/estPendingBugs.php?team_name=General%20administration';
my $uri = URI->new( $url );
my @keys = $uri->query_param();
# @keys contains the query parameter names
my $team_name = $uri->query_param( 'team_name' );
# $team_name contains the value of the team_name parameter
这只是需要的简单拆分吗?如果是这样...
my $foo = "http://stagingbugzilla.cpiv.com/html/estVerificationPool/estPendingBugs.php?team_name=General%20administration";
my @values = split( '\?', $foo );
print $values[1];
有更好的方法可以更多地了解 URL,但如果这样做可以解决问题......
这个正则表达式:
^http://([^/]*)/[^?]*\?(.*)$
应用于此字符串时:
http://stagingbugzilla.cpiv.com/html/estVerificationPool/estPendingBugs.php?team_name=General%20administration
将产生这些捕获的模式
1. stagingbugzilla.cpiv.com
2. team_name=General%20administration
Perl 的完整代码是:
$url = "http://stagingbugzilla.cpiv.com/html/estVerificationPool/estPendingBugs.php?team_name=General%20administration";
($domain, $query) = ($url =~ m{^http://([^/]*)/[^?]*\?(.*)$});
使用$domain
并$query
成为您想要的部分,尽管使用像 Pilcrow 建议的内置库可能更明智。
要提取 之后的值?
,请使用
$url="http://stagingbugzilla.cpiv.com/html/estVerificationPool/estPendingBugs.php?team_name=General%20administration";
($query) = $url =~ /.+?\?(.+)/;
从 url 获取域名并保存在 save 变量中
($url) = $url =~ m{(http://.+?)/};
希望这会有所帮助