當前位置: 首頁> 最新文章列表> 如何使用stristr 和strlen 獲取匹配字符串的長度?

如何使用stristr 和strlen 獲取匹配字符串的長度?

gitbox 2025-09-22

在PHP 中, stristrstrlen是常用的字符串處理函數,它們分別用於查找字符串的匹配部分和計算字符串的長度。通過合理地組合這兩個函數,我們可以很方便地實現獲取某個匹配字符串的長度。本文將詳細介紹如何使用這兩個函數來獲取匹配字符串的長度。

一、 stristr函數的作用

stristr函數用於查找一個字符串在另一個字符串中首次出現的位置,並返回從該位置開始到字符串結束的部分。該函數是區分大小寫的,且返回的匹配部分包含了原字符串中的匹配內容。基本語法如下:

 <span><span><span class="hljs-title function_ invoke__">stristr</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$before_needle</span></span><span> = </span><span><span class="hljs-literal">false</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
  • $haystack :要搜索的目標字符串。

  • $needle :要查找的子字符串。

  • $before_needle :如果設置為true ,則返回從開始到匹配子串前的位置的字符串。

stristr會返回匹配的子串,如果沒有找到則返回false

二、 strlen函數的作用

strlen函數用於計算一個字符串的長度。它返回的是字符串中的字符數,忽略了字符的編碼類型。其基本語法如下:

 <span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$string</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>
</span></span>
  • $string :待計算長度的字符串。

三、結合stristrstrlen獲取匹配字符串的長度

當我們需要查找某個子字符串並獲取該匹配部分的長度時,可以將stristrstrlen結合使用。具體步驟如下:

  1. 使用stristr查找目標字符串中首次匹配子串的位置。

  2. 使用strlen計算匹配字符串的長度。

示例代碼

假設我們有一個字符串$haystack ,我們要查找子字符串$needle併計算其匹配部分的長度,代碼如下:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>

</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"PHP is a popular general-purpose scripting language."</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"popular"</span></span><span>;

</span><span><span class="hljs-comment">// 使用 stristr 查找匹配的子字符串</span></span><span>
</span><span><span class="hljs-variable">$match</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stristr</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);

</span><span><span class="hljs-comment">// 如果找到了匹配的部分</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$match</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-comment">// 使用 strlen 計算匹配部分的長度</span></span><span>
    </span><span><span class="hljs-variable">$length</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$match</span></span><span>);
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"匹配字符串的長度是: "</span></span><span> . </span><span><span class="hljs-variable">$length</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"沒有找到匹配的子字符串。"</span></span><span>;
}

</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

四、解析代碼

  1. 我們首先定義了兩個變量$haystack$needle ,分別表示目標字符串和需要查找的子字符串。

  2. 使用stristr查找$haystack中首次出現$needle的位置,並將匹配部分保存到$match變量中。如果找到匹配部分, stristr會返回從匹配位置到字符串末尾的部分。

  3. 如果找到了匹配部分,則使用strlen計算該匹配部分的長度。

  4. 最後,輸出匹配字符串的長度。

五、輸出結果

假設我們的$haystack是"PHP is a popular general-purpose scripting language.",而$needle是"popular",運行以上代碼會輸出:

 <span><span><span class="hljs-section">匹配字符串的長度是: 8</span></span><span>
</span></span>

這是因為"popular" 是匹配的子串,且其長度為8。

六、注意事項

  • stristr返回的匹配部分包含了匹配的子串及其後面的所有內容,因此如果我們只關心匹配子串本身的長度,使用strlen即可。

  • 如果我們希望在匹配到子串之前停止查找,可以使用stristr的第三個參數$before_needle ,將其設置為true ,這時返回的字符串僅包含子串之前的部分。

總結

通過結合使用stristrstrlen ,我們可以輕鬆地查找匹配字符串併計算其長度。這在許多場景中非常有用,尤其是在字符串處理和數據提取的任務中。希望本文的示例能夠幫助你更好地理解這兩個函數的使用方法。