substr和mb_substr的区别

说明

string substr ( string $string , int $start [, int $length ] )

返回字符串 string start length 参数指定的子字符串。

string mb_substr ( string $str , int $start [, int $length [, string $encoding ]] )

根据字符数执行一个多字节安全的 substr() 操作。 位置是从 str 的开始位置进行计数。 第一个字符的位置是 0。第二个字符的位置是 1,以此类推。

区别

substr的int是根据字符串的字节数寻找索引下标而mb_substr是根据字符串的字符数量寻找索引下标

参数

string

输入字符串。

start

如果 start 是非负数,返回的字符串将从 string start 位置开始,从 0 开始计算。例如,在字符串 “abcdef” 中,在位置 0 的字符是 “a”,位置 2 的字符串是 “c” 等等。

如果 start 是负数,返回的字符串将从 string 结尾处向前数第 start 个字符开始。

如果 string 的长度小于或等于 start ,将返回 FALSE

length

如果提供了正数的 length ,返回的字符串将从 start 处开始最多包括 length 个字符(取决于 string 的长度)。

如果提供了负数的 length ,那么 string 末尾处的许多字符将会被漏掉(若 start 是负数则从字符串尾部算起)。如果 start 不在这段文本中,那么将返回一个空字符串。

如果提供了值为 0 FALSE NULL length ,那么将返回一个空字符串。

如果没有提供 length ,返回的子字符串将从 start 位置开始直到字符串结尾。

返回值

返回提取的子字符串, 或者在失败时返回 FALSE

<?php
header('concent-type:text/html;charset=utf-8');
$str='qwertyuioplkjhgfdsazxcvbnm0123456789';

$len=strlen($str);//获取字符串长度
$sjs='';
  //(substr($str,$rand,1))第一个参数是需要进行筛选的字符串
  // 第二个参数是进行筛选的起始位置,若第二个参数是负值,则从字符串的末端开始计算位置
  // 第三个参数(1)是从起始位置开始获取的个数为1,若为负值(-2),则是截止到该位置(从字符串末端-2)结束
for($i=0;$i<4;$i++){
  $rand=mt_rand(0,$len-1);//获取字符的总索引号,从中随机选取字符(0,35)
  $sjs=$sjs.substr($str,$rand,1);
  //在字符串中随机一个位置开始获取字符,获取的字符长度为1,赋值给一个空字符
  //循环4次,给$sjs字符赋值4次,获取4位随机数
  //每次赋值后$sjs的值都会加一个
}
echo $sjs;
<?php

 $str='我校经济贸易学院与石家庄顺捷财税咨询有限公司签订校企合作协议';
 $slen=mb_strlen($str,'utf8');
 if($slen<=10){
   echo $str;
 }else{
 echo mb_substr($str,0,10).'...';
 }	

猜你喜欢

转载自blog.csdn.net/qq_41939677/article/details/83899848