php strstr查找字符串中是否包含某些字符的查找函数


Posted in PHP onJune 03, 2010

strstr 定义和用法

注释:该函数是二进制安全的。

语法

strstr(string,search,before_search)

参数 描述
string 必需。规定被搜索的字符串。
search 必需。规定所搜索的字符串。 如果此参数是数字,则搜索匹配此数字对应的 ASCII 值的字符。
before_search 可选。默认值为 "false" 的布尔值。 如果设置为 "true",它将返回 search 参数第一次出现之前的字符串部分。

技术细节

返回值: 返回字符串的剩余部分(从匹配点)。如果未找到所搜索的字符串,则返回 FALSE。
PHP 版本: 4+
更新日志: 在 PHP 5.3 中,新增了 before_search 参数。

更多实例

例子 1

以 "o" 的 ASCII 值搜索字符串,并返回字符串的剩余部分:

<?php
echo strstr("Hello world!",111);
?>

返回

o world!

例子 2
返回 "world" 第一次出现之前的字符串部分:

<?php

echo strstr("Hello world!","world",true);

结果:

Hello

例子3

查找 "Shanghai" 在 "I love Shanghai!" 中的第一次出现,并返回字符串的剩余部分:

<?php
echo strstr("I love Shanghai!","Shanghai");
?>

 结果:

Shanghai!

PHP 判断字符串是否包含其它字符

以下几个函数均可用来判断某字符串是否包含另外一个字符串PHP 中判断一个字符串是否包含其它字符是很常见的操作。 虽然很简单,但还是写了几个函数,质量可能不是很高,权当锻炼。 如果这几个函数恰好能帮上你的忙,我将会很高兴的。这几个函数中,我比较喜欢第四个。。。

<?php 
/** 
* 以下几个函数均可用来判断某字符串是否包含另外一个字符串 
* PHP 中判断一个字符串是否包含其它字符是很常见的操作。 
* 虽然很简单,但还是写了几个函数,质量可能不是很高,权当锻炼。 
* 如果这几个函数恰好能帮上你的忙,我将会很高兴的。 
*/ 
/** 
* 利用一下 strpos() 函数 
* @param unknown_type $haystack 
* @param unknown_type $needle 
*/ 
function isInString1($haystack, $needle) { 
//防止$needle 位于开始的位置 
$haystack = '-_-!' . $haystack; 
return (bool)strpos($haystack, $needle); 
} 
/** 
* 利用字符串分割 
* @param unknown_type $haystack 
* @param unknown_type $needle 
*/ 
function isInString2($haystack, $needle) { 
$array = explode($needle, $haystack); 
return count($array) > 1; 
} 
/** 
* 用了一下正则,这种方法十分不建议,尤其是 $needle 中包含 
* 特殊字符,如 ^,$,/ 等等 
* @param unknown_type $haystack 
* @param unknown_type $needle 
*/ 
function isInString3($haystack, $needle) { 
$pattern = '/' . $needle . '/'; 
return (bool)preg_match($pattern, $haystack); 
} 
/** 
* 利用一下 strpos() 函数 
* @param unknown_type $haystack 
* @param unknown_type $needle 
*/ 
function isInString4($haystack, $needle) { 
return false !== strpos($haystack, $needle); 
} 
//测试 
$haystack = 'I am ITBDW'; 
$needle = 'IT'; 
var_dump(isInString1($haystack, $needle));

我觉得最简单的就是这种了 strpos($a, $b) !== false 如果$a 中存在 $b,则为 true ,否则为 false。
用 !== false (或者 === false) 的原因是如果 $b 正好位于$a的开始部分,那么该函数会返回int(0),那么0是false,但$b确实位于$a中,所以要用 !== 判断一下类型,要确保是严格的 false。昨天晚上去中关村图书大厦,看到一本书中用的是 strpos === true 来判断,这是极其不正确的。。。

出错的书为《PHP求职宝典》107页(2012-02-26更新)

其它的还有 PHP 原生支持的函数,如 strstr(),stristr() 等,直接判断就可以了。

定义和用法

strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。
该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。

语法
strstr(string,search)

参数 描述
string 必需。规定被搜索的字符串。
search 必需。规定所搜索的字符串。如果该参数是数字,则搜索匹配数字 ASCII 值的字符。

提示和注释
注释:该函数是二进制安全的。

注释:该函数对大小写敏感。如需进行大小写不敏感的搜索,请使用 stristr()。

例子 1

<?php 
echo strstr("Hello world!","world"); 
?>

//输出:world!

例子 2

在本例中,我们将搜索 "o" 的 ASCII 值所代表的字符:

<?php 
echo strstr("Hello world!",111); 
?>

//输出:o world!

例子 3

<?php 
$email = 'admin@3water.com'; 
$domain = strstr($email, '@'); 
echo $domain; // prints @3water.com 

$user = strstr($email, '@', true); // As of PHP 5.3.0 
echo $user; // prints admin 
?>
$city_str=fopen(cgi_path."/data/weather/city.dat","r"); 
$city_ch=fread($city_str,filesize(cgi_path."/data/weather/city.dat")); 
$city_ch_arr=explode("|",$city_ch); 
//如果能匹配到所在市 
if(strstr($area_ga,"市")){ 
foreach($city_ch_arr as $city_ch_arr_item){ 
if(@strstr($area_ga,$city_ch_arr_item)){ 
echo $area_ga.'<br>'; 
echo $city_ch_arr_item; 
$s_city=$city_ch_arr_item; 
} 
} 
} 
//如果找不到市 那么看看是不是能找到省 有时会有这样的情况:广东省长城宽带 这样的一律归属到该省省府 
elseif(strstr($area_ga,"河北")!==false){ 
$s_city="石家庄"; 
}elseif(strstr($area_ga,"福建")!==false){ 
$s_city="福州"; 
}elseif(strstr($area_ga,"台湾")!==false){ 
$s_city="台北"; 
}elseif(strstr($area_ga,"香港")!==false){ 
$s_city="香港"; 
}elseif(strstr($area_ga,"广西")!==false){ 
$s_city="南宁"; 
}elseif(strstr($area_ga,"浙江")!==false){ 
$s_city="杭州"; 
}elseif(strstr($area_ga,"江苏")!==false){ 
$s_city="南京"; 
}elseif(strstr($area_ga,"山东")!==false){ 
$s_city="济南"; 
}elseif(strstr($area_ga,"安徽")!==false){ 
$s_city="合肥"; 
}elseif(strstr($area_ga,"湖南")!==false){ 
$s_city="长沙"; 
}elseif(strstr($area_ga,"四川")!==false){ 
$s_city="成都"; 
}elseif(strstr($area_ga,"云南")!==false){ 
$s_city="昆明"; 
}elseif(strstr($area_ga,"广东")!==false){ 
$s_city="广州"; 
}elseif(strstr($area_ga,"贵州")!==false){ 
$s_city="贵阳"; 
}elseif(strstr($area_ga,"西藏")!==false){ 
$s_city="拉萨"; 
}elseif(strstr($area_ga,"新疆")!==false){ 
$s_city="乌鲁木齐"; 
}elseif(strstr($area_ga,"蒙古")!==false){ 
$s_city="呼和浩特"; 
}elseif(strstr($area_ga,"黑龙江")!==false){ 
$s_city="哈尔滨"; 
}elseif(strstr($area_ga,"辽宁")!==false){ 
$s_city="沈阳"; 
}elseif(strstr($area_ga,"吉林")!==false){ 
$s_city="长春"; 
}elseif(strstr($area_ga,"河南")!==false){ 
$s_city="郑州"; 
}elseif(strstr($area_ga,"湖北")!==false){ 
$s_city="武汉"; 
}elseif(strstr($area_ga,"山西")!==false){ 
$s_city="太原"; 
}elseif(strstr($area_ga,"陕西")!==false){ 
$s_city="西安"; 
}elseif(strstr($area_ga,"甘肃")!==false){ 
$s_city="兰州"; 
}elseif(strstr($area_ga,"宁夏")!==false){ 
$s_city="银川"; 
}elseif(strstr($area_ga,"海南")!==false){ 
$s_city="海口"; 
}elseif(strstr($area_ga,"江西")!==false){ 
$s_city="南昌"; 
}elseif(strstr($area_ga,"澳门")!==false){ 
$s_city="澳门"; 
} 
//如果都不存在 就是默认显示广州 比如本地机 
else{ 
$s_city="广州"; 
}

如上代码:
其中 city.dat中是一些城市 格式是这样的

广州|深圳|汕头|惠州|珠海|揭阳|佛山|河源|阳江|茂名|湛江|梅州|肇庆|韶关|潮州|东莞|中山|清远|江门|汕尾|云浮|增城|从化|乐昌|南雄|台山|开平|鹤山|恩平|廉江|雷州|吴川|高州|化州|高要|四会|兴宁|陆丰|阳春|英德|连州|普宁|罗定|北京|天津|上海|重庆|乌鲁木齐|克拉玛依|石河子|阿拉尔|图木舒克|五家渠|哈密|吐鲁番|阿克苏|喀什|和田|伊宁|塔城|阿勒泰|奎屯|博乐|昌吉|阜康|库尔勒|阿图什|乌苏|拉萨|日喀则|银川|石嘴山|吴忠|固原|中卫|呼和浩特|包头|乌海|赤峰|通辽|鄂尔多斯|呼伦贝尔|巴彦淖尔|乌兰察布|霍林郭勒|满洲里|牙克石|扎兰屯|根河|额尔古纳|丰镇|锡林浩特|二连浩特|乌兰浩特|

参考

<?php 
echo strstr('aaaaaaaaaaaboaaaaaaaaaaaaboxcccccccccbcccccccccccccc','box')."<br>\n"; 
//输出boxcccccccccbcccccccccccccc 
// 完整匹配中间的box 不因前而的b而停止 
echo strstr('aaaaaaAbaaa aaaa aaaaaaaaaboxccccccccccccboxccccccccccc','box')."<br>\n"; 
//输出boxccccccccccccboxccccccccccc 
// 有两个关键字时, 遇到第一个停止. 
echo strstr('Subscrtibe our to free newsletter about New Freew to','to')."<br>\n"; 
//输出to free newsletter about New Freew to 
?>

注释:该函数对大小写敏感。如需进行不区分大小写的搜索,请使用 stristr() 函数。

PHP 相关文章推荐
967 个函式
Oct 09 PHP
自己动手做一个SQL解释器
Oct 09 PHP
PHP和XSS跨站攻击的防范
Apr 17 PHP
php中的数组操作函数整理
Aug 18 PHP
php对大文件进行读取操作的实现代码
Jan 23 PHP
基于PHP文件操作的详解
Jun 05 PHP
php实现的替换敏感字符串类实例
Sep 22 PHP
Yii学习总结之数据访问对象 (DAO)
Feb 22 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
Sep 22 PHP
ThinkPHP框架分布式数据库连接方法详解
Mar 14 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
Apr 09 PHP
javascript 小型动画组件与实现代码
Jun 02 #PHP
php 验证码实例代码
Jun 01 #PHP
php trim 去除空字符的定义与语法介绍
May 31 #PHP
phpmyadmin 3.4 空密码登录的实现方法
May 29 #PHP
Discuz!下Memcache缓存实现方法
May 28 #PHP
备份mysql数据库的php代码(一个表一个文件)
May 28 #PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
May 27 #PHP
You might like
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
php共享内存段示例分享
2014/01/20 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
php实现简单加入购物车功能
2017/03/07 PHP
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
jquery eval解析JSON中的注意点介绍
2013/08/23 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
nodeJS模块简单用法示例
2018/04/21 NodeJs
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
vue观察模式浅析
2018/09/25 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
使用JS location实现搜索框历史记录功能
2019/12/23 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
2020/09/21 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
keras slice layer 层实现方式
2020/06/11 Python
python中如何写类
2020/06/29 Python
Html5页面获取微信公众号的openid的方法
2020/05/12 HTML / CSS
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
将一个文本文件的内容按倒序打印出来
2015/01/05 面试题
程序员岗位职责
2013/11/11 职场文书
建筑施工员岗位职责
2013/11/26 职场文书
主管会计岗位责任制
2014/02/10 职场文书
机关会计岗位职责
2014/04/08 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python
PHP遍历数组的6种方式总结
2021/11/17 PHP
Python OpenCV实现图像模板匹配详解
2022/04/07 Python