本文目录一览:
php字符串截取函数用法分析
本文实例分析了php字符串截取函数用法。分享给大家供大家参考。具体分析如下:
php自带的截取字符串的函数只能处理英文,数字的不能截取中文混排的,后面一个示例比较好用,第一个主要是给初学者学学用的,具体代码如下:
复制代码
代码如下:?php
//构造字符串
$str
=
"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
echo
"原字符串:b".$str."/bbr";
//按各种方式进行截取
$str1
=
substr($str,5);
echo
"从第5个字符开始取至最后:".$str1."br";
$str2
=
substr($str,9,4);
echo
"从第9个字符开始取4个字符:".$str2."br";
$str3
=
substr($str,-5);
echo
"取倒数5个字符:".$str3."br";
$str4
=
substr($str,-8,4);
echo
"从倒数第8个字符开始向后取4个字符:".$str4."br";
$str5
=
substr($str,-8,-2);
echo
"从倒数第8个字符开始取到倒数第2个字符为止:".$str5."br";
?
支持中英文混合截取,代码如下:
复制代码
代码如下:?php
/*
------------------------------------------------------
参数:
$str_cut
需要截断的字符串
$length
允许字符串显示的最大长度
程序功能:截取全角和半角(汉字和英文)混合的字符串以避免乱码
------------------------------------------------------
*/
function
substr_cut($str_cut,$length)
{
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;
}
?
希望本文所述对大家的php程序设计有所帮助。
php截取字符串函数
php
//构造字符串
$str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
echo "原字符串:".$str."
";
//按各种方式进行截取
$str1 = substr($str,5);
echo "从第5个字符开始取至最后:".$str1."
";
$str2 = substr($str,9,4);
echo "从第9个字符开始取4个字符:".$str2."
";
$str3 = substr($str,-5);
echo "取倒数5个字符:".$str3."
";
$str4 = substr($str,-8,4);
echo "从倒数第8个字符开始向后取4个字符:".$str4."
";
$str5 = substr($str,-8,-2);
echo "从倒数第8个字符开始取到倒数第2个字符为止:".$str5."
";
?
支持中英文混合截取。
代码如下 复制代码
/*
------------------------------------------------------
参数:
$str_cut 需要截断的字符串
$length 允许字符串显示的最大长度
程序功能:截取全角和半角(汉字和英文)混合的字符串以避免乱码
------------------------------------------------------
*/
function substr_cut($str_cut,$length)
{
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;
}
?
php字符截取
当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。而值为0x81到0xff与0x00组合始终都显示为“空”
根据这一特点,在substr的结果后面补上一个chr(0),就可以防止出现乱码了
先看段代码
复制代码
代码如下:
?php
$len
=
15;
$str
=
"这个新闻或是文章的标题很长,需要只显示前面一些字,后面用...来代替";
echo
strlen($str)=$len
?
$str
:
(substr($str,0,$len).chr(0)."...");
?
chr(0)相关知识:
null是什么都没有,而chr(0)的值是0。表示成16进制是0x00,表示成二进制是00000000
虽然chr(0)不会显示出什么,但是他是一个字符。
最准确的php截取字符串长度函数
说是最精确截取长度,其实我也不敢确定是否是最精确的,具体有多精确看下面的效果就知道了:
先上测试用的字符串:
?php
header("Content-Type:text/html;charset=utf-8");
echo
cn_substr_utf8('我是一个,和哈,哦也,,国家!',12);
echo
'br
/',cn_substr_utf8('ai\'2145m
a
ch3我[是一,个,和哈,哦也,,国家!',12);
echo
'br
/',cn_substr_utf8('【我,是一,个,和哈,哦也,,国家!',12);
echo
'br
/',cn_substr_utf8('我是一,个,和哈,哦也,,国家!',12);
echo
'br
/',cn_substr_utf8('我是,一,个,和哈,哦也,,国家!',12);
echo
'br
/',cn_substr_utf8('我,是,一,个,和哈,哦也,,国家!',12);
echo
'br
/',cn_substr_utf8('我是asd一,个,和哈,哦也,,国家!',12);
echo
'br
/',cn_substr_utf8('【我i\'m[是一,个,和哈,哦也,,国家!',12);
echo
'br
/',cn_substr_utf8('【i\'m
a
ch我[是一,个,和哈,哦也,,国家!',12);
echo
'br
/',cn_substr_utf8('【i\'2145m
a
ch3我[是一,个,和哈,哦也,,国家!',12);
下面是精确截取字符串的效果图:
具体函数代码如下:
//utf-8中文截取,单字节截取模式
function
cn_substr_utf8($str,$length,$append='...',$start=0){
if(strlen($str)$start+1){
return
'';
}
preg_match_all("/./su",$str,$ar);
$str2='';
$tstr='';
//
for($i=0;isset($ar[0][$i]);$i++){
if(strlen($tstr)$start){
$tstr.=$ar[0][$i];
}else{
if(strlen($str2)$length
+
strlen($ar[0][$i])){
$str2.=$ar[0][$i];
}else{
break;
}
}
}
return
$str==$str2?$str2:$str2.$append;
}
如果大家认为还不够准确大家可以在此基础上进行改进,或者是创新,希望这篇关于php截取字符串长度函数的文章对大家的学习有所帮助。
php语言中字符串分割用什么函数?
“php分割字符串的函数有explode()和str_split() explode()”【摘要】
php语言中字符串分割用什么函数?【提问】
“php分割字符串的函数有explode()和str_split() explode()”【回答】
explode() 函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组。【回答】
php截取字符串用哪个函数?
有两个函数,具体看你需求满足谁,无中文使用substr,有中文使用mb_substr函数