找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 433|回复: 0
打印 上一主题 下一主题

php正则替换处理HTML页面的方法

[复制链接]

2500

主题

2513

帖子

7520

积分

论坛元老

Rank: 8Rank: 8

积分
7520
跳转到指定楼层
楼主
发表于 2018-2-14 05:45:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了php正则替换处理HTML页面的方法。分享给大家供大家参考。具体如下:
]+?)/i'
* 5. js : '/window.open([( ]+?)([\'" ]+?)(.+?)([ )+?])/i'
* 6. css : '/background(.+?)url([( ])([\'" ]+?)(.+?)([ )+?])/i'
*/
class Myreplace {
private $moudle_array = array('udata','tdata','tresult','dresult');
private $content;
private $relative_dirname;
private $projectid;
private $moudle;
function __construct() {
  $this->CI = &get_instance ();
}
/**
  * 替换
  * @param string $content HTML内容
  * @param string $relative 相对路径
  * @param int $projectid 项目id
  * @moudle string $moudle 模板标识: udata,tdata,tresult,dresult
  */
public function my_replace($content,$relative,$projectid,$moudle) {
  $this->content = $content;
  $this->relative_dirname = $relative;
  $this->projectid = $projectid;
  if(in_array(strtolower($moudle),$this->moudle_array))
  $this->moudle = $moudle;
  else exit;
  switch($this->moudle) {
  case 'udata':
   $this->CI->load->model('mupload_data','model');
   break;
  case 'tdata':
   $this->CI->load->model('taskdata','model');
   break;
  case 'tresult':
   $this->CI->load->model('taskresult','model');
   break;
  case 'dresult':
   $this->CI->load->model('dmsresult','model');
   break;
  default:
   break;
  }
  $pattern = '/
[img][/img]
]+?)/i';
  $content = preg_replace_callback( $pattern, array($this, 'image_replace') , $content );
  $pattern = '/]+?)/i';
  $content = preg_replace_callback( $pattern, array($this, 'html_replace') , $content );
  $pattern = '/]+?)/i';
  $content = preg_replace_callback( $pattern, array($this, 'iframe_replace') , $content );
  $pattern = '/]+?)/i';
  $content = preg_replace_callback( $pattern, array($this, 'frame_replace'), $content );
  $pattern = '/window.open([( ]+?)([\'" ]+?)(.+?)([ )]+?)/i';
  $content = preg_replace_callback( $pattern, array($this, 'js_replace'), $content );
  $pattern = '/background(.+?)url([( ])([\'" ]+?)(.+?)([ )+?])/i';
  $content = preg_replace_callback( $pattern, array($this, 'css_replace'), $content);
  return $content;
}
private function image_replace($matches) {
  if(count($matches) relative_dirname;
  for($i=0; $iCI->model->get_id_by_path_and_project($relativepath,$this->projectid);
  //输出
  if( !empty($image_id) ) {
  if($this->moudle == 'dresult') {
   return "
[img].$matches[2].$this->CI->config->item([/img]
moudle."/readpic/$image_id?pid=".$this->projectid .$matches[2]. $matches[4];
  } else {
   return "
[img].$matches[2].$this->CI->config->item([/img]
moudle."/picfile/$image_id?pid=".$this->projectid .$matches[2]. $matches[4];
  }
  } else {
  return "
[img][/img]
0)
  $matches[3] = substr($matches[3],0,strrpos($matches[3],'#'));
  //获取html的id
  $parent_dir_num = substr_count( $matches[3], '../');
  $relative_dirname = $this->relative_dirname;
  for($i=0; $iCI->model->get_id_by_path_and_project($relativepath,$this->projectid);
  //输出
  if( !empty($txtfile_id ) ) {
  if($this->moudle == 'dresult') {
   return "CI->config->item("base_url")."cdms/".$this->moudle."/readfile/$txtfile_id?pid=".$this->projectid .$matches[2].$matches[4];
  } else {
   return "CI->config->item("base_url")."cdms/".$this->moudle."/txtfile/$txtfile_id?pid=".$this->projectid .$matches[2].$matches[4];
  }
  } else {
  return "0)
  $matches[3] = substr($matches[3],0,strrpos($matches[3],'#'));
  //获取html的id
  $parent_dir_num = substr_count( $matches[3], '../');
  $relative_dirname = $this->relative_dirname;
  for($i=0; $iCI->model->get_id_by_path_and_project($relativepath,$this->projectid);
  //输出
  if( !empty($txtfile_id ) ) {
  if($this->moudle == 'dresult') {
   return "CI->config->item("base_url")."cdms/".$this->moudle."/readfile/$txtfile_id?pid=".$this->projectid .$matches[2].$matches[4];
  } else {
   return "CI->config->item("base_url")."cdms/".$this->moudle."/txtfile/$txtfile_id?pid=".$this->projectid .$matches[2].$matches[4];
  }
  } else {
  return "0)
  $matches[3] = substr($matches[3],0,strrpos($matches[3],'#'));
  //获取html的id
  $parent_dir_num = substr_count( $matches[3], '../');
  $relative_dirname = $this->relative_dirname;
  for($i=0; $iCI->model->get_id_by_path_and_project($relativepath,$this->projectid);
  //输出
  if( !empty($txtfile_id ) ) {
  if($this->moudle == 'dresult') {
   return "CI->config->item("base_url")."cdms/".$this->moudle."/readfile/$txtfile_id?pid=".$this->projectid.$matches[2].$matches[4];
  } else {
   return "CI->config->item("base_url")."cdms/".$this->moudle."/txtfile/$txtfile_id?pid=".$this->projectid.$matches[2].$matches[4];
  }
  } else {
  return "0)
  return "window.open".$matches[1].$matches[2].$matches[3].$matches[4];;
  //获取html的id
  $parent_dir_num = substr_count( $href, '../');
  $relative_dirname = $this->relative_dirname;
  for($i=0; $iCI->model->get_id_by_path_and_project($relativepath,$this->projectid);
  //输出
  if( !empty($txtfile_id ) ) {
  if($this->moudle == 'dresult') {
   return "window.open".$matches[1].$matches[2].$this->CI->config->item("base_url")."cdms/".$this->moudle."/readfile/$txtfile_id?pid=".$this->projectid.$matches[2].','.$other.$matches[4];
  } else {
   return "window.open".$matches[1].$matches[2].$this->CI->config->item("base_url")."cdms/".$this->moudle."/txtfile/$txtfile_id?pid=".$this->projectid.$matches[2].','.$other.$matches[4];
  }
  } else {
  return "window.open".$matches[1].$matches[2].$matches[3].$matches[4];
  }
}
private function css_replace( $matches ) {
  if(count($matches) relative_dirname;
  for($i=0; $iCI->model->get_id_by_path_and_project($relativepath,$this->projectid);
  //输出
  if( !empty($image_id) ) {
  if($this->moudle == 'dresult') {
   return "background".$matches[1]."url".$matches[2].$matches[3].$this->CI->config->item("base_url")."cdms/".$this->moudle."/readpic/$image_id?pid=".$this->projectid .$matches[3]. $matches[5];
  } else {
   return "background".$matches[1]."url".$matches[2].$matches[3].$this->CI->config->item("base_url")."cdms/".$this->moudle."/picfile/$image_id?pid=".$this->projectid .$matches[3]. $matches[5];
  }
  } else {
  return "background".$matches[1]."url".$matches[2].$matches[3].$matches[4].$matches[3].$matches[5];
  }
}
}
/* End of Myreplace.php */
/* Location: /application/libraries/Myreplace.php */
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript[/url]
正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg
希望本文所述对大家的php程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • PHP html标签正则替换并可自定义正则规则
  • PHP 字符串正则替换函数preg_replace使用说明
  • 如何在PHP中使用正则表达式进行查找替换
  • php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
  • PHP preg_replace() 正则替换所有符合条件的字符串
  • PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
  • PHP正则替换函数preg_replace和preg_replace_callback使用总结
  • php中正则替换函数ereg_replace用法实例
  • php正则替换变量指定字符的方法
  • PHP实现通过正则表达式替换回调的内容标签
  • 详解PHP正则表达式替换实现(PHP preg_replace,PHP preg_replace)
  • php中preg_replace正则替换用法分析【一次替换多个值】
  • PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端