本文目录一览:
- 1、如何在php中截取字符串“xxx
- 2、php 怎么截取汉字字符串?
- 3、如何利用PHP来截取一段中文字符串而不出现乱码
- 4、php 截取utf-8格式的字符串实例代码
- 5、PHP指定截取字符串中的中英文或数字字符的实例分享
- 6、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'");
这是解决方法
我没看
懂你
贴上来的程序
所以给你一些方法去解决乱码的问题
希望可以帮得上