當前位置: 首頁> 最新文章列表> stristr函數第二個參數的類型該怎麼用?字符串和數組的區別及應用詳解

stristr函數第二個參數的類型該怎麼用?字符串和數組的區別及應用詳解

gitbox 2025-09-12
<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-comment">// 比如設置時區</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</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">/**
 * stristr函數第二個參數的類型該怎麼用?
 * 字符串和數組的區別及應用詳解
 *
 * 在PHP中,stristr函數用於在字符串中查找某個子串,並返回從首次出現該子串開始到字符串結尾的部分。
 * 它的基本用法是:
 * string stristr(string $haystack, string $needle, bool $before_needle = false)
 * 其中:
 * - $haystack 是被搜索的字符串
 * - $needle 是要查找的字符串
 * - $before_needle 可選,若為true,則返回needle之前的部分
 *
 * 然而,有些開發者會疑惑:stristr的第二個參數能不能傳數組?或者傳數組和傳字符串有什麼區別?
 *
 * 一、stristr的第二個參數類型限制
 * stristr函數的第二個參數必須是字符串類型,不能傳數組。如果傳入數組,PHP會報錯:
 * Warning: stristr() expects parameter 2 to be string, array given
 *
 * 因此,嚴格來說,stristr只接受字符串作為第二個參數。
 *
 * 二、為什麼會有傳數組的誤解?
 * 有些場景下,開發者想用多個關鍵詞去搜索字符串是否包含其中任意一個,如果用stristr只能一次查一個字符串。
 * 這時候,常見的做法是用數組存儲多個關鍵詞,然後遍歷數組逐一調用stristr進行匹配。
 *
 * 三、如何實現多關鍵詞匹配(模擬傳數組效果)
 * 示例代碼如下:
 */</span>

</span><span><span class="hljs-variable">$keywords</span></span><span> = [</span><span><span class="hljs-string">'apple'</span></span><span>, </span><span><span class="hljs-string">'banana'</span></span><span>, </span><span><span class="hljs-string">'orange'</span></span><span>];
</span><span><span class="hljs-variable">$text</span></span><span> = </span><span><span class="hljs-string">"I like banana and orange juice."</span></span><span>;

</span><span><span class="hljs-variable">$found</span></span><span> = </span><span><span class="hljs-literal">false</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$keywords</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$word</span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">stristr</span></span><span>(</span><span><span class="hljs-variable">$text</span></span><span>, </span><span><span class="hljs-variable">$word</span></span><span>) !== </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-variable">$found</span></span><span> = </span><span><span class="hljs-variable">$word</span></span><span>;
        </span><span><span class="hljs-keyword">break</span></span><span>;
    }
}

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$found</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"找到關鍵詞:<span class="hljs-subst">$found</span></span></span><span>\n";
} </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">"没有找到關鍵詞。\n"</span></span><span>;
}

<span class="hljs-comment">/**
 * 四、總結
 * - stristr的第二個參數必須是字符串,不能直接傳數組。
 * - 若需要多關鍵詞匹配,可以自己用循環遍歷數組,逐個調用stristr判斷。
 * - 这样可以灵活地判斷字符串是否包含任一多个关键词。
 *
 * 五、其他相關函數
 * - stripos: 不區分大小寫查找字符串位置,第二個參數也是字符串。
 * - preg_match: 也可以通過正則表達式實現多關鍵詞匹配,比如用pattern /(apple|banana|orange)/i。
 *
 * 以上是stristr函數第二個參數的類型用法及字符串和數組區別的詳細說明與示例。
 */</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>