當前位置: 首頁> 最新文章列表> mb_strstr函數返回false時,如何判斷並正確處理這種情況

mb_strstr函數返回false時,如何判斷並正確處理這種情況

gitbox 2025-07-02
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 本文檔前面無關代碼示例</span></span><span>
</span><span><span class="hljs-variable">$example</span></span><span> = </span><span><span class="hljs-string">"示例內容"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/**
 * mb_strstr函數返回false時,如何判斷並正確處理這種情況
 *
 * 在PHP中,mb_strstr函數用於在多字節字符串中查找子串,並返回子串及其後面的部分。
 * 該函數的簽名為:
 * string|false mb_strstr(string $haystack, string $needle, bool $before_needle = false, ?string $encoding = null)
 *
 * 当查找的子串不存在時,mb_strstr會返回false。因此在使用時需要特别注意返回值的判断,
 * 避免在後續操作中產生錯誤。
 *
 * 以下是判斷和處理mb_strstr返回false的正確示例:
 */</span>

</span><span><span class="hljs-comment">// 定義一個含有多字節字符的字符串</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"這是一個測試字符串,用於演示mb_strstr函數的使用。"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"測試"</span></span><span>;

</span><span><span class="hljs-comment">// 調用mb_strstr查找</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strstr</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-literal">false</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-comment">// 子串不存在,進行相應處理</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"未找到子串 '<span class="hljs-subst">{$needle}</span></span></span><span>'。";
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-comment">// 子串存在,繼續處理返回結果</span></span><span>
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"找到子串 '<span class="hljs-subst">{$needle}</span></span></span><span>',結果為: " . </span><span><span class="hljs-variable">$result</span></span><span>;
}

<span class="hljs-comment">/**
 * 注意事項:
 * 1. 使用嚴格比較符號(===)判斷返回值是否為false,避免將空字符串等誤判。
 * 2. 指定正確的編碼參數,確保多字節字符的正確處理。
 * 3. 如果僅需要判斷子串是否存在,mb_strpos可能是更合適的選擇。
 *
 * 小結:
 * mb_strstr函數返回false表示未找到子串,通過嚴格判斷返回值,
 * 可以避免後續邏輯錯誤,保障程序的穩定運行。
 */</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>