您的位置:

php判断中英文,PHP判断语句

本文目录一览:

PHP指定截取字符串中的中英文或数字字符的实例分享

我们在开发过程中,经常会碰到截取中文英文数字等的问题,大家知道中文所占的字符和英文数字是不同的;然后我们就会在项目的common里写一些日常的函数包含时间计算转换和中英文字符截取的函数;比如截取中英文的函数没个几行代码恐怕拿不下来的吧,现在就告诉大家一个简单的(自己本地运行过的),如有问题,请大家多多指教

$c

=

'ddaabbccaa';

$d

=

'地球需要我们每个人的爱护';

$frist1

=

mb_substr(

$c,

0,

1

,"UTF-8");

//

d

$delete_last1

=

mb_substr($d,

-1,1,"UTF-8");

//

echo

$frist1.'+++'.$delete_last1.'br/';

//

d+++护

$frist2

=

mb_substr(

$d,

0,

1

,"UTF-8");

//

$delete_last2

=

mb_substr($d,

-1,1,"UTF-8");

//

echo

$frist2.'+++'.$delete_last2.'br/';

//

地+++护

$e

=

'11aa22cc33';

$f

=

'aa地球需要我们每个人的爱护';

$g

=

'地球需要我们每个人的爱护gg';

$h

=

'地球需要我们每个人的爱护';

$first3

=

mb_substr(

$e,

0,

1

,"UTF-8");

//

1

$last3

=

mb_substr(

$f,

0,

1

,"UTF-8");

//

a

$delete_last3

=

mb_substr($f,

-1,1,"UTF-8");

//

$delete_last4

=

mb_substr($g,

-1,1,"UTF-8");

//

g

$frist4

=

mb_substr(

$g,

0,

1

,"UTF-8");

//

$delete_last5

=

mb_substr($h,

-1,1,"UTF-8");

//

echo

$first3.'+++'.$last3.'---'.$delete_last3.'***'.$delete_last4.''.$frist4.'br/';

//

1+++a---护***g地

echo

$last3.'...'.$delete_last3.'br/';

//

a...护

echo

$frist4.'...'.$delete_last5.'br/';

//

地...护

//

这样不管字符串里是中英文数字等都是可以的无需判断,如:

”地...护“

或者

“地...”

或者

“...护”

PS:过滤字符串中空格的方法

去除字符串首尾中英文空格的方法:

function

mbTrim($str)

{

return

mb_ereg_replace('(^( |

)+|( |

)+$)',

'',

$str);

}

下面的正则验证时过滤掉用户输入的连续空格,包括全角空格和半角空格

$user

=

mb_ereg_replace('^( |

)+',

'',

$user);

$user

=

mb_ereg_replace('( |

)+$',

'',

$user);

$age

=

mb_ereg_replace('^( |

)+',

'',

$age);

$age

=

mb_ereg_replace('( |

)+$',

'',

$age);

$method

=

mb_ereg_replace('^( |

)+',

'',

$method);

$method

=

mb_ereg_replace('( |

)+$',

'',

$method);

$address

=

mb_ereg_replace('^( |

)+',

'',

$address);

$address

=

mb_ereg_replace('( |

)+$',

'',

$address);

我用php写的,我想判断表单提交的内容是中文还是英文,要怎么写呢?

mb_strlen 无论中英文都算1

strlen 中文算2,英文算1,

接收内容之后mb_strlen($str) == strlen($str) 就是英文

mb_strlen($str) == 2*strlen($str),是中文

否则是混排。

有点投机的做法

php分割中英文字符串的几种方

对一段文字按照字数进行分割,因为文字中可能是中英文混合的,而php函数strlen只能计算出字串的字节数,于是自己实现了几个函数,分享下。

例1,计算字符总长度。

01    ?php    

02    function ccStrLen($str) #计算中英文混合a href="/"target="_blank" class="infotextkey"字符串/a的长度    

03    {    

04    $ccLen=0;    

05    $ascLen=strlen($str);    

06    $ind=0;    

07    $hasCC=ereg(”[xA1-xFE]“,$str); #判断是否有汉字    

08    $hasAsc=ereg(”[x01-xA0]“,$str); #判断是否有ASCII字符    

09    if($hasCC  !$hasAsc) #只有汉字的情况    

10    return strlen($str)/2;    

11    if(!$hasCC  $hasAsc) #只有Ascii字符的情况    

12    return strlen($str);    

13    for($ind=0;$ind$ascLen;$ind++)    

14    {    

15    if(ord(substr($str,$ind,1))0xa0)    

16    {    

17    $ccLen++;    

18    $ind++;    

19    }    

20    else    

21    {    

22    $ccLen++;    

23    }    

24    }    

25    return $ccLen;    

26    }    

27    ?    

例2,从左侧截取字符串。

01    ?php    

02    function ccStrLeft($str,$len) #从左边截取中英文混合字符串    

03    {    

04    $ascLen=strlen($str); if($ascLen=$len) return $str;    

05    $hasCC=ereg(”[xA1-xFE]“,$str); #同上    

06    $hasAsc=ereg(”[x01-xA0]“,$str);    

07    if(!$hasCC) return substr($str,0,$len);    

08    if(!$hasAsc)    

09    if($len  0×01) #如果长度是奇数    

10    return substr($str,0,$len+$len-2);    

11    else    

12    return substr($str,0,$len+$len);    

13    $cind=0;$flag=0;$reallen=0;//实际取字节长    

14    while($cind$ascLen  $reallen$len)    

15    { //by     

16    if(ord(substr($str,$cind,1))0xA1){ //如果该字节为英文 则加一    

17    $cind++;    

18    }else{//否则 加2个字节    

19    $cind+=2;    

20    }    

21    $reallen++;    

22    }    

23    return substr($str,0,$cind);    

24    }    

25    ?    

例3,把给定文字,按切割数量存入数组(适合短篇文字,长文章可没分隔一部分就直接处理一次)

view sourceprint?

01    ?php    

02    function SplitContent($content,$smslen){    

03    $str_tmp=$content;    

04    $arr_cont=array();    

05    $len_tmp=0;    

06    $i=0;//分割绝对位置    

07    while (strlen($str_tmp)0){    

08    $str_tmp=ccStrLeft($str_tmp,$smslen);    

09    array_push($arr_cont,$str_tmp);    

10    $i+=strlen($str_tmp);    

11    $str_tmp=substr($content,$i,strlen($content));    

12    }    

13    return $arr_cont;    

14    } //by     

15    ?    

测试:

1    ?php    

2    $str=’a计算中英文混合1234字符串的长度abcd’;    

3    echo $str.’的长度为:’.ccStrLen($str);    

4    echo ‘br’;    

5    $smslen=3;//截取长度    

6    print_r(SplitContent($str,$smslen));    

7    ?

php中是如何区分中英文及数字的,想把一字符串中中文、英文和数字拆分开,该如何实现

目前有两种方式:

php词典:这个可以参照dede的词典。

插件:这个可以参考sphinx