-
-
/**
- * 以下幾個函數均可用於判斷某字串是否包含另外一個字串
- * PHP 中判斷一個字串是否包含其它字元是很常見的操作。
- * 如果這幾個函數剛好能幫上你的忙,我將會很高興的。
- */
- /**
- * 利用一下 strpos() 函數
- * @param unknown_type $haystack
- * @param unknown_type $needle
- * @link jbxue.com
- */
- 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() 函數
- * @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,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:
-
-
-
echo strstr("Hello world!","world");
- ?>
複製程式碼
//輸出:world!
例2,在本例中,我們將搜尋 "o" 的 ASCII 值所代表的字元:
-
-
-
echo strstr("Hello world!",111);
?>
複製程式碼
//輸出:o world!
例3:
-
-
-
-
$email = 'admin@jbxue.com';
- $domain = strstr($ email, '@');
- echo $domain; // prints @jbxue.com
$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.'
';
- 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中是一些城市,格式類似這樣:
廣州|深圳|汕頭|惠州|珠海|揭陽|佛山|河源|陽江|茂名|湛江|梅州|肇慶|韶關|潮州|東莞|中山|清遠|江門|汕尾|雲浮|增城|從化|樂昌。雄|台山|開平|鶴山|恩平|廉江|雷州|吳川|高州|化州|高要|四會|興寧|陸豐|陽春|英德|連州|普寧|羅定|北京|天津|上海|重慶|烏魯木齊|克拉瑪依|石河子|阿拉爾|圖木舒克|五家渠|哈密|吐魯番|阿克蘇|喀什|和田|伊寧|塔城|阿勒泰|奎屯|博樂|阿克斯|阜康昌吉|阜康昌吉| |庫爾勒|阿圖什|烏蘇|拉薩|日喀則|銀川|石嘴山|吳忠|固原|中衛|呼和浩特|包頭|烏海|赤峰|通遼|鄂爾多斯|呼倫貝爾|巴彥淖爾|烏蘭察布|霍林|鄂爾多斯|呼倫貝爾|巴彥淖爾|烏蘭察布|霍林|鄂爾多斯|呼倫貝爾|巴彥淖爾|烏蘭察布|霍林郭勒|滿洲里|牙克石|扎蘭屯|根河|額爾古納|豐鎮|錫林浩特|二連浩特|烏蘭浩特|
參考
-
-
echo strstr('aaaaaaaaaaaboaaaaaaaaaa
- // 完整配對中間的box 不因前而的b而停止
- echo strstr('aaaaaaAbaaa aaaa aaaaaaaaaboxccccccccccccccboxccccccccccccc','box')."
n";
- //輸出cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 🎜>// 有兩個關鍵字時, 遇到第一個停止.
- echo strstr('Subscrtibe our to free newsletter about New Freew to','to')."
n";
- //輸出to free newsletter about New Freew to
- ?>
-
-
複製程式碼
|