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超级全局变量
Jan 26 PHP
Fatal error: Call to undefined function curl_init()解决方法
Apr 09 PHP
ajax+php打造进度条代码[readyState各状态说明]
Apr 12 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
Nov 29 PHP
php检测用户是否用手机(Mobile)访问网站的类
Jan 09 PHP
PHP goto语句简介和使用实例
Mar 11 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
Jun 26 PHP
laravel实现批量更新多条记录的方法示例
Oct 22 PHP
PHP中抽象类,接口功能、定义方法示例
Feb 26 PHP
laravel实现简单用户权限的示例代码
May 28 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
Feb 26 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
编写漂亮的代码 - 将后台程序与前端程序分开
2008/04/23 PHP
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
2016/11/23 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
Jquery动态添加及删除页面节点元素示例代码
2014/06/16 Javascript
Angularjs 基础入门
2014/12/26 Javascript
Javascript中判断对象是否为空
2015/06/10 Javascript
jquery.validate 自定义验证方法及validate相关参数
2016/01/18 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
javascript实现倒计时提示框
2021/03/02 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
Python从MP3文件获取id3的方法
2015/06/15 Python
Python 元类实例解析
2018/04/04 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
css3学习系列之移动属性详解
2017/07/04 HTML / CSS
英国在线药房:Express Chemist
2019/03/28 全球购物
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
服装仓管员岗位职责
2014/06/17 职场文书
出租房屋协议书
2014/09/14 职场文书
庆六一宣传标语
2014/10/08 职场文书
2014年接待工作总结
2014/11/26 职场文书
南京导游词
2015/02/03 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
python中redis包操作数据库的教程
2022/04/19 Python