扣丁學(xué)堂淺談php strstr查找字符串中是否包含某些字符的查找函數(shù)
2018-01-04 13:57:02
1432瀏覽
首先strstr()函數(shù)的作用是:返回一個字符串在另一個字符串中首次出現(xiàn)的位置到后者末尾的子字符串(大小寫敏感),以下幾個函數(shù)均可用來判斷某字符串是否包含另外一個字符串PHP中判斷一個字符串是否包含其它字符是很常見的操作。雖然很簡單,但還是寫了幾個函數(shù),質(zhì)量可能不是很高,權(quán)當(dāng)鍛煉。下面我們一起來看一下吧。
/**
*以下幾個函數(shù)均可用來判斷某字符串是否包含另外一個字符串
*PHP中判斷一個字符串是否包含其它字符是很常見的操作。
*雖然很簡單,但還是寫了幾個函數(shù),質(zhì)量可能不是很高,權(quán)當(dāng)鍛煉。
*如果這幾個函數(shù)恰好能幫上你的忙,我將會很高興的。
*/
/**
*利用一下strpos()函數(shù)
*@paramunknown_type$haystack
*@paramunknown_type$needle
*/
functionisInString1($haystack,$needle){
//防止$needle位于開始的位置
$haystack='-_-!'.$haystack;
return(bool)strpos($haystack,$needle);
}
/**
*利用字符串分割
*@paramunknown_type$haystack
*@paramunknown_type$needle
*/
functionisInString2($haystack,$needle){
$array=explode($needle,$haystack);
returncount($array)>1;
}
/**
*用了一下正則,這種方法十分不建議,尤其是$needle中包含
*特殊字符,如^,$,/等等
*@paramunknown_type$haystack
*@paramunknown_type$needle
*/
functionisInString3($haystack,$needle){
$pattern='/'.$needle.'/';
return(bool)preg_match($pattern,$haystack);
}
/**
*利用一下strpos()函數(shù)
*@paramunknown_type$haystack
*@paramunknown_type$needle
*/
functionisInString4($haystack,$needle){
returnfalse!==strpos($haystack,$needle);
}
//測試
$haystack='IamITBDW';
$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中,所以要用!==判斷一下類型,要確保是嚴(yán)格的false。昨天晚上去中關(guān)村圖書大廈,看到一本書中用的是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ù)是二進(jìn)制安全的。
注釋:該函數(shù)對大小寫敏感。如需進(jìn)行大小寫不敏感的搜索,請使用stristr()。
例子1
echostrstr("Helloworld!","world");
?>
//輸出:world!
例子2
在本例中,我們將搜索"o"的ASCII值所代表的字符:
echostrstr("Helloworld!",111);
?>
//輸出:oworld!
例子3
$email='admin@jb51.net';
$domain=strstr($email,'@');
echo$domain;//prints@jb51.net
$user=strstr($email,'@',true);//AsofPHP5.3.0
echo$user;//printsadmin
?>
$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_arras$city_ch_arr_item){
if(@strstr($area_ga,$city_ch_arr_item)){
echo$area_ga.'
';
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="澳門";
}
//如果都不存在就是默認(rèn)顯示廣州比如本地機
else{
$s_city="廣州";
}
如上代碼:
其中city.dat中是一些城市格式是這樣的
廣州|深圳|汕頭|惠州|珠海|揭陽|佛山|河源|陽江|茂名|湛江|梅州|肇慶|韶關(guān)|潮州|東莞|中山|清遠(yuǎn)|江門|汕尾|云浮|增城|從化|樂昌|南雄|臺山|開平|鶴山|恩平|廉江|雷州|吳川|高州|化州|高要|四會|興寧|陸豐|陽春|英德|連州|普寧|羅定|北京|天津|上海|重慶|烏魯木齊|克拉瑪依|石河子|阿拉爾|圖木舒克|五家渠|哈密|吐魯番|阿克蘇|喀什|和田|伊寧|塔城|阿勒泰|奎屯|博樂|昌吉|阜康|庫爾勒|阿圖什|烏蘇|拉薩|日喀則|銀川|石嘴山|吳忠|固原|中衛(wèi)|呼和浩特|包頭|烏海|赤峰|通遼|鄂爾多斯|呼倫貝爾|巴彥淖爾|烏蘭察布|霍林郭勒|滿洲里|牙克石|扎蘭屯|根河|額爾古納|豐鎮(zhèn)|錫林浩特|二連浩特|烏蘭浩特|
參考
echostrstr('aaaaaaaaaaaboaaaaaaaaaaaaboxcccccccccbcccccccccccccc','box')."
\n";
//輸出boxcccccccccbcccccccccccccc
//完整匹配中間的box不因前而的b而停止
echostrstr('aaaaaaAbaaaaaaaaaaaaaaaaboxccccccccccccboxccccccccccc','box')."
\n";
//輸出boxccccccccccccboxccccccccccc
//有兩個關(guān)鍵字時,遇到第一個停止.
echostrstr('SubscrtibeourtofreenewsletteraboutNewFreewto','to')."
\n";
//輸出tofreenewsletteraboutNewFreewto
?>
以上就是phpstrstr查找字符串中是否包含某些字符的查找函數(shù)的簡單分享,想要學(xué)好PHP一定要選擇專業(yè)靠譜的PHP培訓(xùn)機構(gòu),扣丁學(xué)堂
PHP培訓(xùn)不僅有專業(yè)的老師和與時俱進(jìn)的課程體系,還有大量的
PHP視頻教程供學(xué)員觀看學(xué)習(xí),想要學(xué)好PHP的小伙伴抓緊時間行動吧。扣丁學(xué)堂PHP技術(shù)交流群:374332265。
【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“php培訓(xùn)資訊”的相關(guān)文章>>
標(biāo)簽:
PHP培訓(xùn)
PHP視頻教程
PHP從入門到精通
PHP學(xué)習(xí)路線圖
PHP開發(fā)工程師