最近的项目中由于需要调用腾讯的视频播放,也就是在内容编辑里边插入一段iframe的视频播放代码,CMSYOU找到有关Phpcms内容编辑器不支持iframe和javascript过滤的办法,在此分享给大家。
Phpcms V9默认发布修改文章的时候,会调用trim_script()函数过滤一些设定的“不安全”元素,比如frame、iframe、script、javascript,具体函数的位置:phpcms/libs/functions/global.func.php 149行:
/*** 转义 javascript 代码标记** @param $str* @return mixed*/function trim_script($str) {if(is_array($str)){foreach ($str as $key => $val){$str[$key] = trim_script($val);}}else{$str = preg_replace ( '/\<([\/]?)script([^\>]*?)\>/si', '<\\1script\\2>', $str );$str = preg_replace ( '/\<([\/]?)iframe([^\>]*?)\>/si', '<\\1iframe\\2>', $str );$str = preg_replace ( '/\<([\/]?)frame([^\>]*?)\>/si', '<\\1frame\\2>', $str );$str = str_replace ( 'javascript:', 'javascript:', $str );}return $str;}
修改为:
function trim_script($str) {if(is_array($str)){foreach ($str as $key => $val){$str[$key] = trim_script($val);}}else{$str = preg_replace ( '/\<([\/]?)script([^\>]*?)\>/si', '<\\1script\\2>', $str );$str = preg_replace ( '/\<([\/]?)frame([^\>]*?)\>/si', '<\\1frame\\2>', $str );$str = str_replace ( 'javascript:', 'javascript:', $str );}return $str;}
以上代码过滤了iframe,也就是把其中的【$str = preg_replace ( '/\<([\/]?)iframe([^\>]*?)\>/si', '<\\1iframe\\2>', $str );】去掉,如果希望编辑器里边可以插入JavaScript,也可以参照方法过滤javascript。
最后,欢迎大家收听CMSYOU官方微博,看完CMSYOU思优团队的文章有疑问,那就在下面留言探讨吧!
点击加载更多