php常用字符串查找函数strstr()与strpos()实例分析


Posted in PHP onJune 21, 2019

本文实例讲述了php常用字符串查找函数strstr()与strpos()。分享给大家供大家参考,具体如下:

一句话使用strpos判断 ===!==,这样才能达到预期的效果,性能要比strstr要好,只是判断是否包含某个字符串就用这个了。

string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )

1、$haystack被查找的字符串,$needle要查找的内容
2、如查找到则返回字符串的一部分,如没找到则返回FALSE
3、该函数区分大小写,如果想要不区分大小写,请使用 stristr()
4、如果你仅仅想确定needle是否存在于haystack中请使用速度更快、耗费内存更少的strpos()函数

<?php
 $email = 'name@example.com';
 $domain = strstr($email,'@');
 $name = strstr($email,'@',TRUE);
 $no_con = strstr($email,'99');
 echo $domain; //输出 @example.com
 echo $name;  //输出name 从 PHP 5.3.0 起
 var_dump($no_con); //如果没找到,则返回布尔值 FALSE
?>

运行结果:

@example.com
name
bool(false)

mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

1、$haystack被查找的字符串,$needle要查找的内容
2、返回 needle 在 haystack 中首次出现的数字位置
3、该函数区分大小写,如果想要不区分大小写,请使用 stripos()
4、返回值,如找到的话,返回needle 存在于 haystack 字符串起始的位置(注意字符串位置是从0开始,而不是从1开始),没找到则返回FALSE,但也可能返回等同于 FALSE 的非布尔值

<?php
 $mystring = 'abc' ;
 $findme = 'a' ;
 $pos = strpos($mystring,$findme);
 echo $pos; //输出0,既是当前a的位置
?>

运行结果:

0

这里2个比较相似的函数,在这里简单介绍下,只需记住有这个函数即可,用时简单看下手册。

1、strrpos(),计算指定字符串在目标字符串中最后一次出现的位置

实例1 使用 ===

<?php
$mystring = 'abc';
$findme  = 'a';
$pos = strpos($mystring, $findme);

// 注意这里使用的是 ===。简单的 == 不能像我们期待的那样工作,
// 因为 'a' 是第 0 位置上的(第一个)字符。
if ($pos === false) {
  echo "The string '$findme' was not found in the string '$mystring'";
} else {
  echo "The string '$findme' was found in the string '$mystring'";
  echo " and exists at position $pos";
}
?>

实例2 使用 !==

<?php
$mystring = 'abc';
$findme  = 'a';
$pos = strpos($mystring, $findme);

// 使用 !== 操作符。使用 != 不能像我们期待的那样工作,
// 因为 'a' 的位置是 0。语句 (0 != false) 的结果是 false。
if ($pos !== false) {
   echo "The string '$findme' was found in the string '$mystring'";
     echo " and exists at position $pos";
} else {
   echo "The string '$findme' was not found in the string '$mystring'";
}
?>

实例3 使用位置偏移量

<?php
// 忽视位置偏移量之前的字符进行查找
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a', 1); // $pos = 7, 不是 0
?>

注释
Note: 此函数可安全用于二进制对象。

2、strripos(),计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写)

总结:注意这几个函数如果没找到时则会返回FALSE,故在判断两边是否相等时候(if),注意两边的类型,以上几个函数,是在PHP中比较常用的字符串查找函数了,如需更强大功能的话,如邮箱、手机号的匹配、验证的话,则需借助正则表达式完成。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php仿discuz分页效果代码
Oct 02 PHP
PHP操作xml代码
Jun 17 PHP
php5 apache 2.2 webservice 创建与配置(java)
Jan 27 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 PHP
xss防御之php利用httponly防xss攻击
Mar 21 PHP
php使用$_POST或$_SESSION[]向js函数传参
Sep 16 PHP
php浏览历史记录的方法
Mar 10 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
Jun 08 PHP
thinkPHP实现基于ajax的评论回复功能
Jun 22 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
Jan 17 PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 06 PHP
php并发加锁问题分析与设计代码实例讲解
Feb 26 PHP
php精度计算的问题解析
Jun 21 #PHP
laravel异步监控定时调度器实例详解
Jun 21 #PHP
apache集成php7.3.5的详细步骤
Jun 20 #PHP
PHP基础之输出缓冲区基本概念、原理分析
Jun 19 #PHP
PHP进阶学习之Geo的地图定位算法详解
Jun 19 #PHP
PHP进阶学习之依赖注入与Ioc容器详解
Jun 19 #PHP
yii2 在控制器中验证请求参数的使用方法
Jun 19 #PHP
You might like
基于php-fpm的配置详解
2013/06/03 PHP
destoon之一键登录设置
2014/06/21 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
PHP整合七牛实现上传文件
2015/07/03 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
网页里控制图片大小的相关代码
2006/06/25 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
用jquery.sortElements实现table排序
2014/05/04 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
jQuery中的on与bind绑定事件区别实例详解
2017/02/28 Javascript
Angularjs使用过滤器完成排序功能
2017/09/20 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
webpack优化之代码分割与公共代码提取详解
2019/11/22 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
Python教程之全局变量用法
2016/06/27 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
django model object序列化实例
2020/03/13 Python
python适合做数据挖掘吗
2020/06/16 Python
详解Python流程控制语句
2020/10/28 Python
深入浅析HTML5中的article和section的区别
2018/05/15 HTML / CSS
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
Static Nested Class 和 Inner Class的不同
2013/11/28 面试题
动物科学专业毕业生的自我评价
2013/11/29 职场文书
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
文明寄语大全
2014/04/11 职场文书
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python