截取中文字符串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中的截取字符串问题
php的substr函数截取中文字符会出现乱码。
只有使用自写函数来截取包含中文的字符串,函数如下:
$string为字符串。
$length为要截取的长度。
function wordscut($string,$length) {
if(strlen($string) > $length) {
for($i = 0; $i < $length - 3; $i++) {
if(ord($string[$i]) > 127) {
$wordscut .= $string[$i].$string[$i + 1];
$i++;
} else {
$wordscut .= $string[$i];
}
}
return $wordscut."...";
}
return $string;
}
❸ php截取指定中文字符串
$str = "冒号之前的内容 天气预报: 冒号之后的内容";
$arr=explode("天气预报:",$str);
$result=$arr[1];
❹ php 截取两个中文字中间的字符串 怎么实现
<?php
header('Content-Type:text/html;charset=utf-8');
$str="网络知道提了截取中文字符串的问题";
$t1=mb_strpos($str,'提');
$t2=mb_strpos($str,'串');
echo$s=mb_substr($str,$t1,$t2-$t1);
❺ 如何利用PHP来截取一段中文字符串而不出现乱码
/*
功能:截取全角和半角混合的字符串以避免乱码
参数:
$str_cut 需要截断的字符串
$length允许字符串显示的最大长度
*/
functionsubstr_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指定截取字符串中的中英文或数字字符的实例分享
我们在开发过程中,经常会碰到截取中文英文数字等的问题,大家知道中文所占的字符和英文数字是不同的;然后我们就会在项目的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截取字符串
这个问题我回答了好几个了:
/* 截取一定长度的完整的中文字符 */
function cnsubstr($str,$strlen=10) {
if(empty($str)||!is_numeric($strlen)){
return false;
}
if(strlen($str)<=$strlen){
return $str;
}
//得到第$length个字符 并判断是否为非中文 若为非中文
//直接返回$length长的字符串
$last_word_needed=substr($str,$strlen-1,1);
if(!ord($last_word_needed)>128){
$needed_sub_sentence=substr($str,0,$strlen);
return $needed_sub_sentence;
}else{
for($i=0;$i<$strlen;$i++){
if(ord($str[$i])>128){
$i++;
}
}//end of for
$needed_sub_sentence=substr($str,0,$i);
return $needed_sub_sentence;
}
}
直接调用这个函数就可以了。
❾ php中如何截取中文字符串
如果是UTF-8字符编码的,应该是每个中文字符占三个字符位,
比如$a = "还好吧";
substr($a, 3, 3);//输出“好”,
注意$a赋值的时候要么都是中文字符(包括标点),如果有英文字符标点会影响