详解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 相关文章推荐
BBS(php &amp; mysql)完整版(三)
Oct 09 PHP
php设计模式 Delegation(委托模式)
Jun 26 PHP
解析PHP可变函数的经典用法
Jun 20 PHP
php解析html类库simple_html_dom(详细介绍)
Jul 05 PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 PHP
php输入数据统一类实例
Feb 23 PHP
PHP中的魔术方法总结和使用实例
May 11 PHP
PHP简单生成缩略图相册的方法
Jul 29 PHP
php精确的统计在线人数的方法
Oct 21 PHP
PHP加密解密函数详解
Oct 28 PHP
php生成微信红包数组的方法
Sep 05 PHP
在laravel框架中实现封装公共方法全局调用
Oct 14 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仿ZOL分页类代码
2008/10/02 PHP
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
jquery easyui combox一些实用的小方法
2013/12/25 Javascript
对比分析AngularJS中的$http.post与jQuery.post的区别
2015/02/27 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
简单实现的JQuery文本框水印插件
2016/06/14 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
原生js实现查询天气小应用
2016/12/09 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
Angular 4.x中表单Reactive Forms详解
2017/04/25 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
利用python求相邻数的方法示例
2017/08/18 Python
python 阶乘累加和的实例
2019/02/01 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
Django解决frame拒绝问题的方法
2020/12/18 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
波兰购物网站:MALL.PL
2019/05/01 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
优秀应届本科生求职信
2014/07/19 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
python中tkinter复选框使用操作
2021/11/11 Python
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏