详解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和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 PHP
php实现倒计时效果
Dec 19 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
PhpStorm terminal无法输入命令的解决方法
Oct 09 PHP
php判断是否连接上网络的方法实例详解
Dec 14 PHP
php简单生成一组与多组随机字符串的方法
May 09 PHP
Laravel5.5新特性之友好报错以及展示详解
Aug 13 PHP
php菜单/评论数据递归分级算法的实现方法
Aug 01 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
Sep 19 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
PHP实现文件安全下载
2006/10/09 PHP
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
Prototype的Class.create函数解析
2011/09/22 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
JQuery中dataGrid设置行的高度示例代码
2014/01/03 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
2017/03/15 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
AngularJS 支付倒计时功能实现思路
2017/06/05 Javascript
Bootstrap图片轮播效果详解
2017/10/17 Javascript
详解Webpack loader 之 file-loader
2018/11/07 Javascript
VUE写一个简单的表格实例
2019/08/06 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
详细分析Python垃圾回收机制
2020/07/01 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
校友会欢迎辞
2014/01/13 职场文书
十佳青年个人事迹材料
2014/01/28 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
个人自荐材料
2014/05/23 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
升学宴来宾致辞
2015/07/27 职场文书