本文章来给大家介绍在PHP取网页所有链接实现程序代码,有直接利用正则的也有用在采集中过滤所有连接地址,有需要了解的朋友可参考。
我们核心代码就是正则表达试了代码如下
复制代码
function get_all_url(http://pic3.phprm.com/2013/05/18/$code.jpg){
preg_match_all(‘/"' ]+)["|']?s*[^>]*>([^>]+)/i’,$code,$arr);
return array(‘name’=>$arr[2],’url’=>$arr[1]);
}
上面只是简单的下面看全例代码如下
复制代码
http://pic3.phprm.com/2013/05/18/$url.jpg ='http://www.phprm.com';
$body=@file_get_contents($url);
preg_match_all('/href=['"]?([^'"]*)['"]?>(.*)/i',$body,$b);
$nums = array();
foreach($b[1] as $u){
if(in_array($u,$nums)){
continue;
}
$nums[]=$u;
$title=strip_tags($u);
echo $title."";
}
利用curl函数来获取代码如下
复制代码
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.phprm.com/');
// 只需返回HTTP header
curl_setopt($ch, CURLOPT_HEADER, 1);
// 页面内容我们并不需要
// curl_setopt($ch, CURLOPT_NOBODY, 1);
// 返回结果,而不是输出它
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
$info = curl_getinfo($ch);
if ($html === false) {
echo "cURL Error: " . curl_error($ch);
}
curl_close($ch);
$linkarr = _striplinks($html);
// 主机部分,补全用
$host = 'http://www.phprm.com/';
if (is_array($linkarr)) {
foreach ($linkarr as $k => $v) {
$linkresult[$k] = _expandlinks($v, $host);
}
}
printf("
此页面的所有链接为:%sn", var_export($linkresult , true));
?>
获取所有网址,但只有不重复的数据代码如下
复制代码
$e=clinchgeturl(http://pic3.phprm.com/2013/05/18/forumdisplay.jpg);
var_dump($e);
function clinchgeturl($url)
{
//$url="http://127.0.0.1/1.htm";
//$rootpath="http://fsrootpathfsfsf/yyyyyy/";
//var_dump($rrr);
if(eregi('(.)*[.](.)*',$url)){
$roopath=split("/",$url);
$rootpath="http://".$roopath[2]."/";
$nnn=count($roopath)-1;for($yu=3;$yu // var_dump($rootpath); //http: ,'',127.0.0.1,xnml,index.php
}
else{$rootpath=$url;//var_dump($rootpath);
}
if(isset($url)){
echo "$url 有下列裢接:
";
$fcontents = file($url);
while(list(,$line)=each($fcontents)){
while(eregi('(href[[:space:]]*=[[:space:]]*"?[[:alnum:]:@/._-] [?]?[^"]*"?)',$line,$regs)){
//$regs[1] = eregi_replace('(href[[:space:]]*=[[:space:]]*"?)([[:alnum:]:@/._-] )("?)',"2",$regs[1]);
$regs[1] = eregi_replace('(href[[:space:]]*=[[:space:]]*["]?)([[:alnum:]:@/._-] [?]?[^"]*)(.*)[^"/]*(["]?)',"2",$regs[1]);
if(!eregi('^http://',$regs[1])){
if(eregi('^..',$regs[1])){
// $roopath=eregi_replace('(http://)?([[:alnum:]:@/._-] )[[:alnum:] ](.*)[[:alnum:] ]',"http://2",$url);
$roopath=split("/",$rootpath);
$rootpath="http://".$roopath[2]."/";
//echo "这是根本d :"."n";
$nnn=count($roopath)-1;for($yu=3;$yu //var_dump($rootpath);
if(eregi('^..[/[:alnum:]]',$regs[1])){
//echo "这是../目录/ :"."n";
//$regs[1]="../xx/xxxxxx.xx";
// $rr=split("/",$regs[1]);
//for($oooi=1;$oooi $rrr=$regs[1];
// {$rrr.="/".$rr[$oooi];
$rrr = eregi_replace("^[.][.][/]",'',$rrr); /
永久地址:
转载随意~请带上教程地址吧^^