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制作静态网站的模板框架(四)
Oct 09 PHP
最令PHP初学者们头痛的十四个问题
Jan 15 PHP
详解PHP显示MySQL数据的三种方法
Jun 05 PHP
js下函数般调用正则的方法附代码
Jun 22 PHP
php 数学运算验证码实现代码
Oct 11 PHP
php中url函数介绍及使用示例
Feb 13 PHP
PHP生成数组再传给js的方法
Aug 07 PHP
PHP return语句另类用法不止是在函数中
Sep 17 PHP
php版微信发红包接口用法示例
Sep 23 PHP
php成功操作redis cluster集群的实例教程
Jan 13 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
Jul 22 PHP
php数组指针函数功能及用法示例
Feb 11 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
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
php函数的常用方法及注意之处小结
2011/07/10 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
基于JQuery的访问WebService的代码(可访问Java[Xfire])
2010/11/19 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
写一个Vue Popup组件
2019/02/25 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
Python中字典和集合学习小结
2017/07/07 Python
Python分治法定义与应用实例详解
2017/07/28 Python
Tensorflow 查看变量的值方法
2018/06/14 Python
基于python实现聊天室程序
2018/07/27 Python
Python制作词云图代码实例
2019/09/09 Python
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
怎样写留学自荐信
2013/11/11 职场文书
大学毕业生自荐书怎么写?
2014/01/06 职场文书
中学教师请假制度
2014/02/03 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
2014年村委会工作总结
2014/11/24 职场文书
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang
人物搭配车车超萌联名预备中 【咒术迴战】 ⨯ 【天竺鼠车车】 展开合作
2022/04/11 日漫