php中html字符串过滤函数详解

 更新时间:2016年11月25日 17:25  点击:1494
在php中过滤html字符串的方法有很多,如果我们使用系统自带的可能不适合于提交表单类数据了,如果用自定的相对会好处理一些,下面我介绍了一些方法大家可参考参考。

自定义的一个函数

 代码如下 复制代码

function StripHTML($string){
 $pattern=array ("'<script[^>]*?>.*?</script>'si", "'<style[^>]*?>.*?</style>'si",  "'<[/!]*?[^<>]*?>'si",  "'([rn])[s]+'",  "'&(quot|#34);'i",  "'&(amp|#38);'i",  "'&(lt|#60);'i",  "'&(gt|#62);'i",  "'&(nbsp|#160);'i",  "'&(iexcl|#161);'i",  "'&(cent|#162);'i",  "'&(pound|#163);'i",  "'&(copy|#169);'i",  "'&#(d+);'e");
 $replace=array ('', '', "\1", '', "&", "<", ">", ' ', chr(161), chr(162), chr(163), chr(169), "chr(\1)");
 return preg_replace ($pattern, $replace, $str);
}

除了上面自定的函数之外还有一个php自带的过滤html的函数:strip_tags(string) 这样就可以过滤掉所有的html标签了。

如果想过滤掉除了<img src="">之外的所有html标签,则可以这样写:

 代码如下 复制代码

strip_tags(string,"<img>");

过滤除了<img src=""><p>xxx</p><b></b>之外的所有html标签,则可以这样写:

 代码如下 复制代码

strip_tags(string,"<img><p><b>");


网上找到一个防sql注入函数

 代码如下 复制代码

//php 批量过滤post,get敏感数据
if (get_magic_quotes_gpc()) {
$_GET = stripslashes_array($_GET);
$_POST = stripslashes_array($_POST);
}

function stripslashes_array(&$array) {
while(list($key,$var) = each($array)) {
if ($key != 'argc' && $key != 'argv' && (strtoupper($key) != $key || ''.intval($key) == "$key")) {
if (is_string($var)) {
$array[$key] = stripslashes($var);
}
if (is_array($var))  {
$array[$key] = stripslashes_array($var);
}
}
}
return $array;
}
         //--------------------------

// 替换HTML尾标签,为过滤服务 www.111cn.net
//--------------------------
function lib_replace_end_tag($str)
{
if (empty($str)) return false;
$str = htmlspecialchars($str);
$str = str_replace( '/', "", $str);
$str = str_replace("\", "", $str);
$str = str_replace("&gt", "", $str);
$str = str_replace("&lt", "", $str);
$str = str_replace("<SCRIPT>", "", $str);
$str = str_replace("</SCRIPT>", "", $str);
$str = str_replace("<script>", "", $str);
$str = str_replace("</script>", "", $str);
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace("modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cas","cast",$str);
$str=str_replace("&","&",$str);
$str=str_replace(">",">",$str);
$str=str_replace("<","<",$str);
$str=str_replace(" ",chr(32),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace("    ",chr(9),$str);
$str=str_replace("&",chr(34),$str);
$str=str_replace("'",chr(39),$str);
$str=str_replace("<br />",chr(13),$str);
$str=str_replace("''","'",$str);
$str=str_replace("css","'",$str);
$str=str_replace("CSS","'",$str);

return $str;

}

使用方法

 代码如下 复制代码

引用是直接这样:
$xxx = htmlspecialchars($_POST['xxx']);
或者
$xxx = htmlspecialchars($_GET['xxx']);

利用php来采集图片方法很简单本实例使用了fopen来保存文件了,但在此一聚教程小编建义大家不要使用此方法来获取,如果数据量大量fopen函数性能比curl差得远了,所以大家可尝试改进使用curl来处理。
 代码如下 复制代码

<?php
/*使用PHP实现采集远程图片功能。基本流程:

1、获取目标网站图片地址。

2、读取图片内容。

3、创建要保存图片的路径并命名图片名称。

4、写入图片内容。

5、完成。

我们通过写几个函数来实现这一过程。*/

//函数make_dir()建立目录。判断要保存的图片文件目录是否存在,如果不存在则创建目录,并且将目录设置为可写权限。
function make_dir($path){
    if(!file_exists($path)){//不存在则建立
        $mk=@mkdir($path,0777); //权限
        @chmod($path,0777);
    }
    return true;
}

//函数read_filetext()取得图片内容。使用fopen打开图片文件,然后fread读取图片文件内容。
function read_filetext($filepath){
    $filepath=trim($filepath);
    $htmlfp=@fopen($filepath,”r”);
    //远程
    if(strstr($filepath,”://”)){
        while($data=@fread($htmlfp,500000)){
            $string.=$data;
        }
    }
    //本地
    else{
        $string=@fread($htmlfp,@filesize($filepath));
    }
    @fclose($htmlfp);
    return $string;
}


//函数write_filetext()写文件,将图片内容fputs写入文件中,即保存图片文件。
function write_filetext($filepath,$string){
    //$string=stripSlashes($string);
    $fp=@fopen($filepath,”w”);
    @fputs($fp,$string);
    @fclose($fp);
}


//函数get_filename()获取图片名称,也可以自定义要保存的文件名。
function get_filename($filepath){
    $fr=explode(“/”,$filepath);
    $count=count($fr)-1;
    return $fr[$count];
}


//然后将几个函数组合,在函数save_pic()中调用,最后返回保存后的图片路径。
function save_pic($url,$savepath=”){
    //处理地址
    $url=trim($url);
    $url=str_replace(“ ”,”%20″,$url);
    //读文件
    $string=read_filetext($url);
    if(emptyempty($string)){
        echo ’读取不了文件’;exit;
    }
    //文件名
    $filename = get_filename($url);
    //存放目录
    make_dir($savepath); //建立存放目录
    //文件地址
    $filepath = $savepath.$filename;
    //写文件
    write_filetext($filepath,$string);
    return $filepath;
}


//最后一步就是调用save_pic()函数保存图片,我们使用以下代码做测试。
//目标图片地址
//$pic = ”/1205/06/2776119_end1_thumb.jpg”;
// for($i=100; $i<=204; $i++)
// {
    // $pic = ’http://cache.soso.com/img/img/e’.$i.’.gif’;
////保存目录
// $savepath = ”images/”;
// echo save_pic($pic,$savepath).”<br />”;
// }


/*
实际应用中,我们可能会采集某个站点的内容,比如产品信息,包括采集防盗链的图片保存到网站上服务器上。这时我们可以使用正则匹配页面内容,将页面中相匹配的图片都找出来,然后分别下载到网站服务器上,完成图片的采集。以下代码仅供测试:
*/
function get_pic($cont,$path){
    $pattern_src = ’/<[img|IMG].*?src=['|"](.*?(?:[.gif|.jpg]))['|"].*?[/]?>/’;
    $num = preg_match_all($pattern_src, $cont, $match_src);
    $pic_arr = $match_src[1]; //获得图片数组
    foreach ($pic_arr as $pic_item) { //循环取出每幅图的地址
        save_pic($pic_item,$path); //下载并保存图片
        echo ”[OK]..!<br />”;
    }
}

//然后我们通过分析页面内容,将主体内容找出来,调用get_pic()实现图片的保存。

//我们采集太平洋电脑网上一篇关于手机报道内容页的图片  php100.com
$url = ”你的网地址”;

$content = file_get_contents($url);//获取网页内容
$preg = ’#<div class=”art_con”>(.*)<div class=”ivy620 ivy620Ex”></div>#iUs’;
preg_match_all($preg, $content, $arr);
$cont = $arr[1][0];
get_pic($cont,’img/’);

/*
以上代码笔者亲测,可以采集图片,但是还有些场景没考虑进去,比如目标网站做了302多次跳转的,目标网站做了多种防采集的,留给喜欢折腾的同学去试试吧。
*/
?>

在看这函数之前我验证邮箱或IP地址及url都是使用正则表达式来处理,今天发现filter函数可以替换正则哦并且方法简单好用,下面我用实例介绍这函数的用法吧。

早年使用php的时候还不知道有filter这玩意,那时候判断邮箱、url和ip地址格式是否符合都是用正则表达式。后来随着使用的逐渐深入,才知道在php中也可以使用内置的函数库filter来完成这些功能。

1、验证邮箱

先来看原始的正则验证

 代码如下 复制代码

<?php
function isEmail($email){
 if(preg_match("/^[0-9a-zA-Z]+@(([0-9a-zA-Z]+)[.])+[a-z]{2,4}$/i",$email )) {
     return '邮箱验证OK';
        } else {
 return '验证不是邮箱';
 }
}
?>

再看filter这玩意

 代码如下 复制代码

$email = 'sjlinyu@qq.com'; 

$result = filter_var($email, FILTER_VALIDATE_EMAIL); 

var_dump($result); //string(14) "sjlinyu@qq.com"

对于filter_var这个函数,如果验证通过则会返回验证对象,否则返回false。

感觉后者更简单一些哦

2、验证url地址

正则验证

 代码如下 复制代码

<?php
$url = 'www.111cn.net';
$search = '/---正则N---/';
if(preg_match($search,$url)){
 echo '匹配';
}else {
 echo '不匹配';
}
?>

filter_var函数

 代码如下 复制代码

$url = "http://www.111cn.net"; 

$result = filter_var($url, FILTER_VALIDATE_URL); 

var_dump($result); //string(22) "http://www.111cn.net"

3、验证ip地址

正则验证函数

 代码如下 复制代码

/**
* 检查IP地址是否正确。
*/
function checkipaddres ($ipaddres) {
$preg="/A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5])).){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))Z/";
if(preg_match($preg,$ipaddres))return true;
return false;
}


 

此函数验证

 代码如下 复制代码

$url = "192.168.1.110"; 

$result = filter_var($url, FILTER_VALIDATE_IP); 

var_dump($result); //string(13) "192.168.1.110"

值的一提的是,这方法也可以用来验证ipv6。

 

 代码如下 复制代码

$url = "2001:DB8:2de::e13"; 

$result = filter_var($url, FILTER_VALIDATE_IP); 

var_dump($result); //string(17) "2001:DB8:2de::e13"

验证数值是否为整数,并且在一个整数区间内

 代码如下 复制代码


$i = '010'; 

$result = filter_var( 

     $i, 

     FILTER_VALIDATE_INT, 

     //设定校验的数值范围 

     array( 

      'options' => array('min_range' => 1, 'max_range' => 100) 

     ) 

 ); 

var_dump($result);//bool(false)

php的变量是弱类型,如果不用过滤器,直接使用大于小于符号判断的话会是真的。

 代码如下 复制代码


 $i = '010'; 

$result = $i >= 1 && $i <= 100; 

 var_dump($result);//bool(true)

5、验证浮点数

 代码如下 复制代码


$float = 12.312; 

$result = filter_var($float, FILTER_VALIDATE_FLOAT); 

var_dump($result); //float(12.312)

在做一些金额方面的验证时,经常需要验证金额是否为浮点数。

总结

php中的filter过滤器虽然比较冷门,但是功能还是蛮强大的。除了上述这些功能外,还有一些过滤输入的功能,可查阅php手册。

如果你直接使用PHP CURL函数来抓取http内容可能没有任何问题了,但是如果你要正抓取的是https文件才会发现本文章帮你解决了一个大难题了,下面我们来看看具体操作过程。

三年前写过一篇《一个简陋的支持HTTPS的PHP CURL封装函数》,当时只是知其然不知其所以然,今天来详细梳理一下。

https服务器post数据

 代码如下 复制代码

function curlPost($url, $data, $timeout = 30)
{
    $ssl = substr($url, 0, 8) == "https://" ? TRUE : FALSE;
    $ch = curl_init();
    $opt = array(
            CURLOPT_URL     => $url,
            CURLOPT_POST    => 1,
            CURLOPT_HEADER  => 0,
            CURLOPT_POSTFIELDS      => (array)$data,
            CURLOPT_RETURNTRANSFER  => 1,
            CURLOPT_TIMEOUT         => $timeout,
            );
    if ($ssl)
    {
        $opt[CURLOPT_SSL_VERIFYHOST] = 1;
        $opt[CURLOPT_SSL_VERIFYPEER] = FALSE;
    }
    curl_setopt_array($ch, $opt);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}
$data = curlPost('https://www.111cn.net', array('p'=>'hello'));
echo ($data);

-----------------------------我是分割线--------------------------------

其实这是告诉服务器不进行SSL认证,并不是真的走HTTPS

如果要真正使用HTTPS,那么需要提供CA证书

上面关于SSL部分按照如下设置:

 代码如下 复制代码

01.CURLOPT_SSL_VERIFYPEER 设置为 true ,说明进行SSL证书认证 
02.CURLOPT_SSL_VERIFYHOST 设置为 2, 说明进行严格认证 
03.CURLOPT_CAINFO 设置为证书的路径 

为方便说明,先上代码吧~ 这是今天重新封装的一个函数

 代码如下 复制代码

/**
 * curl POST
 *
 * @param   string  url
 * @param   array   数据
 * @param   int     请求超时时间
 * @param   bool    HTTPS时是否进行严格认证
 * @return  string
 */ 
function curlPost($url, $data = array(), $timeout = 30, $CA = true){   
 
    $cacert = getcwd() . '/cacert.pem'; //CA根证书 
    $SSL = substr($url, 0, 8) == "https://" ? true : false; 
     
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout-2); 
    if ($SSL && $CA) { 
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);   // 只信任CA颁布的证书 
        curl_setopt($ch, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布) 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配 
    } else if ($SSL && !$CA) { 
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 检查证书中是否设置域名 
    } 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); //避免data数据过长问题 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
    //curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); //data with URLEncode 
 
    $ret = curl_exec($ch); 
    //var_dump(curl_error($ch));  //查看报错信息 
 
    curl_close($ch); 
    return $ret;   
}   

如果URL地址是https打头,那就走SSL,否则就走普通的HTTP协议。

是否走HTTPS的话就安全了吗?其实SSL也有不同的验证程度。

例如需不需要验证证书中的公用名呢?(BTW:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。)

需要验证主机名吗?

是任何证书都信任呢还是只信任CA颁布的呢?

(我擦嘞,电池快没点了,只捡关键地儿说了 - -|||)

如果网站SSL证书买的是CA的(通常比较贵),那么访问时可以使用比较严格的认证,即:

 代码如下 复制代码

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);   // 只信任CA颁布的证书 
curl_setopt($ch, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布) 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配 

如果网站的证书是自己生成的,或者是网上的小机构申请的,那么访问时如果使用严格认证则不会通过,直接返回false。(对了,返回false时可以打印curl_error($ch)查看具体错误信息。)此时可以根据情况通过降低验证程度来保证正常访问,例如:

 

 代码如下 复制代码

 

2 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);


// 检查证书中是否设置域名(为0也可以,就是连域名存在与否都不验证了)
平时我们使用浏览器访问各个https网站时,有时会遇到证书不受信的提示,其实就是因为这些网站的证书不是正规CA机构颁布的。

市面上各种浏览器中都内置了CA根证书列表信息,访问有CA颁布证书的网站时,会根据根证书验证这些网站的证书,所以就不会有这个提示了。

关于CA根证书文件,其实就是包含了各个主要CA机构的公钥证书,用来验证网站的证书是否是这些机构颁发的

最近在研究discuz,发现后台很多设置项,都用textarea填写,然后每行一项,感觉很有意思,嘿嘿,主要是很简单,免得在设置的时候为控件的问题浪费太多时间。

不多说了,上代码:

 代码如下 复制代码

$names = preg_split('/rn/',$_POST['textarea']);
foreach($names as $name){
    // todo something eg: echo $name;
}

取值很简单,那么赋值呢,在textarea中输出换行符可没那么简单

 代码如下 复制代码

$vals = get_from_mydb();
$tmp = '';
foreach($vals as $val){
    $tmp .= $val.'&#13;&#10;';
}


“&#13;”和”&#10;”是什么意思,因为时间为题我就不说了,自己去百度 GG一下吧!

 代码如下 复制代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.111cn.net ">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP获取表单area数据中的换行问题</title>
</head>
<body>
<?php
$content=empty($_POST['content'])?null:trim($_POST['content']);
if(!empty($content))echo str_replace("r",'rl',nl2br($content));
echo "r".'<br/>----------分割线----------------------'."r";
if(!empty($content))echo str_replace("n",'nl',nl2br($content));
echo "n".'<br/>----------分割线----------------------'."n";
if(!empty($content))echo str_replace("r",'rl',str_replace("n",'nl',nl2br($content)));
echo "r".'<br/>----------分割线----------------------<br/>'."n";
echo 'hello'."n".'boys!';
echo 'hello'."r".'boys!';
?>
<form action="textareanl.php" method="post" enctype="multipart/form-data">
<textarea name="content" cols="20" rows="6"></textarea>
<br />
<input type="submit" value="提交" />
</form>
</body>
</html>

在浏览器中打开后,在表单中输入

:

按提交后,浏览器中显示结果如下:

 

在记事本可可看到如下结果:

 

从以上结果可见:

1.PHP函数nl2br()是在字符串中的每个新行(rn)之前插入HTML换行符:<br/>;
2.Windows下的换行是(rn);
3.在记事本中,r或n均有换行的功能;

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • C#中截取字符串的的基本方法详解

    这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • c#中判断字符串是不是数字或字母的方法

    这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
  • PostgreSQL判断字符串是否包含目标字符串的多种方法

    这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • 详解C++ string常用截取字符串方法

    这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • php字符串按照单词逐个进行反转的方法

    本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
  • 运行vbs脚本报错无效字符、中文乱码的解决方法(编码问题)

    今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • 使用list stream: 任意对象List拼接字符串

    这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
  • C++中 Sort函数详细解析

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • C# 16 进制字符串转 int的方法

    这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 获取中文字符串的实际长度代码

    JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07