Maison  >  Article  >  développement back-end  >  查找字符串中是否包含某些字符的函数strstr及其它

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

WBOY
WBOYoriginal
2016-07-25 09:05:271497parcourir
  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 = '/' . $needle . '/';
  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. ?>
复制代码


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn