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 相关文章推荐
Apache+php+mysql在windows下的安装与配置图解(最新版)
Nov 30 PHP
php 数据库字段复用的基本原理与示例
Jul 22 PHP
php中get_headers函数的作用及用法的详细介绍
Apr 27 PHP
php的zip解压缩类pclzip使用示例
Mar 14 PHP
ThinkPHP的I方法使用详解
Jun 18 PHP
PHP内存缓存Memcached类实例
Dec 08 PHP
PHP获取数组的键与值方法小结
Jun 13 PHP
php+webSoket实现聊天室示例代码(附源码)
Feb 17 PHP
php实现数据库的增删改查
Feb 26 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
PHP实现正则表达式分组捕获操作示例
Feb 03 PHP
php+js实现点赞功能的示例详解
Aug 07 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 读取shell管道传输过来的内容
2010/03/01 PHP
php自定义函数之递归删除文件及目录
2010/08/08 PHP
深入PHP与浏览器缓存的分析
2013/06/03 PHP
PHP准确取得服务器IP地址的方法
2015/06/02 PHP
PHP微信模板消息操作示例
2017/06/29 PHP
详解PHP变量传值赋值和引用赋值变量销毁
2019/03/23 PHP
jQuery 数据缓存data(name, value)详解及实现
2010/01/04 Javascript
jquery 事件对象属性小结
2010/04/27 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
javascript实现拖放效果
2015/12/16 Javascript
JS中对象与字符串的互相转换详解
2016/05/20 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
ptyhon实现sitemap生成示例
2014/03/30 Python
解读! Python在人工智能中的作用
2017/11/14 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
2019/04/02 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
pygame实现弹球游戏
2020/04/14 Python
pycharm导入源码的具体步骤
2020/08/04 Python
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
《秋游》教学反思
2014/04/24 职场文书
简单租房协议书范本
2014/08/20 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书
如何使用Tkinter进行窗口的管理与设置
2021/06/30 Python