您的位置:

php文字截取无乱码,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来截取一段中文字符串而不出现乱码

/*

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

参数:

$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中文

乱码

的原因及解决方法

原因:1.PHP页面语言本身的编码类型不合适,这时候,你直接在脚本中写的中文肯定是乱码,不用说数据库了;

解决方法:选择'

UTF8

'或者'gb2312',这样客户浏览器会自动选择并出现正确的中文显示。注意:'UTF8'或者'gb2312'都可以正确显示中文的。

2.数据库MySQL中的编码类型不正确。

解决方法:创建数据库的时候,MySQL

字符集

选择'UTF8',MySQL

连接校对选择utf8_general_ci,这样创建的数据库用来存储中文肯定没有问题,

否则,你的中文首先在MySQL中就是乱码,更不要期望它会给你在PHP页面中显示正确。

3.与平时的脚本编辑环境有关。比如,有些内容是自己用word写的,有些是用记事本写的,有些用editplus、ultraplus等

文本编辑器

。有时候就直接在DW中写中文了,

这样做不出乱码才怪呢。

解决方法:尽量用同一种编辑器。如果是拷贝来得既有的内容,建议用ultraplus中的编码转换功能把它转换成utf8或者gb2312。

到底转换成什么类型并不重要,关键要求你的PHP

WEB应用程序

中的编码要一致就行。

4.编程访问

MySQL时,建议添加一行代码:mysql_query("SET

NAMES

'GBK'");

这是解决方法

我没看

懂你

贴上来的程序

所以给你一些方法去解决乱码的问题

希望可以帮得上

php smarty里怎么截取中文字符串不乱码

1、如果你用过smarty模板引擎、MVC类似框架如tp,那么你自己写一个框架噢!

2、你要对php的继承实现以及其中的小知识点熟知;

3、先列出你的框架目录,什么地方放什么,然后写你的配置文件

4、用到的高频函数有:require 、 require_once 、 file_exites等!

如:sybase_connect连上数据库。

语法: int sybase_connect(string [servername], string [username], string [password]);

返回值: 整数函数种类: 数据库功能 本函数用来打开与 Sybase 数据库的连接。

参数 servername 为欲连上的数据库服务器名称。

参数 username 及 password 可省略,分别为连接使用的帐号及密码。

使用本函数需注意早点关闭数据库,以减少系统的负担。

连接成功则返回数据库的连接代号,失败返回 false 值。

php 怎么截取汉字字符串?

?php 

$str = '这样一来我的字符串就不会有乱码^_^'; 

echo "mb_substr:" . mb_substr($str, 0, 7, 'utf-8'); 

//结果:这样一来我的字 

echo "

"; 

echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8'); 

//结果:这样 

?

首先

1.确保你的Windows/system32下有php_mbstring.dll这个文件,没有就从你Php安装目录extensions里拷入Windows/system32里面。

2.在windows目录下找到php.ini打开编辑,搜索mbstring.dll,找到

;extension=php_mbstring.dll把前面的;号去掉,这样mb_substr函数就可以生效了

mb_strcut函数功能也可以截取字符串长度,下面实例具体看看区别在哪:

mb_substr();