Php 如何仅获取一些href属性
我有这段PHP代码,我正试图提取一些信息,但我停下来执行以下步骤:Php 如何仅获取一些href属性,php,Php,我有这段PHP代码,我正试图提取一些信息,但我停下来执行以下步骤: $site = "http://www.sports-reference.com/olympics/countries"; $site_html = file_get_html($site); $country_dirty = $site_html->getElementById('div_countries'); foreach($country_dirty->find('img') as $l
$site = "http://www.sports-reference.com/olympics/countries";
$site_html = file_get_html($site);
$country_dirty = $site_html->getElementById('div_countries');
foreach($country_dirty->find('img') as $link){
$country = $link->alt;
$link_country = "$site/$country";
$link_country_html = file_get_html($link_country);
$link_season = $link_country_html->getElementById('div_medals');
foreach($link_season->find('a') as $season){
echo $link_year_season = $season->href . "\n";
//echo $link_season = strstr ($link_year_season,'summer') . "\n";
}
}
变量$link\u year\u seasure为我提供以下输出:
/olympics/countries/AFG/summer/2012/
/olympics/athletes/ba/nesar-ahmad-bahawi-1.html
/olympics/athletes/ni/rohullah-nikpai-1.html
/olympics/countries/AFG/summer/2008/
/olympics/athletes/ba/nesar-ahmad-bahawi-1.html
/olympics/athletes/ni/rohullah-nikpai-1.html
/olympics/countries/AFG/summer/2004/
/olympics/countries/AFG/summer/1996/
/olympics/countries/AFG/summer/1988/
/olympics/countries/AFG/summer/1980/
/olympics/countries/AFG/summer/1972/
.....
我想知道是否可以只获得以下输出:
/olympics/countries/AFG/summer/2012/
/olympics/countries/AFG/summer/2008/
/olympics/countries/AFG/summer/2004/
/olympics/countries/AFG/summer/1996/
/olympics/countries/AFG/summer/1988/
/olympics/countries/AFG/summer/1980/
/olympics/countries/AFG/summer/1972/
您应该能够使用此正则表达式检查链接是否以
/olympics/countries/AFG/summer/
开头,然后是一个数字和一个/
foreach($link_season->find('a') as $season){
if(preg_match('~^/olympics/countries/AFG/summer/\d+/~', $season->href)) {
echo $link_year_season = $season->href . "\n";
//echo $link_season = strstr ($link_year_season,'summer') . "\n";
}
}
演示:
你也可以在夏天之后通过捕获数字来提取当前年份(假设那是一年,第一个正则表达式只检查数字,这一个更严格)
如果季节也可能不同,您可以执行
(?:summer | winter)
,这将允许summer
或winter
成为第四个目录。您应该能够使用此正则表达式检查链接是否以/olympics/countries/AFG/summer/
开头,然后是一个数字和一个//code>
foreach($link_season->find('a') as $season){
if(preg_match('~^/olympics/countries/AFG/summer/\d+/~', $season->href)) {
echo $link_year_season = $season->href . "\n";
//echo $link_season = strstr ($link_year_season,'summer') . "\n";
}
}
演示:
你也可以在夏天之后通过捕获数字来提取当前年份(假设那是一年,第一个正则表达式只检查数字,这一个更严格)
如果季节也不同,你可以做(?:夏季|冬季)
这将允许summer
或winter
成为第四个目录。实现这一点的快速方法是对您已经获得的输出应用preg\u match
或strpos
或类似的内容。下面的答案是否解决了您的问题?一个快速的方法是在您已经得到的输出上应用preg_match
或strpos
或类似的东西。下面的答案是否解决了您的问题?如果你想考虑到任何国家和任何季节,你可以做^\/olympics\/countries\/[A-Z]+\/(?:summer | winter)\/\d{4}\/
,假设夏季和冬季是奥运会举办的唯一季节;)如果你想考虑到任何国家和任何季节,你可以做^\/olympics\/countries\/[A-Z]+\/(?:summer | winter)\/\d{4}\/
,假设夏季和冬季是奥运会举办的唯一季节;)