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 相关文章推荐
用PHP实现WEB动态网页静态
Oct 09 PHP
基于PHP选项与信息函数的使用详解
May 10 PHP
Codeigniter注册登录代码示例
Jun 12 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
Feb 10 PHP
php带抄送和密件抄送的邮件发送方法
Mar 20 PHP
利用“多说”制作留言板、评论系统
Jul 14 PHP
php计算title标题相似比的方法
Jul 29 PHP
PHP MYSQL实现登陆和模糊查询两大功能
Feb 05 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
Sep 19 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
php7安装mongoDB扩展的方法分析
Aug 02 PHP
php优化查询foreach代码实例讲解
Mar 24 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
escape unescape的php下的实现方法
2007/04/27 PHP
php Static关键字实用方法
2010/06/04 PHP
图解找出PHP配置文件php.ini的路径的方法
2014/08/20 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
详解ES6 Symbol 的用途
2018/10/14 Javascript
vue实现登录拦截
2020/06/29 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
如何在Python中编写并发程序
2016/02/27 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
django 单表操作实例详解
2019/07/30 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
python如何调用java类
2020/07/05 Python
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
校园联欢晚会主持词
2014/03/17 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
《岳阳楼记》原文、译文赏析
2019/09/10 职场文书
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
Redis Cluster集群动态扩容的实现
2021/07/15 Redis
Java Socket实现多人聊天系统
2021/07/15 Java/Android
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers