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 相关文章推荐
PHP版自动生成文章摘要
Jul 23 PHP
php AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
Oct 12 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
Aug 12 PHP
php使用str_replace实现输入框回车替换br的方法
Nov 24 PHP
php生成html文件方法总结
Dec 01 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
如何判断php mysqli扩展类是否开启
Dec 24 PHP
php面向对象之反射功能与用法分析
Mar 29 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
May 14 PHP
PHP rmdir()函数的用法总结
Jul 02 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计算整个目录大小的方法
2015/06/01 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
jQuery 动态酷效果实现总结
2009/12/27 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
js中函数调用的两种常用方法使用介绍
2014/07/17 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
2020/12/19 Vue.js
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
python 列表降维的实例讲解
2018/06/28 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
flask框架单元测试原理与用法实例分析
2019/07/23 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
使用HTML5进行SVG矢量图形绘制的入门教程
2016/02/19 HTML / CSS
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
Supersmart英国:欧洲市场首批食品补充剂供应商之一
2018/05/05 全球购物
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
视光学专业毕业生推荐信
2013/10/28 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
人事部经理岗位职责
2014/03/07 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
Pytorch可视化的几种实现方法
2021/06/10 Python