程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php strstr查找字符串中是否包含某些字符的查找函數

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

編輯:PHP綜合
PHP 判斷字符串是否包含其它字符

以下幾個函數均可用來判斷某字符串是否包含另外一個字符串PHP 中判斷一個字符串是否包含其它字符是很常見的操作。 雖然很簡單,但還是寫了幾個函數,質量可能不是很高,權當鍛煉。 如果這幾個函數恰好能幫上你的忙,我將會很高興的。這幾個函數中,我比較喜歡第四個。。。
復制代碼 代碼如下:
<?php
/**
* 以下幾個函數均可用來判斷某字符串是否包含另外一個字符串
* PHP 中判斷一個字符串是否包含其它字符是很常見的操作。
* 雖然很簡單,但還是寫了幾個函數,質量可能不是很高,權當鍛煉。
* 如果這幾個函數恰好能幫上你的忙,我將會很高興的。
*/
/**
* 利用一下 strpos() 函數
* @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() 函數
* @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的開始部分,那麼該函數會返回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 world!

例子 3
復制代碼 代碼如下:
<?php
$email = '[email protected]';
$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中是一些城市 格式是這樣的
復制代碼 代碼如下:
廣州|深圳|汕頭|惠州|珠海|揭陽|佛山|河源|陽江|茂名|湛江|梅州|肇慶|韶關|潮州|東莞|中山|清遠|江門|汕尾|雲浮|增城|從化|樂昌|南雄|台山|開平|鶴山|恩平|廉江|雷州|吳川|高州|化州|高要|四會|興寧|陸豐|陽春|英德|連州|普寧|羅定|北京|天津|上海|重慶|烏魯木齊|克拉瑪依|石河子|阿拉爾|圖木舒克|五家渠|哈密|吐魯番|阿克蘇|喀什|和田|伊寧|塔城|阿勒泰|奎屯|博樂|昌吉|阜康|庫爾勒|阿圖什|烏蘇|拉薩|日喀則|銀川|石嘴山|吳忠|固原|中衛|呼和浩特|包頭|烏海|赤峰|通遼|鄂爾多斯|呼倫貝爾|巴彥淖爾|烏蘭察布|霍林郭勒|滿洲裡|牙克石|扎蘭屯|根河|額爾古納|豐鎮|錫林浩特|二連浩特|烏蘭浩特|

參考
復制代碼 代碼如下:
<?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
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved