php 获取页面中指定内容的实现类

 更新时间:2014年01月23日 17:24:06   作者:  
本文为大家下使用php如何获取页面中的指定内容,而且以封装成类,需要的朋友可以参考下本文
功能:

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 curl发送请求实例方法

    php curl发送请求实例方法

    在本篇文章里小编给大家整理的是关于php curl发送请求详细教程以及相关知识点,需要的朋友们可以学习下。
    2019-08-08
  • PHP日期处理函数 整型日期格式

    PHP日期处理函数 整型日期格式

    我正打算用PHP编写一种帮助处理系统。我发现我必须知道处理完最后一位客户的问题后已经过去了多长时间?
    2011-01-01
  • APACHE的AcceptPathInfo指令使用介绍

    APACHE的AcceptPathInfo指令使用介绍

    从APACH2.0.30以上服务器中去掉了acceptpathinfo;如果需要的话需要在http.conf中添加AcceptPathInfo On这一条
    2013-01-01
  • PHP类中Static方法效率测试代码

    PHP类中Static方法效率测试代码

    因为有好几个项目等着做,又不是很急,再加上目前成型的那些框架多多少少用着总是有点不太如意,所以决定先自己写一个框架,然后再做项目。既然写框架,自然要经常做一些执行效率上的测试,今天做了一个static效率的测试。
    2010-10-10
  • PHP 网页过期时间的控制代码

    PHP 网页过期时间的控制代码

    有时我们需要控制主页之类的网页过期时间。但我们比如使用的是Chinacache的CDN,那要怎么样设计才能让他缓存我的内容.
    2009-06-06
  • php反弹shell实现代码

    php反弹shell实现代码

    遇到一个BT的网站,上传php文件成功之后,每访问一次,文件名就会随机改变一次,并且你访问当前文件如果点其他操作项,文件仍然会改名。
    2009-04-04
  • php 特殊字符处理函数

    php 特殊字符处理函数

    php防sql的注入.一般用到htmlspecialchars(),addslashes()等.不过还是对有些特殊字符不起作用.
    2008-09-09
  • 基于PHP Socket配置以及实例的详细介绍

    基于PHP Socket配置以及实例的详细介绍

    本篇文章是对PHP中Socket的配置以及实例进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP读取zip文件的方法示例

    PHP读取zip文件的方法示例

    这篇文章主要介绍了PHP读取zip文件的方法,结合实例形式分析了php针对zip文件的读取操作相关技巧,需要的朋友可以参考下
    2016-11-11
  • PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】

    PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】

    这篇文章主要介绍了PHP判断访客是否手机端(移动端浏览器)访问的方法,结合实例形式总结分析了php基于HTTP_X_WAP_PROFILE、HTTP_VIA、HTTP_USER_AGENT、HTTP_ACCEPT等4种方法判断访客类型的相关操作技巧,需要的朋友可以参考下
    2019-03-03

最新评论