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 14 PHP
php 空格,换行,跳格使用说明
Dec 18 PHP
深入理解PHP原理之异常机制
Aug 21 PHP
PHP开发不能违背的安全规则 过滤用户输入
May 01 PHP
PHP数组实例总结与说明
Aug 23 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
Oct 27 PHP
解析PHP多种序列化与反序列化的方法
Jun 06 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
Nov 03 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 PHP
Laravel框架搜索分页功能示例
Feb 01 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
Sep 10 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
Apr 13 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语法速查表
2007/01/02 PHP
php一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
合格的PHP程序员必备技能
2015/11/13 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
2018/12/24 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
VUE : vue-cli中去掉路由中的井号#操作
2020/09/04 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
python查询sqlite数据表的方法
2015/05/08 Python
详解Python3中yield生成器的用法
2015/08/20 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
Python实现excel转sqlite的方法
2017/07/17 Python
对Python中DataFrame按照行遍历的方法
2018/04/08 Python
python url 参数修改方法
2018/12/26 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
2019/06/25 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
彩色的翅膀教学反思
2014/04/25 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
主婚人致辞精选
2015/07/28 职场文书
高三毕业感言
2015/07/30 职场文书
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers