文档章节

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

FeanLau
 FeanLau
发布于 2017/04/30 10:47
字数 418
阅读 29
收藏 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
博文 219
码字总数 117077
作品 0
浦东
程序员
私信 提问
b2Core 更新至 3.0,PHP 的 MVC 框架

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

BatM3
2013/08/13
1K
4
b2Core 1.6.3 发布,PHP的MVC框架

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

BatM3
2012/05/03
572
0
羊驼!CMS 发布 1.5 版本

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

BatM3
2012/03/18
1K
12
羊驼 3.7 企业版(仿阿里巴巴单企业界面)发布

http://code.google.com/p/b2core/downloa … n=2&q= 羊驼 3.7 做了大量更新, 主要有: 1. 修改主要数据存储格式为 json 2. 修改模板调用为 文件模式 3. 增加标签、栏目功能 4. 修改管理后台...

BatM3
2012/06/24
2.7K
2
从羊驼 2.x 升级到 3.x 脚本

关于羊驼 http://www.oschina.net/p/alpaca 下载升级脚本 upgrade.php http://code.google.com/p/b2core/downloa … akechanges 升级方法: 0. 备份数据和文件 1. 用3.x 的文件覆盖 2.x 文件...

BatM3
2012/04/25
663
3

没有更多内容

加载失败,请刷新页面

加载更多

windows下让 jar 在后台运行的办法

windows下 运行 java jar 不出现 命令行 窗口 新建一个披处理 run.bat,内容如下 @echo off start javaw -jar xx.jar exit 双击运行即可。...

glen_xu
15分钟前
1
0
jdk1.8 lambda stream 指定的对象属性进行去重

原因:因为Stream提供的distinct()方法只能去除重复的对象,无法根据指定的对象属性进行去重,可以应付简单场景。 解决方案: //去重,共同信息保存到bizPledgeSupplierVOs里bizPledgeSupp...

INSISTQIAO
17分钟前
0
0
vue nextTick深入理解---vue性能优化、DOM更新时机、事件循环机制

定义[nextTick、事件循环] nextTick的由来: 由于vue的数据驱动视图更新是异步的,即修改数据的当下,视图不会立即更新,而是等同一事件循环中的所有数据变化完成之后再统一进行视图更新。...

JamesView
25分钟前
1
0
常用汉字编码

GB2312 仅包含大部分的常用简体汉字,但已经不能适应现在的需要; GB13000 由于GB2312的局限性,国家标准化委员会制定了GB13000编码; 但由于当时的硬件和软件都已经支持了GB2312,而GB13000...

晨猫
27分钟前
1
0
纳尼?我的Gradle build编译只要1s

https://juejin.im/post/5c00ec39e51d4555ec0394f6

SuShine
28分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部