检查字符串是否包含数组中的单词

2022-08-30 15:47:43

这是一个聊天页面。我有一个.我有一系列坏词:.我如何检查是否包含任何单词?
到目前为止,我有:$string = "This dude is a mothertrucker"$bads = array('truck', 'shot', etc)$string$bad

        foreach ($bads as $bad) {
        if (strpos($string,$bad) !== false) {
            //say NO!
        }
        else {
            // YES!            }
        }

除非我这样做,否则当用户在列表中键入单词时,输出为NO!其次是 YES!因此,由于某种原因,代码运行了两次。$bads


答案 1
function contains($str, array $arr)
{
    foreach($arr as $a) {
        if (stripos($str,$a) !== false) return true;
    }
    return false;
}

答案 2

1)最简单的方法:

if ( in_array( 'three',  ['one', 'three', 'seven'] ))
...

2)另一种方法(同时检查数组朝向另一个数组):

$keywords=array('one','two','three');
$targets=array('eleven','six','two');
foreach ( $targets as $string ) 
{
  foreach ( $keywords as $keyword ) 
  {
    if ( strpos( $string, $keyword ) !== FALSE )
     { echo "The word appeared !!" }
  }
}