php解析字符串里所有URL地址的方法


Posted in PHP onApril 03, 2015

本文实例讲述了php解析字符串里所有URL地址的方法。分享给大家供大家参考。具体如下:

<?php
// $html = the html on the page
// $current_url = the full url that the html came from
//(only needed for $repath)
// $repath = converts ../ and / and // urls to full valid urls
function pageLinks($html, $current_url = "", $repath = false){
  preg_match_all("/\<a.+?href=(\"|')(?!javascript:|#)(.+?)(\"|')/i", $html, $matches);
  $links = array();
  if(isset($matches[2])){
    $links = $matches[2];
  }
  if($repath && count($links) > 0 && strlen($current_url) > 0){
    $pathi   = pathinfo($current_url);
    $dir    = $pathi["dirname"];
    $base    = parse_url($current_url);
    $split_path = explode("/", $dir);
    $url    = "";
    foreach($links as $k => $link){
      if(preg_match("/^\.\./", $link)){
        $total = substr_count($link, "../");
        for($i = 0; $i < $total; $i++){
          array_pop($split_path);
        }
        $url = implode("/", $split_path) . "/" . str_replace("../", "", $link);
      }elseif(preg_match("/^\/\//", $link)){
        $url = $base["scheme"] . ":" . $link;
      }elseif(preg_match("/^\/|^.\//", $link)){
        $url = $base["scheme"] . "://" . $base["host"] . $link;
      }elseif(preg_match("/^[a-zA-Z0-9]/", $link)){
        if(preg_match("/^http/", $link)){
          $url = $link;
        }else{
          $url    = $dir . "/" . $link;
        }
      }
      $links[$k] = $url;
    }
  }
  return $links;
}
header("content-type: text/plain");
$url = "https://3water.com";
$html = file_get_contents($url);
// Gets links from the page:
print_r(pageLinks($html));
// Gets links from the page and formats them to a full valid url:
print_r(pageLinks($html, $url, true));

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
域名查询代码公布
Oct 09 PHP
请php正则走开
Mar 15 PHP
用PHP程序实现支持页面后退的两种方法
Jun 30 PHP
php结合飞信 免费天气预报短信
May 07 PHP
关于尾递归的使用详解
May 02 PHP
360通用php防护代码(使用操作详解)
Jun 18 PHP
thinkphp模板继承实例简述
Nov 26 PHP
php按单词截取字符串的方法
Apr 07 PHP
php获取远程文件的内容和大小
Nov 03 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
Nov 05 PHP
PHP+Ajax异步带进度条上传文件实例
Nov 01 PHP
Laravel框架模型的创建及模型对数据操作示例
May 07 PHP
php对文件进行hash运算的方法
Apr 03 #PHP
php计算给定时间之前的函数用法实例
Apr 03 #PHP
php实现的mongodb操作类实例
Apr 03 #PHP
PHP中判断文件存在使用is_file还是file_exists?
Apr 03 #PHP
php专用数组排序类ArraySortUtil用法实例
Apr 03 #PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 #PHP
PHP中返回引用类型的方法
Apr 03 #PHP
You might like
php PDO中文乱码解决办法
2009/07/20 PHP
PHP遍历数组的几种方法
2012/03/22 PHP
Chrome Web App开发小结
2014/09/04 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
PHP crc32()函数讲解
2019/02/14 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
flash javascript之间的通讯方法小结
2008/12/20 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
基于JavaScript实现弹出框效果
2016/02/19 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
[01:37]DOTA2超级联赛专访ChuaN 传奇般的电竞之路
2013/06/19 DOTA
python使用正则表达式分析网页中的图片并进行替换的方法
2015/03/26 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
浅析PyTorch中nn.Module的使用
2019/08/18 Python
Python新手学习装饰器
2020/06/04 Python
Python Flask异步发送邮件实现方法解析
2020/08/01 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
入党思想汇报
2014/01/05 职场文书
个人自我鉴定总结
2014/03/25 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
小学五年级学生评语
2014/04/22 职场文书
爱耳日活动总结
2014/04/30 职场文书
学雷锋志愿者活动方案
2014/08/21 职场文书
物流管理专业推荐信
2014/09/06 职场文书
雷锋电影观后感
2015/06/10 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS
Python pygame实现中国象棋单机版源码
2021/06/20 Python
Ajax实现异步加载数据
2021/11/17 Javascript
python 镜像环境搭建总结
2022/09/23 Python