php中实现网页的链接,PHP取网页所有链接实现程序代码总结

本文章来给大家介绍在PHP取网页所有链接实现程序代码,有直接利用正则的也有用在采集中过滤所有连接地址,有需要了解的朋友可参考。

我们核心代码就是正则表达试了

 代码如下复制代码

function get_all_url($code){

preg_match_all(‘/"' ] )["|']?s*[^>]*>([^>] )/i’,$code,$arr);

return array(‘name’=>$arr[2],’url’=>$arr[1]);

}

上面只是简单的下面看全例

 代码如下复制代码

$url ='http://www.jquerycn.cn';

$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函数来获取

 代码如下复制代码

/*

* 使用curl 采集www.jquerycn.cn下的所有链接。

*/

include_once('function.php');

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://www.jquerycn.cn/');

// 只需返回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.jquerycn.cn/';

if (is_array($linkarr)) {

foreach ($linkarr as $k => $v) {

$linkresult[$k] = _expandlinks($v, $host);

}

}

printf("

此页面的所有链接为:

%s
n", var_export($linkresult , true));

?>

获取所有网址,但只有不重复的数据

 代码如下复制代码

$e=clinchgeturl("http://im286.com/forumdisplay.php?fid=1");

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); /

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值