strpos 与数组:深入探究
在 PHP 中,strpos 函数在另一个字符串中搜索一个字符串。通常,我们会遇到想要同时搜索多个字符串的情况。虽然提供的代码无法执行此任务,但我们可以使用一系列搜索词探索替代解决方案。
数组针的自定义函数
一种方法是创建一个自定义函数,模仿 strpos 的针数组功能:
function strposa($haystack, $needles=array(), $offset=0) { $chr = array(); foreach($needles as $needle) { $res = strpos($haystack, $needle, $offset); if ($res !== false) $chr[$needle] = $res; } if(empty($chr)) return false; return min($chr); }
这个函数接受一个 haystack 字符串,一个数组要搜索的针数以及可选的偏移量。它返回任何针第一次出现的索引,如果没有找到,则返回 false。
改进的自定义功能
要增强此功能,我们可以停止找到第一根针后进行搜索:
function strposa(string $haystack, array $needles, int $offset = 0): bool { foreach($needles as $needle) { if(strpos($haystack, $needle, $offset) !== false) { return true; } } return false; }
此更新的函数会扫描大海捞针以查找数组中的每根针并返回 true一旦找到匹配项。当干草堆中可能存在多个针时,效率会更高。
使用示例
要使用这些函数,只需将干草堆字符串和针数组作为参数传递即可.
$string = 'This string contains word "cheese" and "tea".'; $array = ['burger', 'melon', 'cheese', 'milk']; if(strposa($string, $array)) { echo 'true'; // since "cheese" is found }
在此示例中,脚本输出 true,因为“cheese”是干草堆。
以上是如何使用数组在 PHP 中高效地搜索字符串中的多个子字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!