在b2core框架和simple_html_dom.php文件里面都有一个load()函数
2017-04-30 00:00
441 查看
在simple_html_dom.php文件里面,有一个load()函数的定义。
注意到这里,上面的一个函数通过正则表达式去掉了<script></script>标签内部的函数。如果,我们要抓取内部的<script></script>内部的内容的时候,就不能再利用框架了。
对比,我们的系统框架b2core内部也有一个加载系统的文件或类的函数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]; }
相关文章推荐
- php simple_html_dom 一个iconv错误引起解析中断的问题,貌似内存溢出
- 公司大佬问到一个问题 为什么yii tp框架会把index.php文件放到网站的子目录里面 而不是放在根目录
- PHP - Smarty模板引擎 - Manual手册 - Chapter 7. Built-in Functions第7章 内建函数 - {config_load}用于从一个配置文件加载配置变量到模板中
- SQL Server 中创建一个函数(过滤某个字段值里面的html标签)
- CI框架里面PHPExcel的使用|导出数据到Excel文件
- 关于PHP-Zend framework2 框架 学习过程。 阅前须知: ZF2中的配置文件是可以静态文件配置来注册和通过相关函数动态注册。 1.EventManager(事件驱动),关于事件驱动,在ZF2相关资料没有详细说明,可以参考ANDROID的事件驱动,MFC的消息响应/事件驱动。
- PHP 通过DOM方式创建一个book.xml文件
- PHP Simple HTML DOM Parser的编码问题
- simple_html_dom.php 使用 乱码处理<作者:gaoming13>
- php解析html类库simple_html_dom
- CI框架源码阅读---------全局函数文件Common.php
- simple_html_dom.php 的使用
- PHP - Manual手册 - XL. Filesystem 文件系统函数 - is_dir判断给定文件名是否是一个目录
- 写5个不同的自己的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数。
- ajax实例 html页面中用js调用一个php文件
- PHP一个函数遍历文件夹下的所有文件并输出
- PHP 删除一个目录及目录下的所有文件的函数代码
- 数据采集利器-PHP用DOM方式处理HTML之《Simple HTML DOM》
- 转一个js类型判断函数,支持返回dom 元素的类型,像HTMLBody
- PHP 通过DOM方式创建一个book.xml文件