php正则替换处理HTML页面的方法,php替换html页面
本文实例讲述了php正则替换处理HTML页面的方法。分享给大家供大家参考。具体如下:
<?php if(!defined('BASEPATH')) exit('No direct script access allowed'); /** * HTML替换处理类,考虑如下几种替换 * 1. img src : '/<img src="/static/imghwm/default1.png" data-src=".$matches[2].$this- alt="php正则替换处理HTML页面的方法,php替换html页面_PHP教程" >CI->config->item(" class="lazy" (.+?)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="/static/imghwm/default1.png" data-src=".$matches[2].$this- alt="php正则替换处理HTML页面的方法,php替换html页面_PHP教程" >CI->config->item(" class="lazy" (.+?)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 src="/static/imghwm/default1.png" data-src=".$matches[2].$this- alt="php正则替换处理HTML页面的方法,php替换html页面_PHP教程" >CI->config->item(" class="lazy" ".$matches[1]."base_url")."cdms/".$this->moudle."/readpic/$image_id?pid=".$this->projectid .$matches[2]. $matches[4]; } else { return "<img src="/static/imghwm/default1.png" data-src=".$matches[2].$this- alt="php正则替换处理HTML页面的方法,php替换html页面_PHP教程" >CI->config->item(" class="lazy" ".$matches[1]."base_url")."cdms/".$this->moudle."/picfile/$image_id?pid=".$this->projectid .$matches[2]. $matches[4]; } } else { return "<img src="/static/imghwm/default1.png" data-src=".$matches[2].$this- alt="php正则替换处理HTML页面的方法,php替换html页面_PHP教程" >CI->config->item(" class="lazy" ".$matches[1]."'; 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]."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程序设计有所帮助。

ThebestapproachforsendingemailsinPHPisusingthePHPMailerlibraryduetoitsreliability,featurerichness,andeaseofuse.PHPMailersupportsSMTP,providesdetailederrorhandling,allowssendingHTMLandplaintextemails,supportsattachments,andenhancessecurity.Foroptimalu

使用依赖注入(DI)的原因是它促进了代码的松耦合、可测试性和可维护性。1)使用构造函数注入依赖,2)避免使用服务定位器,3)利用依赖注入容器管理依赖,4)通过注入依赖提高测试性,5)避免过度注入依赖,6)考虑DI对性能的影响。

phperformancetuningiscialbecapeitenhancesspeedandeffice,whatevitalforwebapplications.1)cachingwithapcureduccureducesdatabaseloadprovesrovesponsemetimes.2)优化

ThebestpracticesforsendingemailssecurelyinPHPinclude:1)UsingsecureconfigurationswithSMTPandSTARTTLSencryption,2)Validatingandsanitizinginputstopreventinjectionattacks,3)EncryptingsensitivedatawithinemailsusingOpenSSL,4)Properlyhandlingemailheaderstoa

TOOPTIMIZEPHPAPPLICITIONSFORPERSTORANCE,USECACHING,数据库imization,opcodecaching和SererverConfiguration.1)InlumentCachingWithApcutCutoredSatfetchTimes.2)优化的atabasesbasesebasesebasesbasesbasesbaysbysbyIndexing,BeallancingAndWriteExing

依赖性注射inphpisadesignpatternthatenhancesFlexibility,可检验性和ManiaginabilybyByByByByByExternalDependencEctenceScoupling.itallowsforloosecoupling,EasiererTestingThroughMocking,andModularDesign,andModularDesign,butquirscarecarefulscarefullsstructoringDovairing voavoidOverOver-Inje

PHP性能优化可以通过以下步骤实现:1)在脚本顶部使用require_once或include_once减少文件加载次数;2)使用预处理语句和批处理减少数据库查询次数;3)配置OPcache进行opcode缓存;4)启用并配置PHP-FPM优化进程管理;5)使用CDN分发静态资源;6)使用Xdebug或Blackfire进行代码性能分析;7)选择高效的数据结构如数组;8)编写模块化代码以优化执行。

opcodecachingsimplovesphperforvesphpermance bycachingCompiledCode,reducingServerLoadAndResponSetimes.1)itstorescompiledphpcodeinmemory,bypassingparsingparsingparsingandcompiling.2)useopcachebachebachebachebachebachebachebysettingparametersinphametersinphp.ini,likeememeryconmorysmorysmeryplement.33)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。