我有很多像这样的URL:
CCD_ 1。
最后,我想有一个像这样的明确的网址:
http://ru.wikipedia.org/wiki/AJAX
我做了两次操作preg_match()
for($i = 0; $i < count($links); $i++){
$link_without_url[].= preg_replace('~/url?q=~', '', $links[$i]);
}
for($j = 0; $j < count($link_without_url); $j++){
$site_name = preg_replace('~&.*~', '', $link_without_url[$j]);
$site = file_get_contents($site_name);
preg_match_all('~<a.*?href="([^"]+)".*?>(.*?)</a>~s', $site, $match);
$links = $match[1];
for($i = 0; $i < count($links); $i++){
echo $i.'))'.$site_name.' '.$links[$i].'<br/>';
}
}
其中$links是我的起始URL的数组。对于正则表达式,是否可以只使用一个preg_match()
或其他函数?
替换这两行
$link_without_url[].= preg_replace('~/url?q=~', '', $links[$i]);
$site_name = preg_replace('~&.*~', '', $link_without_url[$j]);
带有:
$site_name = preg_replace('~^/url?q=([^&]++).*~', '$1', $links[$i]);
我们在第一个backreference中捕获url ([^&]++)
,并用这个backreference替换整行。