php strstr查找字符串中是否包含某些字符的查找函數(shù)
strstr 定義和用法
語(yǔ)法
strstr(string,search,before_search)
參數(shù) | 描述 |
---|---|
string | 必需。規(guī)定被搜索的字符串。 |
search |
必需。規(guī)定所搜索的字符串。 如果此參數(shù)是數(shù)字,則搜索匹配此數(shù)字對(duì)應(yīng)的 ASCII 值的字符。 |
before_search |
可選。默認(rèn)值為 "false" 的布爾值。 如果設(shè)置為 "true",它將返回 search 參數(shù)第一次出現(xiàn)之前的字符串部分。 |
技術(shù)細(xì)節(jié)
返回值: | 返回字符串的剩余部分(從匹配點(diǎn))。如果未找到所搜索的字符串,則返回 FALSE。 |
PHP 版本: | 4+ |
更新日志: | 在 PHP 5.3 中,新增了 before_search 參數(shù)。 |
更多實(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 判斷字符串是否包含其它字符
以下幾個(gè)函數(shù)均可用來(lái)判斷某字符串是否包含另外一個(gè)字符串PHP 中判斷一個(gè)字符串是否包含其它字符是很常見(jiàn)的操作。 雖然很簡(jiǎn)單,但還是寫(xiě)了幾個(gè)函數(shù),質(zhì)量可能不是很高,權(quán)當(dāng)鍛煉。 如果這幾個(gè)函數(shù)恰好能幫上你的忙,我將會(huì)很高興的。這幾個(gè)函數(shù)中,我比較喜歡第四個(gè)。。。
<?php /** * 以下幾個(gè)函數(shù)均可用來(lái)判斷某字符串是否包含另外一個(gè)字符串 * PHP 中判斷一個(gè)字符串是否包含其它字符是很常見(jiàn)的操作。 * 雖然很簡(jiǎn)單,但還是寫(xiě)了幾個(gè)函數(shù),質(zhì)量可能不是很高,權(quán)當(dāng)鍛煉。 * 如果這幾個(gè)函數(shù)恰好能幫上你的忙,我將會(huì)很高興的。 */ /** * 利用一下 strpos() 函數(shù) * @param unknown_type $haystack * @param unknown_type $needle */ function isInString1($haystack, $needle) { //防止$needle 位于開(kāi)始的位置 $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); } //測(cè)試 $haystack = 'I am ITBDW'; $needle = 'IT'; var_dump(isInString1($haystack, $needle));
我覺(jué)得最簡(jiǎn)單的就是這種了 strpos($a, $b) !== false 如果$a 中存在 $b,則為 true ,否則為 false。
用 !== false (或者 === false) 的原因是如果 $b 正好位于$a的開(kāi)始部分,那么該函數(shù)會(huì)返回int(0),那么0是false,但$b確實(shí)位于$a中,所以要用 !== 判斷一下類型,要確保是嚴(yán)格的 false。昨天晚上去中關(guān)村圖書(shū)大廈,看到一本書(shū)中用的是 strpos === true 來(lái)判斷,這是極其不正確的。。。
出錯(cuò)的書(shū)為《PHP求職寶典》107頁(yè)(2012-02-26更新)
其它的還有 PHP 原生支持的函數(shù),如 strstr(),stristr() 等,直接判斷就可以了。
定義和用法
strstr() 函數(shù)搜索一個(gè)字符串在另一個(gè)字符串中的第一次出現(xiàn)。
該函數(shù)返回字符串的其余部分(從匹配點(diǎn))。如果未找到所搜索的字符串,則返回 false。
語(yǔ)法
strstr(string,search)
參數(shù) 描述
string 必需。規(guī)定被搜索的字符串。
search 必需。規(guī)定所搜索的字符串。如果該參數(shù)是數(shù)字,則搜索匹配數(shù)字 ASCII 值的字符。
提示和注釋
注釋:該函數(shù)是二進(jìn)制安全的。
注釋:該函數(shù)對(duì)大小寫(xiě)敏感。如需進(jìn)行大小寫(xiě)不敏感的搜索,請(qǐng)使用 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; } } } //如果找不到市 那么看看是不是能找到省 有時(shí)會(huì)有這樣的情況:廣東省長(zhǎng)城寬帶 這樣的一律歸屬到該省省府 elseif(strstr($area_ga,"河北")!==false){ $s_city="石家莊"; }elseif(strstr($area_ga,"福建")!==false){ $s_city="福州"; }elseif(strstr($area_ga,"臺(tái)灣")!==false){ $s_city="臺(tái)北"; }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="濟(jì)南"; }elseif(strstr($area_ga,"安徽")!==false){ $s_city="合肥"; }elseif(strstr($area_ga,"湖南")!==false){ $s_city="長(zhǎng)沙"; }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="貴陽(yáng)"; }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="沈陽(yáng)"; }elseif(strstr($area_ga,"吉林")!==false){ $s_city="長(zhǎng)春"; }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,"澳門(mén)")!==false){ $s_city="澳門(mén)"; } //如果都不存在 就是默認(rèn)顯示廣州 比如本地機(jī) else{ $s_city="廣州"; }
如上代碼:
其中 city.dat中是一些城市 格式是這樣的
廣州|深圳|汕頭|惠州|珠海|揭陽(yáng)|佛山|河源|陽(yáng)江|茂名|湛江|梅州|肇慶|韶關(guān)|潮州|東莞|中山|清遠(yuǎn)|江門(mén)|汕尾|云浮|增城|從化|樂(lè)昌|南雄|臺(tái)山|開(kāi)平|鶴山|恩平|廉江|雷州|吳川|高州|化州|高要|四會(huì)|興寧|陸豐|陽(yáng)春|英德|連州|普寧|羅定|北京|天津|上海|重慶|烏魯木齊|克拉瑪依|石河子|阿拉爾|圖木舒克|五家渠|哈密|吐魯番|阿克蘇|喀什|和田|伊寧|塔城|阿勒泰|奎屯|博樂(lè)|昌吉|阜康|庫(kù)爾勒|阿圖什|烏蘇|拉薩|日喀則|銀川|石嘴山|吳忠|固原|中衛(wèi)|呼和浩特|包頭|烏海|赤峰|通遼|鄂爾多斯|呼倫貝爾|巴彥淖爾|烏蘭察布|霍林郭勒|滿洲里|牙克石|扎蘭屯|根河|額爾古納|豐鎮(zhèn)|錫林浩特|二連浩特|烏蘭浩特|
參考
<?php echo strstr('aaaaaaaaaaaboaaaaaaaaaaaaboxcccccccccbcccccccccccccc','box')."<br>\n"; //輸出boxcccccccccbcccccccccccccc // 完整匹配中間的box 不因前而的b而停止 echo strstr('aaaaaaAbaaa aaaa aaaaaaaaaboxccccccccccccboxccccccccccc','box')."<br>\n"; //輸出boxccccccccccccboxccccccccccc // 有兩個(gè)關(guān)鍵字時(shí), 遇到第一個(gè)停止. echo strstr('Subscrtibe our to free newsletter about New Freew to','to')."<br>\n"; //輸出to free newsletter about New Freew to ?>
注釋:該函數(shù)對(duì)大小寫(xiě)敏感。如需進(jìn)行不區(qū)分大小寫(xiě)的搜索,請(qǐng)使用 stristr() 函數(shù)。
- PHP字符轉(zhuǎn)義相關(guān)函數(shù)小結(jié)(php下的轉(zhuǎn)義字符串)
- PHP 查找字符串常用函數(shù)介紹
- PHP 字符串正則替換函數(shù)preg_replace使用說(shuō)明
- PHP字符串長(zhǎng)度計(jì)算 - strlen()函數(shù)使用介紹
- 解析php獲取字符串的編碼格式的方法(函數(shù))
- PHP 將逗號(hào)、空格、回車(chē)分隔的字符串轉(zhuǎn)換為數(shù)組的函數(shù)
- PHP中常用的字符串格式化函數(shù)總結(jié)
- PHP開(kāi)發(fā)中常用的字符串操作函數(shù)
- php 常用字符串函數(shù)總結(jié)
- 幾個(gè)有用的php字符串過(guò)濾,轉(zhuǎn)換函數(shù)代碼
- php字符串函數(shù) str類常見(jiàn)用法示例
相關(guān)文章
PHP與javascript對(duì)多項(xiàng)選擇的處理
PHP與javascript對(duì)多項(xiàng)選擇的處理...2006-10-10PHP初學(xué)者常見(jiàn)問(wèn)題集合 修正版(21問(wèn)答)
PHP初學(xué)者常見(jiàn)問(wèn)題集合 修正了網(wǎng)上傳播的一些細(xì)節(jié)錯(cuò)誤;。2010-03-03php 中的str_replace 函數(shù)總結(jié)
php 中的str_replace 函數(shù)總結(jié),方便大家實(shí)現(xiàn)字符串的替換。2007-04-04