çift regex ile tek sefer alır yada bu şekilde iki iş yaparsın

preg_match('@<li>(.*?)</li>@si',$html,$liler);
foreach($liler[1] as $li)
{
preg_match('@hreg="(.*?)"@si',$li,$link);
}

gibi gibi mantık ve regexi birleştirin çok daha kısa tek satırla bile yaparsınız yukarıdaki işlemi