您的位置:

php截取字符函数,php截取文本

本文目录一览:

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函数