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编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
php preg_replace替换实例讲解
Nov 04 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
Dec 25 PHP
PHP屏蔽过滤指定关键字的方法
Nov 03 PHP
PHP中Http协议post请求参数
Nov 02 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
Dec 31 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
Thinkphp 5.0实现微信企业付款到零钱
Sep 30 PHP
laravel框架实现后台登录、退出功能示例
Oct 31 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
Apr 07 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
合作指挥官:孟斯克
2020/03/16 星际争霸
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
thinkphp的c方法使用示例
2014/02/24 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
JS解密入门之凭直觉解
2008/06/25 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
javascript实现数独解法
2015/03/14 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
浅谈jQuery中setInterval()方法
2015/07/07 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
2017/07/13 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
Swiper自定义分页器使用详解
2017/12/28 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
python 经典数字滤波实例
2019/12/16 Python
Python版中国省市经纬度
2020/02/11 Python
安全检查验收制度
2014/01/12 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
教师党员个人总结
2015/02/10 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS