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

2018-10-15 17:26

阅读:435

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

$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() 函数。


评论


亲,登录后才可以留言!