<span><span><span class="hljs-meta"><?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">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>