首頁  >  文章  >  後端開發  >  尋找字串中是否包含某些字元的函數strstr及其它

尋找字串中是否包含某些字元的函數strstr及其它

WBOY
WBOY原創
2016-07-25 09:05:271500瀏覽
  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,dle = 'IT';
var_dump(isInString1($haystack,dle, $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);
?>
複製程式碼

//輸出: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. elseif(strstr($area_ga,"河北")!= =false){
  14. $s_city="石家莊";
  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. }
  72. //如果都不存在就是預設顯示廣州例如本地
  73. else{
  74. $s_city="廣州";
  75. }
複製程式碼

如上程式碼: 其中 city.dat中是一些城市,格式類似這樣: 廣州|深圳|汕頭|惠州|珠海|揭陽|佛山|河源|陽江|茂名|湛江|梅州|肇慶|韶關|潮州|東莞|中山|清遠|江門|汕尾|雲浮|增城|從化|樂昌。雄|台山|開平|鶴山|恩平|廉江|雷州|吳川|高州|化州|高要|四會|興寧|陸豐|陽春|英德|連州|普寧|羅定|北京|天津|上海|重慶|烏魯木齊|克拉瑪依|石河子|阿拉爾|圖木舒克|五家渠|哈密|吐魯番|阿克蘇|喀什|和田|伊寧|塔城|阿勒泰|奎屯|博樂|阿克斯|阜康昌吉|阜康昌吉| |庫爾勒|阿圖什|烏蘇|拉薩|日喀則|銀川|石嘴山|吳忠|固原|中衛|呼和浩特|包頭|烏海|赤峰|通遼|鄂爾多斯|呼倫貝爾|巴彥淖爾|烏蘭察布|霍林|鄂爾多斯|呼倫貝爾|巴彥淖爾|烏蘭察布|霍林|鄂爾多斯|呼倫貝爾|巴彥淖爾|烏蘭察布|霍林郭勒|滿洲里|牙克石|扎蘭屯|根河|額爾古納|豐鎮|錫林浩特|二連浩特|烏蘭浩特|

參考

  1. echo strstr('aaaaaaaaaaaboaaaaaaaaaa
  2. // 完整配對中間的box 不因前而的b而停止
  3. echo strstr('aaaaaaAbaaa aaaa aaaaaaaaaboxccccccccccccccboxccccccccccccc','box')."
    n";
  4. //輸出cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 🎜>// 有兩個關鍵字時, 遇到第一個停止. ​​
  5. echo strstr('Subscrtibe our to free newsletter about New Freew to','to')."
    n";
  6. //輸出to free newsletter about New Freew to
  7. ?>
複製程式碼
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn