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 相关文章推荐
PHP4之COOKIE支持详解
Oct 09 PHP
使用 MySQL Date/Time 类型
Mar 26 PHP
destoon之一键登录设置
Jun 21 PHP
php中getservbyport与getservbyname函数用法实例
Nov 18 PHP
php实现统计目录文件大小的函数
Dec 25 PHP
php制作简单模版引擎
Apr 07 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
Aug 01 PHP
ThinkPHP实现图片上传操作的方法详解
May 08 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
PHP压缩图片功能的介绍
Mar 21 PHP
php 的多进程操作实践案例分析
Feb 28 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
Mar 02 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 socket客户端及服务器端应用实例
2014/07/04 PHP
ThinkPHP 表单自动验证运用示例
2014/10/13 PHP
PHP对象实例化单例方法
2017/01/19 PHP
代码生成器 document.write()
2007/04/15 Javascript
关于JavaScript的面向对象和继承有利新手学习
2013/01/11 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
javascript实现一个网页加载进度loading
2017/01/04 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
Python牛刀小试密码爆破
2011/02/03 Python
浅谈五大Python Web框架
2017/03/20 Python
彻底理解Python list切片原理
2017/10/27 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
Django Rest framework权限的详细用法
2019/07/25 Python
Python ORM编程基础示例
2020/02/02 Python
python实现定时发送邮件到指定邮箱
2020/12/23 Python
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
翻译专业应届生求职信
2013/11/23 职场文书
毕业生个人求职信范例分享
2013/12/17 职场文书
2014小学语文教学工作总结
2014/12/17 职场文书
人事局接收函
2015/01/31 职场文书
导游词之永济鹳雀楼
2020/01/16 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python
python ConfigParser库的使用及遇到的坑
2022/02/12 Python