首页 > 后端开发 > php教程 > 如何使用数组在 PHP 中高效地搜索字符串中的多个子字符串?

如何使用数组在 PHP 中高效地搜索字符串中的多个子字符串?

DDD
发布: 2024-11-27 11:59:13
原创
657 人浏览过

How Can I Efficiently Search for Multiple Substrings within a String in PHP Using Arrays?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板