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中,文件上传
Dec 06 PHP
php学习笔记 面向对象中[接口]与[多态性]的应用
Jun 16 PHP
基于php权限分配的实现代码
Apr 28 PHP
实现PHP多线程异步请求的3种方法
Jan 17 PHP
php实现singleton()单例模式实例
Nov 06 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
Sep 20 PHP
PHP在线调试执行的实现方法(附demo源码)
Apr 28 PHP
php使用CutyCapt实现网页截图保存的方法
Oct 03 PHP
Zend Framework框架实现类似Google搜索分页效果
Nov 25 PHP
PHP实现截取中文字符串不出现?号的解决方法
Dec 29 PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 14 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
PHP+javascript模拟Matrix画面
2006/10/09 PHP
PHP读MYSQL中文乱码的解决方法
2006/12/17 PHP
php set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
PHP判断函数是否被定义的方法
2019/06/21 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
bootstrap3使用bootstrap datetimepicker日期插件
2017/05/24 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
Angularjs实现控制器之间通信方式实例总结
2018/03/27 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
Eclipse + Python 的安装与配置流程
2013/03/05 Python
使用Python对Excel进行读写操作
2017/03/30 Python
python+OpenCV实现图像拼接
2020/03/05 Python
django项目中新增app的2种实现方法
2020/04/01 Python
Python json读写方式和字典相互转化
2020/04/18 Python
python基于openpyxl生成excel文件
2020/12/23 Python
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
美国网上书店:Barnes & Noble
2018/08/15 全球购物
Under Armour安德玛德国官网:美国高端运动科技品牌
2019/03/09 全球购物
介绍一下write命令
2012/09/24 面试题
学生实习介绍信
2014/01/15 职场文书
《囚绿记》教学反思
2014/03/01 职场文书
室内趣味活动方案
2014/08/24 职场文书
Spring中的@Transactional的工作原理
2022/06/05 Java/Android
5个实用的JavaScript新特性
2022/06/16 Javascript