国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

php正則替換處理HTML頁面的方法

2024-04-25 20:37:29
字體:
來源:轉載
供稿:網友

本文實例講述了php正則替換處理HTML頁面的方法。分享給大家供大家參考。具體如下:

<?php

if(!defined('BASEPATH')) exit('No direct script access allowed');

/**

* HTML替換處理類,考慮如下幾種替換

* 1. img src : '/<img(.+?)src=([/'/" ])?(.+?)([ >]+?)/i'

* 2. a href : '/<a(.+?)href=([/'/" ])?(.+?)([ >]+?)/i'

* 3. ifram.src : '/<iframe(.+?)src=([/'/" ])?(.+?)([ >]+?)/i'

* 4. frame src : '/<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 = '/<img(.+?)src=([/'/" ])?(.+?)([ >]+?)/i';

$content = preg_replace_callback( $pattern, array($this, 'image_replace') , $content );

$pattern = '/<a(.+?)href=([/'/" ])?(.+?)([ >]+?)/i';

$content = preg_replace_callback( $pattern, array($this, 'html_replace') , $content );

$pattern = '/<iframe(.+?)src=([/'/" ])?(.+?)([ >]+?)/i';

$content = preg_replace_callback( $pattern, array($this, 'iframe_replace') , $content );

$pattern = '/<frame(.+?)src=([/'/" ])?(.+?)([ >]+?)/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 "<img".$matches[1]."src=".$matches[2].$this->CI->config->item("base_url")."cdms/".$this->moudle."/readpic/$image_id?pid=".$this->projectid .$matches[2]. $matches[4];

} else {

return "<img".$matches[1]."src=".$matches[2].$this->CI->config->item("base_url")."cdms/".$this->moudle."/picfile/$image_id?pid=".$this->projectid .$matches[2]. $matches[4];

}

} else {

return "<img".$matches[1]."src=".$matches[2].$matches[3].$matches[2].$matches[4];

}

}

private function html_replace( $matches ) {

if(count($matches) < 4) return '';

if( empty($matches[3]) ) return '';

//如果href的鏈接($matches[3])以http或www或mailto開始,則不進行處理

//if(preg_match('/^[http|www|mailto](.+?)/i',$matches[3]))

// return "<a".$matches[1]."href=".$matches[2].$matches[3].$matches[4];

$matches[3] = rtrim($matches[3],'/'"/');

//處理錨點

if(substr_count($matches[3],'#')>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 "<a".$matches[1]."href=".$matches[2].$this->CI->config->item("base_url")."cdms/".$this->moudle."/readfile/$txtfile_id?pid=".$this->projectid .$matches[2].$matches[4];

} else {

return "<a".$matches[1]."href=".$matches[2].$this->CI->config->item("base_url")."cdms/".$this->moudle."/txtfile/$txtfile_id?pid=".$this->projectid .$matches[2].$matches[4];

}

} else {

return "<a".$matches[1]."href=".$matches[2].$matches[3].$matches[2].$matches[4];

}

}

private function iframe_replace( $matches ) {

if(count($matches) < 4) return '';

if( empty($matches[3]) ) return '';

$matches[3] = rtrim($matches[3],'/'"/');

//處理錨點

if(substr_count($matches[3],'#')>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 "<iframe".$matches[1]."src=".$matches[2].$this->CI->config->item("base_url")."cdms/".$this->moudle."/readfile/$txtfile_id?pid=".$this->projectid .$matches[2].$matches[4];

} else {

return "<iframe".$matches[1]."src=".$matches[2].$this->CI->config->item("base_url")."cdms/".$this->moudle."/txtfile/$txtfile_id?pid=".$this->projectid .$matches[2].$matches[4];

}

} else {

return "<iframe".$matches[1]."src=".$matches[2].$matches[3].$matches[2].$matches[4];

}

}

private function frame_replace( $matches ) {

if(count($matches) < 4) return '';

if( empty($matches[3]) ) return '';

$matches[3] = rtrim($matches[3],'/'"/');

//處理錨點

if(substr_count($matches[3],'#')>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 "<frame".$matches[1]."src=".$matches[2].$this->CI->config->item("base_url")."cdms/".$this->moudle."/readfile/$txtfile_id?pid=".$this->projectid.$matches[2].$matches[4];

} else {

return "<frame".$matches[1]."src=".$matches[2].$this->CI->config->item("base_url")."cdms/".$this->moudle."/txtfile/$txtfile_id?pid=".$this->projectid.$matches[2].$matches[4];

}

} else {

return "<frame".$matches[1]."src=".$matches[2].$matches[3].$matches[2].$matches[4];

}

}

private function js_replace( $matches ){

if(count($matches) < 4) return '';

if( empty($matches[3]) ) return '';

//處理鏈接

$arr_html = split(',',$matches[3]);

$href = $arr_html[0];

$other = '';

for($i=0; $i<count($arr_html); $i++)

$other = $arr_html[$i].", ";

$other = rtrim($other,"/, ");

$href =rtrim($href,'/'/"');

//處理錨點

if(substr_count($href,'#')>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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浦江县| 封开县| 兴仁县| 汾西县| 乐亭县| 梁平县| 溧阳市| 新沂市| 临澧县| 廊坊市| 忻城县| 朝阳市| 章丘市| 苍梧县| 昭通市| 贵州省| 嵩明县| 丰顺县| 额尔古纳市| 英山县| 仪征市| 朝阳区| 调兵山市| 淮阳县| 高安市| 黎城县| 墨玉县| 元朗区| 五寨县| 漳浦县| 衢州市| 宁安市| 贡觉县| 仁布县| 古田县| 武清区| 台山市| 丹凤县| 保亭| 炉霍县| 沛县|