> php教程 > php手册 > PHP取网页所有链接实现程序代码总结

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

WBOY
풀어 주다: 2016-05-25 16:55:07
원래의
1540명이 탐색했습니다.
本文章来给大家介绍在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函数来获取

 代码如下 复制代码

/*
 * 使用curl 采集www.phprm.com下的所有链接。 
 */
include_once('function.php');

$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("

此页面的所有链接为:

%s
로그인 후 복사
n", 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); /



永久地址:

转载随意~请带上教程地址吧^^

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿