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 相关文章推荐
apache+mysql+php+ssl服务器之完全安装攻略
Sep 05 PHP
第四节--构造函数和析构函数
Nov 16 PHP
实例(Smarty+FCKeditor新闻系统)
Jan 02 PHP
Gregarius中文日期格式问题解决办法
Apr 22 PHP
使ecshop模板中可引用常量的实现方法
Jun 02 PHP
php设计模式 Command(命令模式)
Jun 26 PHP
PHP Error与Logging函数的深入理解
Jun 03 PHP
php设计模式之命令模式使用示例
Mar 02 PHP
Smarty中常用变量操作符汇总
Oct 27 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
php简单定时执行任务的实现方法
Feb 23 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 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获取地址栏信息的代码
2008/10/08 PHP
php流量统计功能的实现代码
2012/09/29 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
php实现上传图片文件代码
2015/07/19 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
JavaScript 页面编码与浏览器类型判断代码
2010/06/03 Javascript
添加JavaScript重载函数的辅助方法2
2010/07/04 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
Vue之Watcher源码解析(1)
2017/07/19 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
使用vue实现各类弹出框组件
2019/07/03 Javascript
vue中使用element组件时事件想要传递其他参数的问题
2019/09/18 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
Python3.6实现连接mysql或mariadb的方法分析
2018/05/18 Python
python 堆和优先队列的使用详解
2019/03/05 Python
Python创建或生成列表的操作方法
2019/06/19 Python
使用Python实现画一个中国地图
2019/11/23 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
您的网上新华书店:文轩网
2016/08/24 全球购物
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
工程概预算专业毕业生求职信
2013/10/04 职场文书
关于礼仪的演讲稿
2014/01/04 职场文书
办公室副主任职责范本
2014/03/08 职场文书
小学优秀辅导员事迹材料
2014/05/11 职场文书
2015年资料员工作总结
2015/04/25 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
分享7个 Python 实战项目练习
2022/03/03 Python