PHP之mb_substr使用
mb_substr
- (PHP 4 >= 4.0.6, PHP 5, PHP 7)
- mb_substr — Get part of string
- mb_substr — 获取部分字符串
Description
string mb_substr (
string $str ,
int $start [,
int $length = NULL [,
string $encoding = mb_internal_encoding() ]]
)
// Performs a multi-byte safe substr() operation based on number of characters. Position is counted from
// the beginning of str. First character's position is 0. Second character position is 1, and so on.
//根据字符数执行一个多字节安全的 substr() 操作。 位置是从 str 的开始位置进行计数。 第一个字符的位置是 0。第二个字符的位置是 1,以此类推。
Parameters
str
- The string to extract the substring from.
- 从该 string 中提取子字符串。
start
If start is non-negative, the returned string will start at the start'th position in str, counting from zero. For instance, in the string 'abcdef', the character at position 0 is 'a', the character at position 2 is 'c', and so forth.
如果 start 不是负数,返回的字符串会从 str 第 start 的位置开始,从 0 开始计数。举个例子,字符串 'abcdef',位置 0 的字符是 'a',位置 2 的字符是 'c',以此类推。
If start is negative, the returned string will start at the start'th character from the end of str.
如果 start 是负数,返回的字符串是从 str 末尾处第 start 个字符开始的。
length
- Maximum number of characters to use from str. If omitted or NULL is passed, extract all characters to the end of the string.
- str 中要使用的最大字符数。如果省略了此参数或者传入了 NULL,则会提取到字符串的尾部。
encoding
- The encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.
- encoding 参数为字符编码。如果省略,则使用内部字符编码。
Return Values
- mb_substr() returns the portion of str specified by the start and length parameters.
- mb_substr() 函数根据 start 和 length 参数返回 str 中指定的部分。
Changelog
- 5.4.8 - Passing NULL as length extracts all characters to the end of the string. Prior to this version NULL was treated the same as 0.
Examples
<?php
/**
* Created by PhpStorm.
* User: zhangrongxiang
* Date: 2018/1/30
* Time: 下午8:51
*/
$string = "0123456789你好";
/** start > 0 length > 0*/
$mystring = mb_substr( $string, 5, 1 );
echo $mystring . PHP_EOL; // 5
$mystring = mb_substr( $string, 5, 2 );
echo $mystring . PHP_EOL; // 56
$mystring = mb_substr( $string, 10, 2 );
echo $mystring . PHP_EOL; // 你好
/** start < 0 length > 0*/
$mystring = mb_substr( $string, - 2, 2 );
echo $mystring . PHP_EOL; // 你好
echo 'mb_strlen : ' . mb_strlen( $string ) . PHP_EOL;//12
$mystring = mb_substr( $string, - mb_strlen( $string ), 2 );
echo $mystring . PHP_EOL; // 01
$mystring = mb_substr( $string, - 3, 2 );
echo $mystring . PHP_EOL; // 9你
/** start > 0 length < 0*/
$mystring = mb_substr( $string, 5, - 1 );
echo $mystring . PHP_EOL; // 56789你
$mystring = mb_substr( $string, 0, - mb_strlen( $string ) + 1 );
echo $mystring . PHP_EOL; // 0
$mystring = mb_substr( $string, 5, - 5 );
echo $mystring . PHP_EOL; // 56
/** start < 0 length < 0*/
$mystring = mb_substr( $string, - 10, - 1 );
echo $mystring . PHP_EOL; // 23456789你
$mystring = mb_substr( $string, - 5, - 1 );
echo $mystring . PHP_EOL; // 789你
function mb_ucfirst( $str, $enc = 'utf-8' ) {
return mb_strtoupper( mb_substr( $str, 0, 1, $enc ), $enc ) . mb_substr( $str, 1, mb_strlen( $str, $enc ), $enc );
}
echo mb_ucfirst( "hello world 你好 中国" ) . PHP_EOL; //Hello world 你好 中国
/**
* @param $string
* @param string $encoding
*
* @return array
*/
function get_character_classes( $string, $encoding = "UTF-8" ) {
$current_encoding = mb_internal_encoding();
mb_internal_encoding( $encoding );
$has = array();
$stringlength = mb_strlen( $string, $encoding );
for ( $i = 0; $i < $stringlength; $i ++ ) {
$c = mb_substr( $string, $i, 1 );
if ( ( $c >= "0" ) && ( $c <= "9" ) ) {
$has['numeric'] = "numeric";
} else if ( ( $c >= "a" ) && ( $c <= "z" ) ) {
$has['alpha'] = "alpha";
$has['alphalower'] = 'alphalower';
} else if ( ( $c >= "A" ) && ( $c <= "Z" ) ) {
$has['alpha'] = "alpha";
$has['alphaupper'] = "alphaupper";
} else if ( ( $c == "$" ) || ( $c == "£" ) ) {
$has['currency'] = "currency";
} else if ( ( $c == "." ) && ( $has['decimal'] ) ) {
$has['decimals'] = "decimals";
} else if ( $c == "." ) {
$has['decimal'] = "decimal";
} else if ( $c == "," ) {
$has['comma'] = "comma";
} else if ( $c == "-" ) {
$has['dash'] = "dash";
} else if ( $c == " " ) {
$has['space'] = "space";
} else if ( $c == "/" ) {
$has['slash'] = "slash";
} else if ( $c == ":" ) {
$has['colon'] = "colon";
} else if ( ( $c >= " " ) && ( $c <= "~" ) ) {
$has['ascii'] = "ascii";
} else {
$has['binary'] = "binary";
}
}
mb_internal_encoding( $current_encoding );
return $has;
}
$string = "1234asdfA£^_{}|}~žščř";
foreach ( get_character_classes( $string ) as $k => $v ) {
echo $k . " : " . $v . PHP_EOL;
}
//numeric : numeric
//alpha : alpha
//alphalower : alphalower
//alphaupper : alphaupper
//currency : currency
//ascii : ascii
//binary : binary
文章参考
转载注明出处
PHP之mb_substr使用的更多相关文章
- substr mb_substr mbstrct 的用法区别
1.substr遇到中文会出问题,用于截取英文字符 2.mb_substr() 按字符截取字符串,需要开启php_mbstring.dll <?php echo mb_substr(, , 'u ...
- PHP截断函数mb_substr()详细介绍
[导读] 在php中mb_substr()函数是用来截中文与英文的函数,可以方便快速的解决截取指定字符长度的问题,下面我来给大家介绍介绍.提示:mb_substr在于php中是默认不被支持的我们需要在 ...
- PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
一.中文截取:mb_substr() mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $l ...
- PHP用substr截取字符串出现中文乱码问题用mb_substr
PHP用substr截取字符串出现中文乱码问题用mb_substr实例:mb_substr('截取中文乱码问题测试',0,5, 'utf-8'); 语法 : string substr (string ...
- PHP中英文字符串截取函数无乱码(mb_substr)和获取中英文字符串字数函数(mb_strlen)
mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $length,要截取的字数 $encod ...
- substr,mb_substr,iconv_substr,array_slice
通过一个例子来看其关系 /** +---------------------------------------------------------- * 字符串截取,支持中文和其他编码 +----- ...
- php substr,iconv_substr,mb_substr
php进行中文字符串的截取时,会经常用到二个函数iconv_substr和mb_substr,对这二个函数应该如何选择呢?参考下本文介绍的例子就明白了. 示例代码,用到了函数substr与iconv_ ...
- (转)PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
一.中文截取:mb_substr() mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $l ...
- (转载)PHP mb_substr函数在实际编码中的应用方法
(转载)http://developer.51cto.com/art/200912/166080.htm 我们在使用PHP语言进行实际编码中时,通常会遇到许多错误的出现,比如在截取字符串时会出现乱码等 ...
- (转载)PHP substr(),mb_substr()及mb_strcut的区别和用法
(转载)http://blog.csdn.net/alongken2005/article/details/7098506 PHP substr()函数可以 分割文字,但要分割的文字如果包括中文字符往 ...
随机推荐
- Postgresql 用户管理
一, 设置超级用户密码 1 修改 pg_hba.conf 使超级用户postgres 可以登录到数据库中 host all all 127.0.0.1/32 trust 2 修改 postgres ...
- Javascript设计模式理论与实战:桥接模式
桥接模式将抽象部分与实现部分分离开来,使两者都可以独立的变化,并且可以一起和谐地工作.抽象部分和实现部分都可以独立的变化而不会互相影响,降低了代码的耦合性,提高了代码的扩展性. 基本理论 桥接模式定义 ...
- SSH案例--入门级
1.项目功能展示 (1)注册 (2)修改地址与级别信息,点击修改 (3)再添加一位成员,进行删除 点击第二行的删除 (4)登录模块测试 输入数据库中没有的信息: 输入数据库中存在的信息: 2. W ...
- CHARPTER 3--INDEX DMVs
1.查找最重要的缺失的索引 --======================================================= --查找最重要的缺失的索引 ) DB_NAME() AS ...
- Impala源码之订阅发布系统的实现
本文由 网易云发布. 作者:冯宇 本篇文章仅限内部分享,如需转载,请联系网易获取授权. 本文是Impala源码笔记的第一篇,本文主要根据源代码学习一下statestored模块的实现,众所周知,Im ...
- kubectl get componentstatus ERROR:HTTP probe failed with statuscode: 503
通过kubectl命令可以查看k8s各组件的状态: [root@wecloud-test-k8s-1 ~]# kubectl get cs NAME STATUS MESSAGE ERROR cont ...
- Problem D: GJJ的日常之暴富梦(水题)
Contest - 河南省多校连萌(四) Problem D: GJJ的日常之暴富梦 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 693 Solve ...
- P4145 上帝造题的七分钟2
题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段数中每个数都开平方(下取整)的操作. 第三分钟,k说,要能查询,于是便有了求一段 ...
- Python读取mdb文件以及shell检测
最近写了两个python的脚本不过实际意义不是很大,就是想练练python写程序,一直研究web方面脚本写的少多了,还有C语言也用的少多了.现在有时间得多写写程序,别把以前学到的知识给忘了. 作者: ...
- 如何使用Node爬虫利器Puppteer进行自动化测试
文:华为云DevCloud 乐少 1.背景 1.1 前端自动化测试较少 前端浏览器众多导致页面兼容性问题比较多,另外界面变化比较快,一个月内可能页面改版两三次,这样导致对前端自动化测试较少,大家也不是 ...