您的位置:

php抓取中文字符,php获取字符串中的指定字符

本文目录一览:

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

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

这是解决方法

我没看

懂你

贴上来的程序

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

希望可以帮得上

如何利用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 截断字符 后查找到一段代码。