搜索字符串以查看它是否包含数组 PHP 中的任何字符串

Search string to see if it contains any string from an array PHP

我正在尝试检查一个字符串是否包含字符串数组中任何列入黑名单的单词。 这是我当前的代码 - 重点是效率,列表中的字符串可能为空,我们搜索的字符串永远不会为空:

public static function includes_from_array($stringArray, $searchInMe, $offset=0) : bool {
    // if not array just check if $stringArray exists in our $searchInMe string.
    if(!is_array($stringArray)) {
        return strpos($stringArray, $searchInMe) !== false;
    }

    foreach($stringArray as $query) {
        if ($query === '') {
            continue;
        }
        else if(strpos($searchInMe, strtolower($query), $offset) !== false) {
            return true;
        }
    }

    return false;
}

有没有一种方法可以在不影响效率甚至提高效率的情况下快速缩短代码? 代码的编写是为了能够在需要时检索位置(从 true 或 false 更改为检查中返回的 pos),但是在缩短的版本中不需要它。

谢谢!

根据我的理解,您的灵魂目的是检查句子或 URL 中是否存在任何不良词,如果存在则 return 布尔值 true。

请这样尝试:

<?php

function includes_from_array($stringArray, $searchInMe){
    if(is_array($stringArray)){
        foreach($stringArray as $arr){
            if(strpos($searchInMe,$arr) !== false){
                return true;
            }
        }
        
    }else{
        if(strpos($searchInMe,$stringArray) !== false){
            return true;
        }
    }
    return false;
}

示例输出:https://3v4l.org/3Pefn