4種方法:1、用stripos()查詢子串的出現位置,語法「stripos(字串,子串)」;2、用strripos()查詢子串的的出現位置,語法「strripos(字串,子串)」;3、用strpos()查詢子串的出現位置,語法「strpos(字串,子串)」;4、用strrpos()查詢子串的出現位置,語法「strrpos(字串,子串)」。
php入門到就業線上直播課:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API偵錯工具:
本教學操作環境:windows7系統、PHP8.1版、DELL G3電腦
在進行字串查詢操作時,有時會要求在某一字串中查詢指定的子字串(簡稱子串),看看該子串是否存在於這個字串中。
我們一般會通過使用PHP內建函數來查詢這個子串在字串的第一次或最後一次的出現位置來進行判斷。而查詢字串有兩種情況:一種是對大小寫不敏感,即不區分大小寫的查詢;另外一種是對大小寫敏感,即區分大小寫的查詢。
情況一:判斷子串是不是存在(大小寫不敏感)
我們來看看下面一下栗子。
<?php
header("Content-type:text/html;charset=utf-8");
$string = "ABCDCBAbcd";
$findme = "bC";
echo "子串 「'$findme'」 第一次出現的位置:".stripos($string, $findme);
echo "<br>子串 「'$findme'」 最後一次出現的位置:".strripos($string, $findme);
?>
登入後複製
看看上例的程式碼,你們覺得這個結果會是什麼?第一次出現的位置為「2」,最後一次出現的位置為「8」,對不對?我們來看一下輸出結果:
哎呀,居然是「1」和「7」,為什麼會這樣?原因是:字串位置起始於 0,而不是 1。我們按起始位置1來算當然不對。
因此我們就可以使用以下程式碼來判斷子串是不是存在
<?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($string,$find,$start)
函數可以查詢字串在另一字串中第一次出現的位置(不區分大小寫)。
strripos($string,$find,$start)
函數可以查詢字串在另一字串中最後一次出現的位置(不區分大小寫)。
這兩個函數的引數是相似的,都接受兩個必需引數$string
和$find
,一個可省略引數$start
。
$string
引數:用於指定要被查詢的字串。
$find
引數:用於指定要查詢的子串,可以包含一個或者多字元。(如果不是字串型別,那麼它將被轉換為整型並被視為字元順序值)。
$start
引數:用於指定從$string
中的哪個字元開始查詢,返回的位置數位值仍然相對於 $string
的起始位置。
但strripos()函數的$start
引數允許使用負值,此時將使得查詢從字串的起始位置開始,到 $start
位置為止。
<?php
header("Content-type:text/html;charset=utf-8");
$string = "ABCDCBAbcd";
$findme = "bC";
echo "子串 「'$findme'」 第一次出現的位置:".stripos($string, $findme,2);
echo "<br>子串 「'$findme'」 最後一次出現的位置:".strripos($string, $findme,-5);
?>
登入後複製
輸出結果:
情況2:檢測子串是不是存在(大小寫敏感)
我們來看看下面一下範例
<?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)
函數可以返回子字串最後一次出現的位置(區分大小寫);
strpos()和strrpos()函數相似,都接受兩個必需引數$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);
?>
登入後複製
輸出結果:
但strrpos()函數的引數$start
可以接受負值,當它為負數時,將會導致查詢在字串結尾處開始的計數位置處結束。
<?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,-5);
echo "<br>子串 '$findme2' 第一次出現的位置:".strpos($string, $findme2);
echo "<br>子串 '$findme2' 最後一次出現的位置:".strrpos($string, $findme2,-5);
?>
登入後複製
輸出結果:
推薦學習:《》
以上就是php怎麼檢測子字串是否存在的詳細內容,更多請關注TW511.COM其它相關文章!