首頁 >後端開發 >php教程 >php strstr查找字串中是否包含某些字元的查找函數

php strstr查找字串中是否包含某些字元的查找函數

高洛峰
高洛峰原創
2017-01-16 13:17:021246瀏覽

PHP 判斷字串是否包含其它字元 

以下幾個函數皆可用於判斷某字串是否包含另外一個字串PHP 中判斷一個字串是否包含其它字元是很常見的運算。 雖然很簡單,但還是寫了幾個函數,品質可能不是很高,權當運動。 如果這幾個函數剛好能幫上你的忙,我將會很高興的。這幾個函數中,我比較喜歡第四個。 。 。 

<?php 
/** 
* 以下几个函数均可用来判断某字符串是否包含另外一个字符串 
* PHP 中判断一个字符串是否包含其它字符是很常见的操作。 
* 虽然很简单,但还是写了几个函数,质量可能不是很高,权当锻炼。 
* 如果这几个函数恰好能帮上你的忙,我将会很高兴的。 
*/ 
/** 
* 利用一下 strpos() 函数 
* @param unknown_type $haystack 
* @param unknown_type $needle 
*/ 
function isInString1($haystack, $needle) { 
//防止$needle 位于开始的位置 
$haystack = &#39;-_-!&#39; . $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 = &#39;/&#39; . $needle . &#39;/&#39;; 
return (bool)preg_match($pattern, $haystack); 
} 
/** 
* 利用一下 strpos() 函数 
* @param unknown_type $haystack 
* @param unknown_type $needle 
*/ 
function isInString4($haystack, $needle) { 
return false !== strpos($haystack, $needle); 
} 
//测试 
$haystack = &#39;I am ITBDW&#39;; 
$needle = &#39;IT&#39;; 
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 

<?php 
echo strstr("Hello world!","world"); 
?>

//輸出:world! 

範例2 
在這個例子中,我們將搜尋"o" 的ASCII 值所代表的字元: 

<?php 
echo strstr("Hello world!",111); 
?>

//輸出:o ! 3 

<?php 
$email = &#39;admin@jb51.net&#39;; 
$domain = strstr($email, &#39;@&#39;); 
echo $domain; // prints @jb51.net 

$user = strstr($email, &#39;@&#39;, 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.&#39;<br>&#39;; 
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中是一些城市格式是這樣的 

广州|深圳|汕头|惠州|珠海|揭阳|佛山|河源|阳江|茂名|湛江|梅州|肇庆|韶关|潮州|东莞|中山|清远|江门|汕尾|云浮|增城|从化|乐昌|南雄|台山|开平|鹤山|恩平|廉江|雷州|吴川|高州|化州|高要|四会|兴宁|陆丰|阳春|英德|连州|普宁|罗定|北京|天津|上海|重庆|乌鲁木齐|克拉玛依|石河子|阿拉尔|图木舒克|五家渠|哈密|吐鲁番|阿克苏|喀什|和田|伊宁|塔城|阿勒泰|奎屯|博乐|昌吉|阜康|库尔勒|阿图什|乌苏|拉萨|日喀则|银川|石嘴山|吴忠|固原|中卫|呼和浩特|包头|乌海|赤峰|通辽|鄂尔多斯|呼伦贝尔|巴彦淖尔|乌兰察布|霍林郭勒|满洲里|牙克石|扎兰屯|根河|额尔古纳|丰镇|锡林浩特|二连浩特|乌兰浩特|

參考 

<?php 
echo strstr(&#39;aaaaaaaaaaaboaaaaaaaaaaaaboxcccccccccbcccccccccccccc&#39;,&#39;box&#39;)."<br>\n"; 
//输出boxcccccccccbcccccccccccccc 
// 完整匹配中间的box 不因前而的b而停止 
echo strstr(&#39;aaaaaaAbaaa aaaa aaaaaaaaaboxccccccccccccboxccccccccccc&#39;,&#39;box&#39;)."<br>\n"; 
//输出boxccccccccccccboxccccccccccc 
// 有两个关键字时, 遇到第一个停止. 
echo strstr(&#39;Subscrtibe our to free newsletter about New Freew to&#39;,&#39;to&#39;)."<br>\n"; 
//输出to free newsletter about New Freew to 
?>

更多php strstr字符串查找!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn