您的位置:

php截取中文字符串的代码(php截取文本)

本文目录一览:

如何在php中截取字符串“xxx

substr(string,start,length)

string表示要截取的对象,start表示从哪个位置开始截取,0表示从头开始,正数表示从这个数的位置后面截取,负数表示从结尾算开始截取的位置,但依然是从左到右截,length表示截取长度.负数表示排除或忽略结尾多少个字符

中文截取

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

$str,需要截断的字符串

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

$length,要截取的字数

$encoding,网页编码,如utf-8,一个汉字是3个字节

php 怎么截取汉字字符串?

?php 

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

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

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

echo "br"; 

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();

如何利用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 截取utf-8格式的字符串实例代码

php

截取utf-8格式的字符串

php中,我们经常需要截取字符串。英文字符占用一个字节,中文字符占用两个字节,但中文字符占用两个字节是相对于GBK编码而言但是在时下国际流行的UTF8编码中,一个中文字符占用3个字节。本文章向大家介绍一个php

截取utf-8格式字符串的函数。

举例说明:

function

truncate_utf8_string($string,

$length,

$etc

=

'...')

{

$result

=

'';

$string

=

html_entity_decode

(

trim

(

strip_tags

(

$string

)

),

ENT_QUOTES,

'UTF-8'

);

$strlen

=

strlen

(

$string

);

for($i

=

0;

(($i

$strlen)

($length

0));

$i

++)

{

if

($number

=

strpos

(

str_pad

(

decbin

(

ord

(

substr

(

$string,

$i,

1

)

)

),

8,

'0',

STR_PAD_LEFT

),

'0'

))

{

if

($length

1.0)

{

break;

}

$result

.=

substr

(

$string,

$i,

$number

);

$length

-=

1.0;

$i

+=

$number

-

1;

}

else

{

$result

.=

substr

(

$string,

$i,

1

);

$length

-=

0.5;

}

}

$result

=

htmlspecialchars

(

$result,

ENT_QUOTES,

'UTF-8'

);

if

($i

$strlen)

{

$result

.=

$etc;

}

return

$result;

}

如果需要截取utf-8格式的字符串,直接调用这个函数即可。

?php

$str="如果需要截取utf-8格式的字符串,直接调用这个函数即可。";

echo

truncate_utf8_string($str,10);//输出结果:如果需要截取utf-8格...

?

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

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截取中文字符串

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'");

这是解决方法

我没看

懂你

贴上来的程序

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

希望可以帮得上