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 相关文章推荐
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
php使用date和strtotime函数输出指定日期的方法
Nov 14 PHP
PHP中通过fopen()函数访问远程文件示例
Nov 18 PHP
php利用cookie实现自动登录的方法
Dec 10 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
Mar 18 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
php的socket编程详解
Nov 20 PHP
THINKPHP3.2使用soap连接webservice的解决方法
Dec 13 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
Oct 08 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 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 取得瑞年与平年的天数的代码
2009/08/10 PHP
php去除数组中重复数据
2014/11/18 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
javascript中Object使用详解
2015/01/26 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
基于jquery实现五星好评
2017/11/18 jQuery
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
vue 子组件watch监听不到prop的解决
2020/08/09 Javascript
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
python中快速进行多个字符替换的方法小结
2016/12/15 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
Currentbody美国/加拿大:美容仪专家
2020/03/09 全球购物
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
SQL数据库笔试题
2016/03/08 面试题
《富饶的西沙群岛》教学反思
2014/04/09 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
银行给客户的感谢信
2015/01/23 职场文书
银行求职信怎么写
2019/06/20 职场文书
OpenCV实现反阈值二值化
2021/11/17 Java/Android