您好,登錄后才能下訂單哦!
這篇“php如何檢測子字符串是否存在”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“php如何檢測子字符串是否存在”文章吧。
4種方法:1、用stripos()查找子串的出現位置,語法“stripos(字符串,子串)”;2、用strripos()查找子串的的出現位置,語法“strripos(字符串,子串)”;3、用strpos()查找子串的出現位置,語法“strpos(字符串,子串)”;4、用strrpos()查找子串的出現位置,語法“strrpos(字符串,子串)”。
本教程操作環境: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如何檢測子字符串是否存在”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。