千家信息网

php如何使用正则替换处理HTML页面

发表于:2024-09-23 作者:千家信息网编辑
千家信息网最后更新 2024年09月23日,这篇文章主要为大家展示了"php如何使用正则替换处理HTML页面",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"php如何使用正则替换处理HTML页面"这篇
千家信息网最后更新 2024年09月23日php如何使用正则替换处理HTML页面

这篇文章主要为大家展示了"php如何使用正则替换处理HTML页面",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"php如何使用正则替换处理HTML页面"这篇文章吧。

具体如下:

]+?)/i' * 2. a href : '/]+?)/i' * 3. ifram.src : '/]+?)/i' * 4. frame src : '/]+?)/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 = '/]+?)/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) < 4) return '';  if( empty($matches[3]) ) return '';  $matches[3] = rtrim($matches[3],'\'"/');  //获取图片的id  $parent_dir_num = substr_count( $matches[3], '../');  $relative_dirname = $this->relative_dirname;  for($i=0; $i<$parent_dir_num; $i++) {  $relative_dirname = substr( $relative_dirname, 0, strrpos($relative_dirname,"/") );  }  $relativepath = rtrim($relative_dirname,'/') . '/'.ltrim($matches[3],'./');  $image_id = $this->CI->model->get_id_by_path_and_project($relativepath,$this->projectid);  //输出  if( !empty($image_id) ) {  if($this->moudle == 'dresult') {   return "CI->config->item("base_url")."cdms/".$this->moudle."/readpic/$image_id?pid=".$this->projectid .$matches[2]. $matches[4];  } else {   return "CI->config->item("base_url")."cdms/".$this->moudle."/picfile/$image_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; $i<$parent_dir_num; $i++) {  $relative_dirname = substr( $relative_dirname, 0, strrpos($relative_dirname,"/") );  }  $relativepath = rtrim($relative_dirname,'/') . '/'.ltrim($matches[3],'./');  $txtfile_id = $this->CI->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; $i<$parent_dir_num; $i++) {  $relative_dirname = substr( $relative_dirname, 0, strrpos($relative_dirname,"/") );  }  $relativepath = rtrim($relative_dirname,'/') . '/'.ltrim($matches[3],'./');  $txtfile_id = $this->CI->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; $i<$parent_dir_num; $i++) {  $relative_dirname = substr( $relative_dirname, 0, strrpos($relative_dirname,"/") );  }  $relativepath = rtrim($relative_dirname,'/') . '/'.ltrim($matches[3],'./');  $txtfile_id = $this->CI->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; $i<$parent_dir_num; $i++) {  $relative_dirname = substr( $relative_dirname, 0, strrpos($relative_dirname,"/") );  }  $relativepath = rtrim($relative_dirname,'/') . '/'.ltrim($href,'./');  $txtfile_id = $this->CI->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) < 5) return '';  if( empty($matches[4]) ) return '';    $matches[4] = rtrim($matches[4],'\'"/');  //获取图片的id  $parent_dir_num = substr_count( $matches[4], '../');  $relative_dirname = $this->relative_dirname;  for($i=0; $i<$parent_dir_num; $i++) {  $relative_dirname = substr( $relative_dirname, 0, strrpos($relative_dirname,"/") );  }  $relativepath = rtrim($relative_dirname,'/') . '/'.ltrim($matches[4],'./');  $image_id = $this->CI->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 */

以上是"php如何使用正则替换处理HTML页面"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0