php 获取页面中指定内容的实现类


Posted in PHP onJanuary 23, 2014

功能:

1.获取内容中的url,email,image。

2.替换内容中的url,email,image。

url:<a href="url">xxx</a>

email:admin@admin.com

image:<img src="image">

Grep.class.php

<?php 
/** grep class 
* Date: 2013-06-15 
* Author: fdipzone 
* Ver: 1.0 
* 
* Func: 
* 
* set: 设置内容 
* get: 返回指定的内容 
* replace: 返回替换后的内容 
* get_pattern 根据type返回pattern 
*/ class Grep{ // class start 
private $_pattern = array( 
'url' => '/<a.*?href="((http(s)?:\/\/).*?)".*?/si', 
'email' => '/([\w\-\.]+@[\w\-\.]+(\.\w+))/', 
'image' => '/<img.*?src=\"(http:\/\/.+\.(jpg|jpeg|gif|bmp|png))\">/i' 
); 
private $_content = ''; // 源内容 

/* ?置搜?さ?热 
* @param String $content 
*/ 
public function set($content=''){ 
$this->_content = $content; 
} 

/* 获取指定内容 
* @param String $type 
* @param int $unique 0:all 1:unique 
* @return Array 
*/ 
public function get($type='', $unique=0){ 
$type = strtolower($type); 
if($this->_content=='' || !in_array($type, array_keys($this->_pattern))){ 
return array(); 
} 
$pattern = $this->get_pattern($type); // 获取pattern 
preg_match_all($pattern, $this->_content, $matches); 
return isset($matches[1])? ( $unique==0? $matches[1] : array_unique($matches[1]) ) : array(); 
} 

/* 获取替换后的内容 
* @param String $type 
* @param String $callback 
* @return String 
*/ 
public function replace($type='', $callback=''){ 
$type = strtolower($type); 
if($this->_content=='' || !in_array($type, array_keys($this->_pattern)) || $callback==''){ 
return $this->_content; 
} 
$pattern = $this->get_pattern($type); 
return preg_replace_callback($pattern, $callback, $this->_content); 
} 

/* 根据type获取pattern 
* @param String $type 
* @return String 
*/ 
private function get_pattern($type){ 
return $this->_pattern[$type]; 
} 
} // class end 
?>

Demo
<?php 
header('content-type:text/htm;charset=utf8'); require('Grep.class.php'); 
$content = file_get_contents('http://www.test.com/'); 
$obj = new Grep(); 
$obj->set($content); 
$url = $obj->get('url', 0); 
$email = $obj->get('email', 1); 
$image = $obj->get('image', 1); 
print_r($url); 
print_r($email); 
print_r($image); 
$url_new = $obj->replace('url', 'replace_url'); 
echo $url_new; 
function replace_url($matches){ 
return isset($matches[1])? '[url]'.$matches[1].'[/url]' : ''; 
} 
?>
PHP 相关文章推荐
基于文本的留言簿
Oct 09 PHP
php smarty 二级分类代码和模版循环例子
Jun 16 PHP
改写函数实现PHP二维/三维数组转字符串
Sep 13 PHP
回帖脱衣服的图片实现代码
Feb 15 PHP
PHP生成短网址的3种方法代码实例
Jul 08 PHP
ThinkPHP中redirect用法分析
Dec 05 PHP
php递归法读取目录及文件的方法
Jan 30 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
Mar 13 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
May 08 PHP
php5对象复制、clone、浅复制与深复制实例详解
Aug 14 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
Jan 23 PHP
imagettftext() 失效,不起作用
Mar 09 PHP
php 根据url自动生成缩略图并处理高并发问题
Jan 23 #PHP
php 字符串压缩方法比较示例
Jan 23 #PHP
php 生成短网址原理及代码
Jan 23 #PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 #PHP
php弹出对话框实现重定向代码
Jan 23 #PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
Jan 22 #PHP
简单的php缓存类分享     php缓存机制
Jan 22 #PHP
You might like
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
php数组对百万数据进行排除重复数据的实现代码
2010/06/08 PHP
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
javascript中length属性的探索
2011/07/31 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
对numpy中轴与维度的理解
2018/04/18 Python
python os.listdir按文件存取时间顺序列出目录的实例
2018/10/21 Python
python3实现多线程聊天室
2018/12/12 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
python读取xml文件方法解析
2020/08/04 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
《晏子使楚》教学反思
2014/02/08 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
2015年宣传部个人工作总结
2015/05/14 职场文书
天气温馨提示语
2015/07/14 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL
JS高级程序设计之class继承重点详解
2022/07/07 Javascript