文档章节

在b2core框架和simple_html_dom.php文件里面都有一个load()函数

FeanLau
 FeanLau
发布于 2017/04/30 10:47
字数 418
阅读 28
收藏 0
点赞 0
评论 0

在simple_html_dom.php文件里面,有一个load()函数的定义。

// load html from string
    function load($str, $lowercase=true, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
    {
        global $debugObject;

        // prepare
        $this->prepare($str, $lowercase, $stripRN, $defaultBRText, $defaultSpanText);
        // strip out comments
        $this->remove_noise("'<!--(.*?)-->'is");
        // strip out cdata
        $this->remove_noise("'<!\[CDATA\[(.*?)\]\]>'is", true);
        // Per sourceforge http://sourceforge.net/tracker/?func=detail&aid=2949097&group_id=218559&atid=1044037
        // Script tags removal now preceeds style tag removal.
        // strip out <script> tags
        $this->remove_noise("'<\s*script[^>]*[^/]>(.*?)<\s*/\s*script\s*>'is");
        $this->remove_noise("'<\s*script\s*>(.*?)<\s*/\s*script\s*>'is");
        // strip out <style> tags
        $this->remove_noise("'<\s*style[^>]*[^/]>(.*?)<\s*/\s*style\s*>'is");
        $this->remove_noise("'<\s*style\s*>(.*?)<\s*/\s*style\s*>'is");
        // strip out preformatted tags
        $this->remove_noise("'<\s*(?:code)[^>]*>(.*?)<\s*/\s*(?:code)\s*>'is");
        // strip out server side scripts
        $this->remove_noise("'(<\?)(.*?)(\?>)'s", true);
        // strip smarty scripts
        $this->remove_noise("'(\{\w)(.*?)(\})'s", true);

        // parsing
        while ($this->parse());
        // end
        $this->root->_[HDOM_INFO_END] = $this->cursor;
        $this->parse_charset();

        // make load function chainable
        return $this;

    }

注意到这里,上面的一个函数通过正则表达式去掉了<script></script>标签内部的函数。如果,我们要抓取内部的<script></script>内部的内容的时候,就不能再利用框架了。

对比,我们的系统框架b2core内部也有一个加载系统的文件或类的函数load()


/* B2 系统函数
* load($path,$instantiate) 可以动态载入对象,如:控制器、Model、库类等
* $path 是类文件相对 app 的地址
* $instantiate 为 False 时,仅引用文件,不实例化对象
* $instantiate 为数组时,数组内容会作为参数传递给对象
*/

function &load($path, $instantiate = TRUE )
{
  $param = FALSE;
  if(is_array($instantiate)) {
    $param = $instantiate;
    $instantiate = TRUE;
  }
  $file = explode('/',$path);
  $class_name = array_pop($file);
  $object_name = md5($path);

  static $objects = array();
  if (isset($objects[$object_name])) {
    if($objects[$object_name] == TRUE && $instantiate == TRUE) {
      if ($param == FALSE) return new $class_name();
      return new $class_name($param);
    }
    return $objects[$object_name];
  }
  require(APP.$path.'.php');
  if ($instantiate == FALSE) $objects[$object_name] = TRUE;
  elseif ($param) $objects[$object_name] = new $class_name($param);
  else  $objects[$object_name] = new $class_name();
  return $objects[$object_name];
}

 

© 著作权归作者所有

共有 人打赏支持
FeanLau
粉丝 3
博文 201
码字总数 129363
作品 0
浦东
程序员
关于PHP Simple HTML DOM Parser的异常处理

1.关于PHP Simple HTML DOM Parser加载大页面报错 加载大页面(比如:http://www.ebates.com/stores/all/index.htm)时,你调用其中的find的方法,报的错误信息是:Get Cssh back!PHP Fatal e...

bobshi ⋅ 2013/05/07 ⋅ 0

b2Core 2.0 发布

简单、快速、灵活的 php mvc 框架! 这是一个超轻量级的架构。它的核心代码不到300行。包括 3个核心类,6个核心函数。 它可以被用做学习 PHP MVC 架构的快速入门。 新版本更新如下: 1. 修复...

BatM3 ⋅ 2012/06/29 ⋅ 3

b2Core 1.6.3 发布,PHP的MVC框架

更新内容 1. 将分页等函数移出核心文件 2. 解决在 SAE 和 部分 php5 环境下 url 解析错误的问题 3. 修正一个 Notice 提示 4. 官方网站上线 http://b2core.b24.cn b2Core: 简单、快速、灵活的...

BatM3 ⋅ 2012/05/03 ⋅ 0

simple_html_dom.php类实现的原理?是正则实现的?还是dom实现的?

simplehtmldom.php类实现的原理?是用正则模拟实现dom操作吗??还是直接dom实现的?我看不太懂,求高手指点

michael_ ⋅ 2012/08/16 ⋅ 2

各级(省市县镇村)行政区域获取

在各种WEB应用中,会填写个人或者企业的地址信息,如下图所示,是京东上填写收货地址的页面截图。 小弟最近也碰到了类似的问题,需要得到所有省份,每个省份下属的市区,没事市区下属的县、乡...

r-ricky ⋅ 2015/06/24 ⋅ 2

b2Core 更新至 3.0,PHP 的 MVC 框架

b2Core 更新至 3.0 更新内容: 不在强制要求 Url 重写。 整合了一个简易用户系统,做网站和软件拿来简单配置即可使用。 前台采用 sina CDN 的 bootcss 代码托管转移到 oschina http://git.o...

BatM3 ⋅ 2013/08/13 ⋅ 4

php的类库simple_html_dom.php一个很严重的问题

simplehtmldom.php是php的一个开源的用于抓取页面并DOM化页面的类库 今天在用这个脚本有很严重的内存溢出问题,在运行结束之后DOM不会在对象中被清除.如果用循环来抓取就会吃光内存 刚开始使用...

fzxu_05 ⋅ 2014/04/20 ⋅ 2

羊驼!CMS 发布 1.5 版本

羊驼!CMS 发布 1.5 版本,改进记录: 修正添加下级页面时调用原型的上级页面数据丢失问题 调整 al_list() 函数生成 html 代码以适应新的模板 在模型模块中增加创建模板功能,可以自动创建和模...

BatM3 ⋅ 2012/03/18 ⋅ 12

php 的 mvc 框架--b2Core

简单、快速、灵活的 php mvc 框架! 这是一个超轻量级的架构。它的核心代码不到300行。包括 3个核心类,6个核心函数。 它可以被用做学习 PHP MVC 架构的快速入门。 特色 简单 快速 灵活 少写...

BatM3 ⋅ 2011/11/18 ⋅ 0

phpcms二次开发之base.php的桥梁作用

PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。 入口程序是在前期处理用户请求的引...

网菠萝果 ⋅ 2013/03/13 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周六乱弹 —— 假如你被熊困到树上

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》 《如果写不出好的和弦就该在洒满阳光的钢琴前一起吃布丁》- 谢...

小小编辑 ⋅ 29分钟前 ⋅ 2

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 今天 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部