• 技术文章 >后端开发 >php教程

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

    2016-07-25 09:05:27原创615
    1. /**
    2. * 以下几个函数均可用来判断某字符串是否包含另外一个字符串
    3. * PHP 中判断一个字符串是否包含其它字符是很常见的操作。
    4. * 如果这几个函数恰好能帮上你的忙,我将会很高兴的。
    5. */
    6. /**
    7. * 利用一下 strpos() 函数
    8. * @param unknown_type $haystack
    9. * @param unknown_type $needle
    10. * @link jbxue.com
    11. */
    12. function isInString1($haystack, $needle) {
    13. //防止$needle 位于开始的位置
    14. $haystack = '-_-!' . $haystack;
    15. return (bool)strpos($haystack, $needle);
    16. }
    17. /**
    18. * 利用字符串分割
    19. * @param unknown_type $haystack
    20. * @param unknown_type $needle
    21. */
    22. function isInString2($haystack, $needle) {
    23. $array = explode($needle, $haystack);
    24. return count($array) > 1;
    25. }
    26. /**
    27. * 用了一下正则,这种方法十分不建议,尤其是 $needle 中包含
    28. * 特殊字符,如 ^,$,/ 等等
    29. * @param unknown_type $haystack
    30. * @param unknown_type $needle
    31. */
    32. function isInString3($haystack, $needle) {
    33. $pattern = '//m.sbmmt.com/m/' . $needle . '//m.sbmmt.com/m/';
    34. return (bool)preg_match($pattern, $haystack);
    35. }
    36. /**
    37. * 利用一下 strpos() 函数
    38. * @param unknown_type $haystack
    39. * @param unknown_type $needle
    40. */
    41. function isInString4($haystack, $needle) {
    42. return false !== strpos($haystack, $needle);
    43. }
    44. //测试
    45. $haystack = 'I am ITBDW';
    46. $needle = 'IT';
    47. 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:

    1. echo strstr("Hello world!","world");
    2. ?>
    复制代码

    //输出:world!

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

    1. echo strstr("Hello world!",111);
    2. ?>
    复制代码

    //输出:o world!

    例3:

    1. $email = 'admin@jbxue.com';

    2. $domain = strstr($email, '@');
    3. echo $domain; // prints @jbxue.com

    4. $user = strstr($email, '@', true); // As of PHP 5.3.0

    5. echo $user; // prints admin
    6. ?>
    复制代码

    1. $city_str=fopen(cgi_path."/data/weather/city.dat","r");

    2. $city_ch=fread($city_str,filesize(cgi_path."/data/weather/city.dat"));
    3. $city_ch_arr=explode("|",$city_ch);
    4. //如果能匹配到所在市
    5. if(strstr($area_ga,"市")){
    6. foreach($city_ch_arr as $city_ch_arr_item){
    7. if(@strstr($area_ga,$city_ch_arr_item)){
    8. echo $area_ga.'
      ';
    9. echo $city_ch_arr_item;
    10. $s_city=$city_ch_arr_item;
    11. }
    12. }
    13. }
    14. //如果找不到市 那么看看是不是能找到省 有时会有这样的情况:广东省长城宽带 这样的一律归属到该省省府
    15. elseif(strstr($area_ga,"河北")!==false){
    16. $s_city="石家庄";
    17. }elseif(strstr($area_ga,"福建")!==false){
    18. $s_city="福州";
    19. }elseif(strstr($area_ga,"台湾")!==false){
    20. $s_city="台北";
    21. }elseif(strstr($area_ga,"香港")!==false){
    22. $s_city="香港";
    23. }elseif(strstr($area_ga,"广西")!==false){
    24. $s_city="南宁";
    25. }elseif(strstr($area_ga,"浙江")!==false){
    26. $s_city="杭州";
    27. }elseif(strstr($area_ga,"江苏")!==false){
    28. $s_city="南京";
    29. }elseif(strstr($area_ga,"山东")!==false){
    30. $s_city="济南";
    31. }elseif(strstr($area_ga,"安徽")!==false){
    32. $s_city="合肥";
    33. }elseif(strstr($area_ga,"湖南")!==false){
    34. $s_city="长沙";
    35. }elseif(strstr($area_ga,"四川")!==false){
    36. $s_city="成都";
    37. }elseif(strstr($area_ga,"云南")!==false){
    38. $s_city="昆明";
    39. }elseif(strstr($area_ga,"广东")!==false){
    40. $s_city="广州";
    41. }elseif(strstr($area_ga,"贵州")!==false){
    42. $s_city="贵阳";
    43. }elseif(strstr($area_ga,"西藏")!==false){
    44. $s_city="拉萨";
    45. }elseif(strstr($area_ga,"新疆")!==false){
    46. $s_city="乌鲁木齐";
    47. }elseif(strstr($area_ga,"蒙古")!==false){
    48. $s_city="呼和浩特";
    49. }elseif(strstr($area_ga,"黑龙江")!==false){
    50. $s_city="哈尔滨";
    51. }elseif(strstr($area_ga,"辽宁")!==false){
    52. $s_city="沈阳";
    53. }elseif(strstr($area_ga,"吉林")!==false){
    54. $s_city="长春";
    55. }elseif(strstr($area_ga,"河南")!==false){
    56. $s_city="郑州";
    57. }elseif(strstr($area_ga,"湖北")!==false){
    58. $s_city="武汉";
    59. }elseif(strstr($area_ga,"山西")!==false){
    60. $s_city="太原";
    61. }elseif(strstr($area_ga,"陕西")!==false){
    62. $s_city="西安";
    63. }elseif(strstr($area_ga,"甘肃")!==false){
    64. $s_city="兰州";
    65. }elseif(strstr($area_ga,"宁夏")!==false){
    66. $s_city="银川";
    67. }elseif(strstr($area_ga,"海南")!==false){
    68. $s_city="海口";
    69. }elseif(strstr($area_ga,"江西")!==false){
    70. $s_city="南昌";
    71. }elseif(strstr($area_ga,"澳门")!==false){
    72. $s_city="澳门";
    73. }
    74. //如果都不存在 就是默认显示广州 比如本地机
    75. else{
    76. $s_city="广州";
    77. }

    复制代码

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

    参考

    1. echo strstr('aaaaaaaaaaaboaaaaaaaaaaaaboxcccccccccbcccccccccccccc','box')."
      \n";
    2. //输出boxcccccccccbcccccccccccccc
    3. // 完整匹配中间的box 不因前而的b而停止
    4. echo strstr('aaaaaaAbaaa aaaa aaaaaaaaaboxccccccccccccboxccccccccccc','box')."
      \n";
    5. //输出boxccccccccccccboxccccccccccc
    6. // 有两个关键字时, 遇到第一个停止.
    7. echo strstr('Subscrtibe our to free newsletter about New Freew to','to')."
      \n";
    8. //输出to free newsletter about New Freew to
    9. ?>
    复制代码
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:查找字符串中是否包含某些字符的函数strstr及其它
    上一篇:替换超长文本中的特殊字符的php代码 下一篇:学习php中时间戳和日期格式的转换
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• PHP面试之常见基础算法(附代码示例)• php语言中使用json的技巧及json的实现代码详解_php实例• PHP的cURL库简介及使用示例_php实例• PHP中数据库单例模式的实现代码分享_php实例• 用PHP+MySQL搭建聊天室功能实例代码_php实例
    1/1

    PHP中文网