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 04 PHP
PHP实现变色验证码实例
Jan 06 PHP
PHP中的按位与和按位或操作示例
Jan 27 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
Apr 05 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
PHP中的traits实现代码复用使用实例
May 13 PHP
PHP实现在线阅读PDF文件的方法
Jun 23 PHP
yii权限控制的方法(三种方法)
Dec 28 PHP
joomla实现注册用户添加新字段的方法
May 05 PHP
PHP的Json中文处理解决方案
Sep 29 PHP
PHP实现发送微博消息功能完整示例
Dec 04 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 ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
php去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
2014/11/12 PHP
thinkphp3.2.3 分页代码分享
2016/07/28 PHP
Some tips of wmi scripting in jscript (1)
2007/04/03 Javascript
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
javascript真的不难-回顾一下基础知识
2013/01/15 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
VC调用javascript的几种方法(推荐)
2016/08/09 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
JS中如何轻松遍历对象属性的方式总结
2019/08/06 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
2019/09/01 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
用Python进行基础的函数式编程的教程
2015/03/31 Python
为Python程序添加图形化界面的教程
2015/04/29 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
2019/08/07 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
django多种支付、并发订单处理实例代码
2019/12/13 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
毕业生求职推荐信
2013/11/04 职场文书
项目计划书范文
2014/01/09 职场文书
自行车广告词大全
2014/03/21 职场文书
环保标语口号
2014/06/13 职场文书
环境科学专业求职信
2014/08/04 职场文书
现实表现证明材料
2015/06/19 职场文书
小学班长竞选稿
2015/11/20 职场文书
Python进行区间取值案例讲解
2021/08/02 Python