首頁 > 後端開發 > PHP問題 > php怎麼偵測子字串是否存在

php怎麼偵測子字串是否存在

青灯夜游
發布: 2023-03-16 22:34:01
原創
3717 人瀏覽過

4種方法:1、用stripos()找出子字串的出現位置,語法「stripos($str,$find)」;2、用strripos()找出子字串的出現位置,語法「strripos($str,$find)」;3、用strpos()找出子字串的出現位置,語法「strpos($str,$find)」;4、用strrpos()找出子字串的出現位置,語法「strrpos($str,$find)」。

php怎麼偵測子字串是否存在

本教學操作環境: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 "子串  “&#39;$findme&#39;” 在字符串  “&#39;$string&#39;” 中存在。";
}else{
	echo "子串  “&#39;$findme&#39;” 在字符串  “&#39;$string&#39;” 中不存在。";
}

if(strripos($string, $findme)!=FALSE){
	echo "<br>子串  “&#39;$findme&#39;” 在字符串  “&#39;$string&#39;” 中存在。";
}else{
	echo "<br>子串  “&#39;$findme&#39;” 在字符串  “&#39;$string&#39;” 中不存在。";
}
?>
登入後複製

輸出結果:

php怎麼偵測子字串是否存在

說明: 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 "子串 &#39;$findme1&#39; 在字符串  &#39;$string&#39; 中存在。";
}else{
	echo "子串  &#39;$findme1&#39; 在字符串  &#39;$string&#39; 中不存在。";
}

if($pos2 !=FALSE){
	echo "<br>子串  &#39;$findme1&#39; 在字符串  &#39;$string&#39; 中存在。";
}else{
	echo "<br>子串  &#39;$findme1&#39; 在字符串  &#39;$string&#39; 中不存在。";
}
if($pos3 !=FALSE){
	echo "<br>子串  &#39;$findme2&#39; 在字符串  &#39;$string&#39; 中存在。";
}else{
	echo "<br>子串  &#39;$findme2&#39; 在字符串  &#39;$string&#39; 中不存在。";
}

if($pos4 !=FALSE){
	echo "<br>子串  &#39;$findme2&#39; 在字符串  &#39;$string&#39; 中存在。";
}else{
	echo "<br>子串  &#39;$findme2&#39; 在字符串  &#39;$string&#39; 中不存在。";
}
?>
登入後複製

strpos()和strrpos()函數會區分大小寫的在字串$string中尋找子字串$findme1$findme2。當完全符合上,存在子字串時,會傳回子字串在字串的第一次或最後一次的出現位置;如果在字串的沒有找到子字串,則傳回FALSE

從上面的例子可以看出,只有子字串"bc"和字串「ABCDCBAbcd」是完全匹配,子字串"bc"被認為是存在於字串「ABCDCBAbcd」中的。因此輸出結果為:

php怎麼偵測子字串是否存在

說明: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 "子串  &#39;$findme1&#39; 第一次出现的位置:".strpos($string, $findme1);
echo "<br>子串  &#39;$findme1&#39; 最后一次出现的位置:".strrpos($string, $findme1);
echo "<br>子串  &#39;$findme2&#39; 第一次出现的位置:".strpos($string, $findme2);
echo "<br>子串  &#39;$findme2&#39; 最后一次出现的位置:".strrpos($string, $findme2);
?>
登入後複製
輸出結果:

php怎麼偵測子字串是否存在

推薦學習:《

PHP影片教學

以上是php怎麼偵測子字串是否存在的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板