php中的字符串常用函数,php去掉字符串的末梢一个字符附substr

By admin in 4858.com on 2019年2月11日

//substr($str, startIndex, length)

//substr($str, startIndex, length)

取部份字符串。

后天项目中用到,去掉字符串中的最终一个字符
原字符串1,2,3,4,5,6,
免除最后一个字符”,”,最后结出为1,2,3,4,5,6
代码如下:

//截取方向都以从左向右的。

//截取方向都以从左向右的。

语法: string substr(string string, int start, int [length]);

复制代码 代码如下:

//length不写暗中同意截取到最后一个。

//length不写暗许截取到结尾一个。

返回值: 字符串

$str = “1,2,3,4,5,6,”;
$newstr = substr($str,0,strlen($str)-1);
echo $newstr;

//length为正是个数(包括开头的个数),为负是索引(如-2,表示截取到尾数第2个,重回的结果不包蕴-2上的字符)

//length为正是个数(包涵初始的个数),为负是索引(如-2,表示截取到尾数第2个,重回的结果不包蕴-2上的字符)

函数连串: 资料处理

解读: 采用php的substr()方法,
语法: string substr(string string, int start, int [length]);
参数1:原字符串;
参数2:切割的起首地方;
参数3:截取的长度;

//不管length为正表示个数,为负表示最终的目录,结果都席卷startIndex在的字符。

//不管length为正表示个数,为负表示最终的目录,结果都席卷startIndex在的字符。

故事情节表明

按那样来利用:
$newstr = substr($str,0,strlen($str)-1);
从伊始截取,一贯截取到尾数第一位,那样就把最后的”,”去掉了。

//注意startIndex从0开始.

//注意startIndex从0开始.

本函数将字符串 string 的第 start 位起的字符串取出 length 个字符。若
start 为负数,则从字符串尾端算起。若可粗略的参数 length
存在,但为负数,则象征取到尾数第 length 个字符。

系统自带的函数也可达成如此的效应,二种格局:
1) substr($str, 0, -1)
2)rtrim($str, “,”)

echo substr(‘abcdef’, -4);//start为-4就是4858.com ,从尾数第4个开头,直到最后。所以回来cdef

echo substr(‘abcdef’, -4);//start为-4就是从尾数第4个起来,直到最终。所以回来cdef

运用范例

substr
取部份字符串。
语法: string substr(string string, int start, int [length]);
返回值: 字符串
函数系列: 资料处理
内容表明
本函数将字符串 string 的第 start 位起的字符串取出 length 个字符。若
start 为负数,则从字符串尾端算起。若可概括的参数 length
存在,但为负数,则意味取到尾数第 length 个字符。
应用范例

echo ‘<br/>’;

echo ‘<br/>’;

 代码如下

复制代码 代码如下:

echo substr(‘abcdef’, 0);//start为0就是从第1个开始,abcdef

echo substr(‘abcdef’, 0);//start为0就是从第1个开始,abcdef

<?
echo substr(“abcdef”, 1, 3);  // 返回 “bcd”
echo substr(“abcdef”, -2);    // 返回 “ef”
echo substr(“abcdef”, -3, 1); // 返回 “d”
echo substr(“abcdef”, 1, -1); // 返回 “bcde”
?>

<?
echo substr(“abcdef”, 1, 3); // 返回 “bcd”
echo substr(“abcdef”, -2); // 返回 “ef”
echo substr(“abcdef”, -3, 1); // 返回 “d”
echo substr(“abcdef”, 1, -1); // 返回 “bcde”
?>

echo ‘<br/>’;

echo ‘<br/>’;

地点只协助英文不协助汉语

PHP rtrim() 函数
概念和用法
rtrim()
函数从字符串的背后初阶删除空白字符或其余预订义字符。同chop()函数。

echo substr(‘abcdef’, 1, 3);//从第2个开始的多少个字符,bcd

echo substr(‘abcdef’, 1, 3);//从第2个开始的多个字符,bcd

截取GB2312中文字符串

语法

php中的字符串常用函数,php去掉字符串的末梢一个字符附substr。echo ‘<br/>’;

echo ‘<br/>’;

 代码如下

参数 描述
string 必需。规定要转换的字符串。
charlist

可选。规定从字符串中删除哪些字符。

如果未设置该参数,则全部删除以下字符:

  • "\0" – ASCII 0, NULL
  • "\t" – ASCII 9, 制表符
  • "\n" – ASCII 10, 新行
  • "\x0B" – ASCII 11, 垂直制表符
  • "\r" – ASCII 13, 回车
  • " " – ASCII 32, 空格

echo substr(‘abcdef’, -3, 2);//从尾数第3个初阶的多个字符,de

echo substr(‘abcdef’, -3, 2);//从尾数第3个开头的三个字符,de

< ?php 
 //截取粤语字符串
 function mysubstr($str, $start, $len) {
     $tmpstr = “”;
     $strlen = $start + $len;
     for($i = 0; $i < $strlen; $i++) {
         if(ord(substr($str, $i, 1)) > 0xa0) {
             $tmpstr .= substr($str, $i, 2);
             $i++;
         } else
             $tmpstr .= substr($str, $i, 1);
     }
     return $tmpstr;
 }
 ?>

采取范例
4858.com 1

echo ‘<br/>’;

echo ‘<br/>’;

截取utf8编码的多字节字符串

你或者感兴趣的篇章:

  • 详解PHP用substr函数截取字符串中的某有些
  • PHP中substr函数字符串截取用法分析
  • PHP使用strstr()函数获取指定字符串后有着字符的点子
  • php字符串函数学习之substr()
  • php获取字符串前几位的实例(substr重返字符串的子串用法)

echo substr(‘abcdef’, -3, -2);//从尾数第3个起首,到尾数第四个,且不包括尾数第一个,d

echo substr(‘abcdef’, -3, -2);//从倒数第3个起来,到尾数首个,且不包蕴尾数第三个,d

 代码如下

 

 

< ?php
 //截取utf8字符串
 function utf8Substr($str, $from, $len)
 {
     return
preg_replace(‘#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,’.$from.’}’.
                       
‘((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,’.$len.’}).*#s’,
                        ‘$1’,$str);
 }
 ?>

/*
    * 功效: 功用跟substr一样,除了它不会造成乱码
    * 参数:
    * 返回:
    */
 

 代码如下

   function utf8_substr( $str , $start , $length=null ){
       
        // 先正常截取三次.
        $res = substr( $str , $start , $length );
        $strlen = strlen( $str );
       
        /* 接着判断头尾各6字节是不是完整(不残缺) */

        // 如若参数start是正数
        if ( $start >= 0 ){
            // 往前再截取大约6字节
            $next_start = $start + $length; // 开端地点
            $next_len = $next_start + 6 <= $strlen ? 6 : $strlen –
$next_start;
            $next_segm = substr( $str , $next_start , $next_len );

            // 若是第1字节就不是 完整字符的首字节, 再未来截取差不离6字节
            $prev_start = $start – 6 > 0 ? $start – 6 : 0;
            $prev_segm = substr( $str , $prev_start , $start –
$prev_start );
        }
        // start是负数
        else{
            // 往前再截取大致6字节
            $next_start = $strlen + $start + $length; // 开第四地点
            $next_len = $next_start + 6 <= $strlen ? 6 : $strlen –
$next_start;
            $next_segm = substr( $str , $next_start , $next_len );
           
            // 即便第1字节就不是 完整字符的首字节,
再未来截取大致6字节.
            $start = $strlen + $start;
            $prev_start = $start – 6 > 0 ? $start – 6 : 0;
            $prev_segm = substr( $str , $prev_start , $start –
$prev_start );
        }

        // 判断前6字节是还是不是适合utf8规则
        if ( preg_match( ‘@^([x80-xBF]{0,5})[xC0-xFD]?@’ ,
$next_segm , $bytes ) ){
            if ( !empty( $bytes[1] ) ){
                $bytes = $bytes[1];
                $res .= $bytes;
            }
        }

        // 判断后6字节是不是合乎utf8规则
        $ord0 = ord( $res[0] );
        if ( 128 <= $ord0 && 191 >= $ord0 ){
            // 将来截取 , 并加在res的前边.
            if ( preg_match( ‘@[xC0-xFD][x80-xBF]{0,5}$@’ ,
$prev_segm , $bytes ) ){
                if ( !empty( $bytes[0] ) ){
                    $bytes = $bytes[0];
                    $res = $bytes . $res;
                }
            }
        }

        return $res;
    }

测试数据::

 代码如下

<?php
    $str = ‘dfjdjf测13f试65&2数据fdj(1就mfe&……就’;
    var_dump( utf8_substr( $str , 22 , 12 ) );  echo ‘ <br />
‘;
    var_dump( utf8_substr( $str , 22 , -6 ) ); echo ‘ <br />
‘;
    var_dump( utf8_substr( $str , 9 , 12 ) ); echo ‘ <br /> ‘;
    var_dump( utf8_substr( $str , 19 , 12 ) ); echo ‘ <br />
‘;
    var_dump( utf8_substr( $str , 28 , -6 ) ); echo ‘ <br /> ‘;

来得结果::(截取无乱码, 欢迎大家测试, 提交bug)
string(12) “据fdj”
string(26) “据fdj(1就mfe&…”
string(13) “13f试65&2数”
string(12) “数据fd”
string(20) “dj(1就mfe&…”

把自个儿常用的享用出来

下边大家再来看中文截函数吧。

 代码如下

function MooCutstr($string, $length, $dot = ‘ …’) {
 global $charset;

 if(strlen($string) <= $length) {
  return $string;
 }
 $string = str_replace(array(‘&’, ‘"’, ‘<‘, ‘>’),
array(‘&’, ‘”‘, ‘<‘, ‘>’), $string);
 $strcut = ”;
 if(strtolower($charset) == ‘utf-8’) {
  $n = $tn = $noc = 0;
  while($n < strlen($string)) {
   $t = ord($string[$n]);
   if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
    $tn = 1; $n++; $noc++;
   } elseif (194 <= $t && $t <= 223) {
    $tn = 2; $n += 2; $noc += 2;
   } elseif (224 <= $t && $t < 239) {
    $tn = 3; $n += 3; $noc += 2;
   } elseif (240 <= $t && $t <= 247) {
    $tn = 4; $n += 4; $noc += 2;
   } elseif (248 <= $t && $t <= 251) {
    $tn = 5; $n += 5; $noc += 2;
   } elseif ($t == 252 || $t == 253) {
    $tn = 6; $n += 6; $noc += 2;
   } else {
    $n++;
   }
   if($noc >= $length) {
    break;
   }
  }
  if($noc > $length) {
   $n -= $tn;
  }
  $strcut = substr($string, 0, $n);
 } else {
  for($i = 0; $i < $length; $i++) {
   $strcut .= ord($string[$i]) > 127 ?
$string[$i].$string[++$i] : $string[$i];
  }
 }
 //$strcut = str_replace(array(‘&’, ‘”‘, ‘<‘, ‘>’),
array(‘&’, ‘"’, ‘<‘, ‘>’), $strcut);

 return $strcut.$dot;
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有