Code前端首页关于Code前端联系我们

php断句无乱码,php乱码如何解决

terry 3年前 (2023-09-30) 阅读数 42 #PHP
文章标签 PHP microtime

本文目录一览:

  • 1、如何利用PHP来截取一段中文字符串而不出现乱码
  • 2、[php]如何在PHP中截取中文字串无乱码
  • 3、php 如何实现中文无乱码截取用哪个函数

如何利用PHP来截取一段中文字符串而不出现乱码

/*

功能:截取全角和半角混合的字符串以避免乱码

参数:

$str_cut 需要截断的字符串

$length  允许字符串显示的最大长度

*/

function substr_cut($str_cut,$length = 30){ 

if (strlen($str_cut) ; $length){

  for($i=0; $i  $length; $i++)

   if (ord($str_cut[$i]) ; 128) $i++;

  $str_cut = substr($str_cut,0,$i) . "...";

}

return $str_cut;

}

说明: 

程序的关键语句是: 

for($i=0; $i  $length; $i++)

if (ord($str_cut[$i]) ; 128) $i++;

$str_cut = substr($str_cut,0,$i) . "...";

如果字符的ASCII码大于128,说明当前字符和下一个字符是属于一个汉字的。 

则,$i++ 跳过对下一个字符的判断。 

再结合循环中的 $i++ ,实际上,当遇到一个汉字时,$i 就会加 2 ,从而正确的跳过汉字。 

最终实现的效果是,$i 变量指向的要么是半角的字符,要么是全角汉字的首字符,不会指向 

全角汉字的第二个字符,所以,当$i ;= $length 时,循环结束,使用 

$str_cut = substr($str_cut,0,$i) . "..."; 截取字符时自然也就不会出现乱码了。 

本人在写一个程序时需要利用PHP从一段字符串中截取指定长度的一段字符下来。以前在写ASP的时候,参考动网的程序写过类似的程序,不过,还没用PHP写过。 

想偷懒,看有不有现成的代码可以用。于是,在GOOGLE中输入:PHP 截断字符 后查找到一段代码。

[php]如何在PHP中截取中文字串无乱码

一年前写的一个函数。用法与substr一样,支持中文。您也可以加以改进。

//截取字符串含数,对系统函数的改进,不会将中文变乱。

function mysubstr ($str,$start,$len=0,$cutchar="…") {

$str=str_replace(" ",' ',$str);

$str=str_replace("“",'“',$str);

$str=str_replace("”",'”',$str);

$str=str_replace("—",'—',$str);

$str=str_replace(""",'"',$str);

$str=str_replace(''',"'",$str);

$str=str_replace("",'',$str);

$str=str_replace("",'',$str);

$str=str_replace("",'',$str);

$str=preg_replace("/[\s]+/"," ",$str);

$tolen=strlen($str);

if(!($start==0 $len=$tolen)){

//为方便操作,先将起始值和长度值转换为正数

if($start0)$start=$tolen+$start;if($start0)$start=0;if($start$tolen)return "";

if($len=0)$len=($tolen+$len)-$start;if($len1)return "";

if($len$tolen)$len=$tolen;

for($i=0;$i$start;$i++){

if(ord(substr($str,$i,1))127){$i++;}

}

$start=$i; //起始位置计算完成

for($k=0;$k$len;$k++,$i++){

if(ord(substr($str,$i,1))127){$i++;$k++;}

}

$len=$k; //长度计算完成

$str=substr($str,$start,$len);

if($start0){$str=$cutchar.$str;}

if($start+$len$tolen){$str.=$cutchar;}

}

$str=str_replace("",'',$str);

$str=str_replace('"','"',$str);

$str=str_replace("'",''',$str);

$str=str_replace("",'',$str);

$str=str_replace("",'',$str);

return $str;

}

php 如何实现中文无乱码截取用哪个函数

中文截取:mb_substr()

mb_substr( $str, $start, $length, $encoding )

$str,需要截断的字符串

$start,截断开始处,起始处为0

$length,要截取的字数

$encoding,网页编码,如utf-8,GB2312,GBK

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门