详解PHP中mb_strpos的使用


Posted in PHP onFebruary 04, 2018

mb_strpos

(PHP 4 >= 4.0.6, PHP 5, PHP 7)
mb_strpos — Find position of first occurrence of string in a string
mb_strpos — 查找字符串在另一个字符串中首次出现的位置

Description

int mb_strpos ( 
  string $haystack , 
  string $needle [, 
  int $offset = 0 [, 
  string $encoding = mb_internal_encoding() ]] 
  )
//Finds position of the first occurrence of a string in a string.
// 查找 string 在一个 string 中首次出现的位置。

//Performs a multi-byte safe strpos() operation based on number of characters. The first character's position is 0, the second character position is 1, and so on.
// 基于字符数执行一个多字节安全的 strpos() 操作。 第一个字符的位置是 0,第二个字符的位置是 1,以此类推。

Parameters

haystack

  • The string being checked.
  • 要被检查的 string。

needle

  • The string to find in haystack. In contrast with strpos(), numeric values are not applied as the ordinal value of a character.
  • 在 haystack 中查找这个字符串。 和 strpos() 不同的是,数字的值不会被当做字符的顺序值。

offset

  • The search offset. If it is not specified, 0 is used. A negative offset counts from the end of the string.
  • 搜索位置的偏移。如果没有提供该参数,将会使用 0。负数的 offset 会从字符串尾部开始统计。

encoding

  • The encoding parameter is the character encoding. If it is omitted, the internal character encoding value will be used.
  • encoding 参数为字符编码。如果省略,则使用内部字符编码。

Return Values

  • Returns the numeric position of the first occurrence of needle in the haystack string. If needle is not found, it returns FALSE.
  • 返回 string 的 haystack 中 needle 首次出现位置的数值。 如果没有找到 needle,它将返回 FALSE。

Example

<?php
/**
 * Created by PhpStorm.
 * User: zhangrongxiang
 * Date: 2018/2/2
 * Time: 下午11:16
 */

$str = "Hello World! Hello PHP";
$pos = mb_strpos( $str, "Hello", 0, mb_internal_encoding() );
echo $pos . PHP_EOL;//0
$pos = mb_strpos( $str, "Hello", 2, mb_internal_encoding() );
echo $pos . PHP_EOL;//13

function mb_str_replace( $haystack, $search, $replace, $offset = 0, $encoding = 'auto' ) {
  $len_sch = mb_strlen( $search, $encoding );
  $len_rep = mb_strlen( $replace, $encoding );
  
  while ( ( $offset = mb_strpos( $haystack, $search, $offset, $encoding ) ) !== false ) {
    $haystack = mb_substr( $haystack, 0, $offset, $encoding )
          . $replace
          . mb_substr( $haystack, $offset + $len_sch,
        $le = mb_strlen( $haystack ) - mb_strlen( $search ) + mb_strlen( $replace ),
        $encoding );
    //echo $le.PHP_EOL;
    $offset = $offset + $len_rep;
    if ( $offset > mb_strlen( $haystack, $encoding ) ) {
      break;
    }
  }
  
  return $haystack;
}

$replace = mb_str_replace( "hello world !hello world !hello world !hello world !", "hello", "hi" );
echo $replace . PHP_EOL; //hi world !hi world !hi world !hi world !

//hi PHP !hi PHP !hi PHP !hi PHP !
echo mb_str_replace( $replace, "world", "PHP" ) . PHP_EOL;
echo mb_str_replace( $replace, " ", "-" ) . PHP_EOL;

//PHP是世界上最好的语言??????
echo mb_str_replace( "PHP是世界上最好的语言??????", '?', '?', 0, mb_internal_encoding() ) . PHP_EOL;
echo mb_str_replace( "112233445566", '22', '00' ) . PHP_EOL;//110033445566
echo mb_str_replace( '????', '?', '?1', 2, mb_internal_encoding() ) . PHP_EOL;
echo mb_str_replace( '1111', '111', '0', 1 ) . PHP_EOL;//10
echo mb_strlen( '????' ) . PHP_EOL;//4

//代码开发代码
echo mb_str_replace( '软件开发软件', '软件', '代码' ,0,mb_internal_encoding()) . PHP_EOL;
//代码开发 //todo??
echo mb_str_replace( '软件开发软件', '软件', '代码' ) . PHP_EOL;
PHP 相关文章推荐
PHP中HTTP方式下的Gzip压缩传输方法举偶
Feb 15 PHP
PHP如何编写易读的代码
Jul 10 PHP
PHP MemCached 高级缓存应用代码
Aug 05 PHP
Mysql中分页查询的两个解决方法比较
May 02 PHP
php记录代码执行时间(实现代码)
Jul 05 PHP
PHP文件上传判断file是否己选择上传文件的方法
Nov 10 PHP
PHP模板引擎Smarty自定义变量调解器用法
Apr 11 PHP
CI框架数据库查询之join用法分析
May 18 PHP
PHP实现的简单适配器模式示例
Jun 22 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 PHP
php中使用array_filter()函数过滤数组实例讲解
Mar 03 PHP
详解PHP文件的自动加载(autoloading)
Feb 04 #PHP
PHP实现QQ登录的开原理和实现过程
Feb 04 #PHP
PHP实现正则表达式分组捕获操作示例
Feb 03 #PHP
php实现解析xml并生成sql语句的方法
Feb 03 #PHP
PHP删除数组中指定下标的元素方法
Feb 03 #PHP
php学习笔记之mb_strstr的基本使用
Feb 03 #PHP
php通过pecl方式安装扩展的实例讲解
Feb 02 #PHP
You might like
一个程序下载的管理程序(三)
2006/10/09 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
2014/12/17 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
更正确的asp冒泡排序
2007/05/24 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
基于Vue制作组织架构树组件
2017/12/06 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
vue.js学习笔记之v-bind和v-on解析
2018/05/03 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
Python Tkinter GUI编程入门介绍
2015/03/10 Python
详解Django通用视图中的函数包装
2015/07/21 Python
在Django中限制已登录用户的访问的方法
2015/07/23 Python
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
2018/10/21 Python
纯用NumPy实现神经网络的示例代码
2018/10/24 Python
python requests.post带head和body的实例
2019/01/02 Python
python 实现读取一个excel多个sheet表并合并的方法
2019/02/12 Python
Python多线程及其基本使用方法实例分析
2019/10/29 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
django使用多个数据库的方法实例
2021/03/04 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
车队司机个人自我鉴定
2014/04/17 职场文书
小学语文业务学习材料
2014/06/02 职场文书
春秋淹城导游词
2015/02/11 职场文书
上诉状格式
2015/05/23 职场文书
校长新学期致辞
2015/07/30 职场文书
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL