<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<?php

header('Content-Type: text/html; charset=utf-8');

function content_replace($show_content){
     $search = array(
        "'<script[^>]*?>.*?</script>'si", //过滤SCRIPT标记
        "'<iframe[^>]*?>.*?</iframe>'si", //过滤IFRAME标记
        "'<style[^>]*?>.*?</style>'si", //过滤STYLE标记
        "'<[\/\!]*span[^<>]*?>'si", //过滤SPAN标记
        "'<[\/\!]*strong[^<>]*?>'si", 
        "'<[\/\!]*span[^<]*?>'si", //过滤SPAN标记
        "'<[\/\!]*br[^<>]*?>'si", //过滤br标记
        "'<[\/\!]*img[^<>]*?>'si", //过滤img标记
        "'<[\/\!]*input[^<>]*?>'si", //过滤input标记
        "'<[\/\!]*font[^<>]*?>'si", //过滤FONT标记
        "'<[\/\!]*textarea[^<>]*?>'si", //过滤textarea标记
        "'<[\/\!]*form[^<>]*?>'si", //过滤form标记
        "'<[\/\!]*a[^<>]*?>'si", //过滤A标记,如果要过滤链接中的字,必须在过滤规则中写下。
        "'<[\/\!]*div[^<>]*?>'si", //过滤DIV标记
        "'<[\/\!]*tbody[^<>]*?>'si", //过滤TABLE标记
        "'<[\/\!]*table[^<>]*?>'si", //过滤TABLE标记
        "'<[\/\!]*tr[^<>]*?>'si", //过滤TABLE标记
        "'<[\/\!]*td[^<>]*?>'si", //过滤TABLE标记
        "'<[\/\!]*p[^<>]*?>'si", //过滤P标记
        "'<[\/\!]*o:p[^<>]*?>'si", //过滤o:p标记
        "'<[\?\!]*xml:[^<>]*?>'si", //过滤xml:标记
        "'<[\/\!]*select[^<>]*?>'si", //过滤select标记
        "'<[\/\!]*option[^<>]*?>'si", //过滤option标记
        "'<[\/\!]*v:[^<>]*?>'si", //过滤v:标记
        "'<[\/\!]*o:[^<>]*?>'si", //过滤o:标记
        "'target=([^\s>]*)|method=([^\s>]*)|action=([^\s>]*)|rows=([^\s>]*)|cols=([^\s>]*)|type=([^\s>]*)|href=([^\s>]*)|src=([^\s>]*)|id=([^\s>]*)|class=([^\s>]*)|name=([^\s>]*)|align=([^\s>]*)|cellpadding=([^\s>]*)|cellspacing=([^\s>]*)|border=([^\s>]*)|bordercolor=([^\s>]*)|background=([^\s>]*)|bgcolor=([^\s>]*)'si",
        "'&#(\d+);'e",
    );

    $replace = array("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "","", "", "", "", "chr(\\1)");
    $show_content = preg_replace($search, $replace, $show_content);
    $show_content = preg_replace("/style=['\"]*([^'\"]*)['\"]*/is", "", $show_content);
    $show_content = str_replace("\r\n", "", $show_content); //去除HTML中的换行符&nbsp;
    $show_content = str_replace("<span", "", $show_content); //去除HTML中的换行符&nbsp;
    $show_content = str_replace("&nbsp;", "", $show_content); //去除HTML中的换行符
    $show_content = str_replace(" ", "", $show_content); //去除HTML中的换行符
    return $show_content;   
}

//中文字符截取函数
function cnsubstr($string, $sublen ,$a=0){
    if ($string == ''){
        return false;
    }
    $string = changeYinhaoCom($string,'out');
    $sum = 0;
    for ($i = 0 ; $i < strlen($string) ; $i++){
        if(ord($string{$i}) > 127) {
            $s .= $string{$i} . $string{++$i} . $string{++$i};
            $sum++;
            continue;
        } else {
            $s .= $string{$i};
            $sum++;
            continue;
        }
    }
    if($sublen >= $sum) {
        return $string;
    }
    $s = "";
    $index = 0;
    for($i = 0; $i < $sublen; $i++) {
        if(ord($string{$index}) > 127) {
            $s .= $string{$index} . $string{++$index} . $string{++$index};
            $index++;
            continue;
        } else {
            $s .= $string{$index};
            $index++;
            continue;
        }
    }
    if($a===0){
        $s.="...";
    }else{
        $s.=$a;
    }
    return $s;
}
function changeYinhaoCom($content , $flag){
    if($flag=="in"){
        $content  = str_replace("\"","&quot;",$content);
        $content  = str_replace("'","'",$content);
    }
    if($flag=="out"){
        $content  = str_replace("&quot;","\"",$content);
        $content  = str_replace("'","'",$content);
    }
    return $content;
}

//调用方法
$str = '这是一段很长的字符串我要把它截取一部分';
echo cnsubstr(content_replace($str),5);
echo $res;

编码-截取中文-去除HTML字符的更多相关文章

  1. PHP substr截取中文字符出现乱码的问题解疑

    我们在使用PHP substr截取中文字符的时候,经常会出现乱码的情况,导致程序无法正常运行,这时怎么引起的呢?通过分析,我们知道,主要是substr可能硬生生的将一个中文字符“锯”成两半.解决办法: ...

  2. 请求大神,C#如何截取字符串中指定字符之间的部分 按指定字符串分割 一分为二 c# 去除字符串中的某个已知字符

    string stra = "abcdefghijk";string strtempa = "c";string strtempb = "j" ...

  3. php截取字符串|php截取字符串前几位|php截取中文字符串

    转 截取字符串专题:php截取字符串函数,php 字符串长度,php截取字符串前几位 PHP截取中文字符串(mb_substr)和获取中文 => http://www.q3060.com/lis ...

  4. 用substr()截取中文出现乱码的解决方法

    截取中文字符串时出现乱码(使用substr()函数) 程序一:PHP截取中文字符串方法 function msubstr($str, $start, $len) {    $tmpstr = &quo ...

  5. thinkphp模板中截取中文字符串的方法分享

    前段用thinkphp写了一个系统,感觉thinkphp学起来比较容易,开发起来了比较顺手,其中一个关键的因素就是它的模版引擎相当强大,使用方法跟smarty类似,在模版中还可以用php代码,有模版包 ...

  6. (实用篇)php中计算中文字符串长度、截取中文字符串的函数代码

    在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启.当然,如果是用的自己的服务 ...

  7. PHP截取中文字符串

    这里的输出的长度是6,那么一个汉字的字符长度就是3咯,可是老师演示的一个字符的长度却是2,百思不得其解. 查了一下资料发现,这个问题的答案与系统所采用的字符编码方式有关: 1. utf-8 如果系统采 ...

  8. php中计算中文字符串长度、截取中文字符串

    在做PHP开发的时候,由于我国的语言环境问题,所以我们常常需要对中文进行处理.在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数 ...

  9. php截取中文字符串,英文字符串,中英文字符串长度的方法

    今天学习了php函数截取中文字符串,英文字符串,中英文字符串的函数使用方法.对中英文截取方法不理解,此处先做记录. PHP自带的函数如strlen().mb_strlen()都是通过计算字符串所占字节 ...

随机推荐

  1. Android设计模式源码解析之Builder模式

    https://github.com/simple-android-framework/android_design_patterns_analysis/tree/master/builder/mr. ...

  2. MySQL 部分函数使用

    1.DATE_ADD 参考博客:MySQL日期时间函数大全 转 例:DATE_ADD(date,INTERVAL expr type) 2.日期转字符串 DATE_FORMAT 参考博客:MYSQL中 ...

  3. Java 反射的基本应用

    package com.lf.testreflection; import java.lang.reflect.Field; import java.lang.reflect.Method; impo ...

  4. grunt搭建前端自动化实践

    grunt是什么? grunt是一个前端构建工具, 每种应用开发, 都有一套构建工具, 例如linux c程序开发, 构建工具是make, java程序的构建工具为maven,web前端经过十多年的发 ...

  5. configure: error: C++ compiler cannot create executables

    今天装虚拟机LNMP环境 安装报错:configure: error: C++ compiler cannot create executables 这是因为 gcc 组件不完整,执行安装 yum i ...

  6. java io读书笔记(8)FileInputStream/FileOutputStream的应用

    转自:http://www.cnblogs.com/jjtech/archive/2011/04/17/2019210.html 这是一对继承于InputStream和OutputStream的类,用 ...

  7. Python学习总结13:os模块

    os模块包含普遍的操作系统功能,与具体的平台无关.常用于处理文件和目录这些我们日常手动需要做的操作. 1. os模块函数汇总 1) os.name():判断现在正在实用的平台,Windows 返回 ‘ ...

  8. extjs grid 单元格 多选

    new Ext.grid.CellSelectionModel({ last : false, // 上一次选中的单元格 selections : [], // 选择区缓存 handleMouseDo ...

  9. Java实现文件的读写,复制

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStr ...

  10. 夺命雷公狗---DEDECMS----6快速入门之总结篇

    我们dedecms四大表分别是: dede_channeltype(模型表) dede_arctype(栏目表) dede_archives(文章主表) dede_addonXXXX(附加表) 使用d ...