php strstr查找字符串中是否包含某些字符的查找函數(shù)
strstr 定義和用法
語法
strstr(string,search,before_search)
參數(shù) | 描述 |
---|---|
string | 必需。規(guī)定被搜索的字符串。 |
search |
必需。規(guī)定所搜索的字符串。 如果此參數(shù)是數(shù)字,則搜索匹配此數(shù)字對應的 ASCII 值的字符。 |
before_search |
可選。默認值為 "false" 的布爾值。 如果設置為 "true",它將返回 search 參數(shù)第一次出現(xiàn)之前的字符串部分。 |
技術細節(jié)
返回值: | 返回字符串的剩余部分(從匹配點)。如果未找到所搜索的字符串,則返回 FALSE。 |
PHP 版本: | 4+ |
更新日志: | 在 PHP 5.3 中,新增了 before_search 參數(shù)。 |
更多實例
例子 1
以 "o" 的 ASCII 值搜索字符串,并返回字符串的剩余部分:
<?php echo strstr("Hello world!",111); ?>
返回
o world!
例子 2
返回 "world" 第一次出現(xiàn)之前的字符串部分:
<?php echo strstr("Hello world!","world",true);
結(jié)果:
Hello
例子3
查找 "Shanghai" 在 "I love Shanghai!" 中的第一次出現(xiàn),并返回字符串的剩余部分:
<?php echo strstr("I love Shanghai!","Shanghai"); ?>
結(jié)果:
Shanghai!
PHP 判斷字符串是否包含其它字符
以下幾個函數(shù)均可用來判斷某字符串是否包含另外一個字符串PHP 中判斷一個字符串是否包含其它字符是很常見的操作。 雖然很簡單,但還是寫了幾個函數(shù),質(zhì)量可能不是很高,權當鍛煉。 如果這幾個函數(shù)恰好能幫上你的忙,我將會很高興的。這幾個函數(shù)中,我比較喜歡第四個。。。
<?php /** * 以下幾個函數(shù)均可用來判斷某字符串是否包含另外一個字符串 * PHP 中判斷一個字符串是否包含其它字符是很常見的操作。 * 雖然很簡單,但還是寫了幾個函數(shù),質(zhì)量可能不是很高,權當鍛煉。 * 如果這幾個函數(shù)恰好能幫上你的忙,我將會很高興的。 */ /** * 利用一下 strpos() 函數(shù) * @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() 函數(shù) * @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的開始部分,那么該函數(shù)會返回int(0),那么0是false,但$b確實位于$a中,所以要用 !== 判斷一下類型,要確保是嚴格的 false。昨天晚上去中關村圖書大廈,看到一本書中用的是 strpos === true 來判斷,這是極其不正確的。。。
出錯的書為《PHP求職寶典》107頁(2012-02-26更新)
其它的還有 PHP 原生支持的函數(shù),如 strstr(),stristr() 等,直接判斷就可以了。
定義和用法
strstr() 函數(shù)搜索一個字符串在另一個字符串中的第一次出現(xiàn)。
該函數(shù)返回字符串的其余部分(從匹配點)。如果未找到所搜索的字符串,則返回 false。
語法
strstr(string,search)
參數(shù) 描述
string 必需。規(guī)定被搜索的字符串。
search 必需。規(guī)定所搜索的字符串。如果該參數(shù)是數(shù)字,則搜索匹配數(shù)字 ASCII 值的字符。
提示和注釋
注釋:該函數(shù)是二進制安全的。
注釋:該函數(shù)對大小寫敏感。如需進行大小寫不敏感的搜索,請使用 stristr()。
例子 1
<?php echo strstr("Hello world!","world"); ?>
//輸出:world!
例子 2
在本例中,我們將搜索 "o" 的 ASCII 值所代表的字符:
<?php echo strstr("Hello world!",111); ?>
//輸出:o world!
例子 3
<?php $email = 'admin@jb51.net'; $domain = strstr($email, '@'); echo $domain; // prints @jb51.net $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中是一些城市 格式是這樣的
廣州|深圳|汕頭|惠州|珠海|揭陽|佛山|河源|陽江|茂名|湛江|梅州|肇慶|韶關|潮州|東莞|中山|清遠|江門|汕尾|云浮|增城|從化|樂昌|南雄|臺山|開平|鶴山|恩平|廉江|雷州|吳川|高州|化州|高要|四會|興寧|陸豐|陽春|英德|連州|普寧|羅定|北京|天津|上海|重慶|烏魯木齊|克拉瑪依|石河子|阿拉爾|圖木舒克|五家渠|哈密|吐魯番|阿克蘇|喀什|和田|伊寧|塔城|阿勒泰|奎屯|博樂|昌吉|阜康|庫爾勒|阿圖什|烏蘇|拉薩|日喀則|銀川|石嘴山|吳忠|固原|中衛(wèi)|呼和浩特|包頭|烏海|赤峰|通遼|鄂爾多斯|呼倫貝爾|巴彥淖爾|烏蘭察布|霍林郭勒|滿洲里|牙克石|扎蘭屯|根河|額爾古納|豐鎮(zhèn)|錫林浩特|二連浩特|烏蘭浩特|
參考
<?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 ?>
注釋:該函數(shù)對大小寫敏感。如需進行不區(qū)分大小寫的搜索,請使用 stristr() 函數(shù)。
- PHP字符轉(zhuǎn)義相關函數(shù)小結(jié)(php下的轉(zhuǎn)義字符串)
- PHP 查找字符串常用函數(shù)介紹
- PHP 字符串正則替換函數(shù)preg_replace使用說明
- PHP字符串長度計算 - strlen()函數(shù)使用介紹
- 解析php獲取字符串的編碼格式的方法(函數(shù))
- PHP 將逗號、空格、回車分隔的字符串轉(zhuǎn)換為數(shù)組的函數(shù)
- PHP中常用的字符串格式化函數(shù)總結(jié)
- PHP開發(fā)中常用的字符串操作函數(shù)
- php 常用字符串函數(shù)總結(jié)
- 幾個有用的php字符串過濾,轉(zhuǎn)換函數(shù)代碼
- php字符串函數(shù) str類常見用法示例
相關文章
php 中的str_replace 函數(shù)總結(jié)
php 中的str_replace 函數(shù)總結(jié),方便大家實現(xiàn)字符串的替換。2007-04-04