4種方法:1、用stripos()找出子字串的出現位置,語法「stripos($str,$find)」;2、用strripos()找出子字串的出現位置,語法「strripos($str,$find)」;3、用strpos()找出子字串的出現位置,語法「strpos($str,$find)」;4、用strrpos()找出子字串的出現位置,語法「strrpos($str,$find)」。
本教學操作環境:windows7系統、PHP8.1版、DELL G3電腦
在進行字串尋找操作時,有時會要求在某一字串中尋找指定的子字串(簡稱子字串),看看該子字串是否存在於這個字串中。
我們一般會透過使用PHP內建函數來找出這個子字串在字串的第一次或最後一次的出現位置來進行判斷。而查找字串有兩種情況:一種是對大小寫不敏感,即不區分大小寫的查找;另一種是對大小寫敏感,即區分大小寫的查找。
情況一:判斷子字串是不是存在(大小寫不敏感)
大小寫不敏感的偵測子字串是不是存在,需要使用stripos()和strripos()函數。
stripos()和strripos()函數都可以大小寫不敏感的檢查指定子字串的出現位置,如果傳回值為FALSE,則指定子字串不存在。
因此我們就可以使用以下程式碼來判斷子字串是否存在
<?php header("Content-type:text/html;charset=utf-8"); $string = "ABCDCBAbcd"; $findme = "bC"; if(stripos($string, $findme)!=FALSE){ echo "子串 “'$findme'” 在字符串 “'$string'” 中存在。"; }else{ echo "子串 “'$findme'” 在字符串 “'$string'” 中不存在。"; } if(strripos($string, $findme)!=FALSE){ echo "<br>子串 “'$findme'” 在字符串 “'$string'” 中存在。"; }else{ echo "<br>子串 “'$findme'” 在字符串 “'$string'” 中不存在。"; } ?>
輸出結果:
說明: stripos()和strripos()函數
stripos($string,$find,$start)
函數可以找出字串在另一字串中第一次出現的位置(不區分大小寫)。
strripos($string,$find,$start)
函數可以找出字串在另一個字串中最後一次出現的位置(不區分大小寫)。
這兩個函數的參數是相似的,都接受兩個必要參數$string
和$find
,一個可省略參數$start
。
$string
參數:用於指定要被尋找的字串。
$find
參數:用於指定要尋找的子字串,可以包含一個或多字元。 (如果不是字串類型,那麼它將被轉換為整數並被視為字元順序值)。
$start
參數:用於指定從$string
中的哪個字元開始查找,傳回的位置數字值仍然相對於$string
的起始位置。
情況2:偵測子字串是否存在(大小寫敏感)
大小寫敏感的偵測子字串是不是存在,需要使用strpos()和strrpos()函數。
strpos()和strrpos()函數可以大小寫敏感的檢查指定子字串的出現位置,如果傳回值為FALSE,則指定子字串不存在。
範例:
<?php header("Content-type:text/html;charset=utf-8"); $string = "ABCDCBAbcd"; $findme1 = "bC"; $findme2 = "bc"; $pos1 = strpos($string, $findme1); $pos2 = strrpos($string, $findme1); $pos3 = strpos($string, $findme2); $pos4 = strrpos($string, $findme2); if($pos1 !=FALSE){ echo "子串 '$findme1' 在字符串 '$string' 中存在。"; }else{ echo "子串 '$findme1' 在字符串 '$string' 中不存在。"; } if($pos2 !=FALSE){ echo "<br>子串 '$findme1' 在字符串 '$string' 中存在。"; }else{ echo "<br>子串 '$findme1' 在字符串 '$string' 中不存在。"; } if($pos3 !=FALSE){ echo "<br>子串 '$findme2' 在字符串 '$string' 中存在。"; }else{ echo "<br>子串 '$findme2' 在字符串 '$string' 中不存在。"; } if($pos4 !=FALSE){ echo "<br>子串 '$findme2' 在字符串 '$string' 中存在。"; }else{ echo "<br>子串 '$findme2' 在字符串 '$string' 中不存在。"; } ?>
strpos()和strrpos()函數會區分大小寫的在字串$string
中尋找子字串$findme1
或$findme2
。當完全符合上,存在子字串時,會傳回子字串在字串的第一次或最後一次的出現位置;如果在字串的沒有找到子字串,則傳回FALSE
。
從上面的例子可以看出,只有子字串"bc
"和字串「ABCDCBAbcd
」是完全匹配,子字串"bc
"被認為是存在於字串「ABCDCBAbcd
」中的。因此輸出結果為:
說明:strpos()與strrpos()函數
# #strpos($string,$find,$start)函數可以傳回子字串首次出現的位置(區分大小寫);
strrpos($string ,$find,$start)函數可以傳回子字串最後一次出現的位置(區分大小寫);
$string(被尋找的字串)和
$find(要尋找的子字串),一個可省略參數
$start#(尋找的開始位置)。
註:字串位置起始於 0,而不是 1。
<?php header("Content-type:text/html;charset=utf-8"); $string = "ABCabcabcABC"; $findme1 = "c"; $findme2 = "C"; echo "子串 '$findme1' 第一次出现的位置:".strpos($string, $findme1); echo "<br>子串 '$findme1' 最后一次出现的位置:".strrpos($string, $findme1); echo "<br>子串 '$findme2' 第一次出现的位置:".strpos($string, $findme2); echo "<br>子串 '$findme2' 最后一次出现的位置:".strrpos($string, $findme2); ?>
PHP影片教學》
以上是php怎麼偵測子字串是否存在的詳細內容。更多資訊請關注PHP中文網其他相關文章!