Php检查字符串是否包含多个单词

时间:2012-05-09 14:41:39

标签: php string preg-match words

我在互联网上寻找可以做到这一点的东西,但它只能用一个字。

我正在尝试构建一个脚本来检测我网站的错误用户名,如果用户名包含数组中的任何字词,则会检测到错误的用户名。

这是我制作的代码,但没有成功。

$bad_words = array("yo","hi");
$sentence = "yo";

if (strpos($bad_words,$sentence)==false) {
echo "success";
}

如果有人可以帮助我,我会很感激。

8 个答案:

答案 0 :(得分:6)

使用

substr_count

对于数组使用以下函数

function substr_count_array( $haystack, $needle ) {
     $count = 0;
     foreach ($needle as $substring) {
          $count += substr_count( $haystack, $substring);
     }
     return $count;
}

答案 1 :(得分:1)

您可以使用此代码:

$bad_words = array("yo","hi");
$sentence = "yo you your";
// break your sentence into words first
preg_match_all('/\w+/', $sentence, $m);
echo ( array_diff ( $m[0], $bad_words ) === $m[0] ) ? "no bad words found\n" :
                                                      "bad words found\n";

答案 2 :(得分:1)

// returns false or true
function multiStringTester($feed , $arrayTest)
{   
    $validator = false;
    for ($i = 0; $i < count($arrayTest); $i++) 
    {
            if (stringTester($feed, $arrayTest[$i]) === false ) 
            {   
                continue;
            } else 
            {
                $validator = true;              
            }       
    }
    return $validator;
}
//www.ffdigital.net

答案 3 :(得分:0)

你很亲密。您可以通过以下方式执行此操作:

$bad_words = array("yo","hi");
$sentence = "yo";
$match = false;
foreach($bad_words as $bad_word) {
  if (strpos($bad_word,$sentence) === false) {  # use $bad_word, not $bad_words
    $match = true;
    break;
  }
}
if($match) { echo "success"; }

答案 4 :(得分:0)

<?php
function isUserNameCorrect()
{
    Foreach($badname in $badnames)
    {
        if(strstr($badname, $enteredname) == false)
        {
             return false;
        }
    }
    return true;
}

也许这有帮助

答案 5 :(得分:0)

我相信句子不止一个单词

尝试

$badwords = array("yo","hi");
$string  = "i am yo this is testing";
$word = array_intersect( $badwords,explode(" " , $string));
if(empty($word))
{
    echo "Sucess" ;
}

答案 6 :(得分:0)

不幸的是,您无法直接向函数strpos / strstr提供Array

根据PHP.net评论,要做到这一点,你需要使用(或创建你自己的,如果你想要的)这样的功能:

function strstr_array($haystack, $needle) 
{
     if ( !is_array( $haystack ) ) {
         return false;
     }
     foreach ( $haystack as $element ) {
         if ( stristr( $element, $needle ) ) {
             return $element;
         }
     }
}

然后,只需将strpos更改为新功能 - strstr_array

$bad_words = array("yo","hi");
$sentence = "yo";

if (strstr_array($bad_words,$sentence)==false) {
     echo "success";
}

答案 7 :(得分:0)

我将按如下方式实现:

$bad_words = array("yo","hi");
$sentence = "yo";

$valid = true;
foreach ($bad_words as $bad_word) {
    if (strpos($sentence, $bad_word) !== false) {
        $valid = false;
        break;
    }
}

if ($valid) {
    echo "success";
}

句子有效,除非它包含来自$bad_words的至少一个单词。请注意严格检查(即!==),如果strpos的结果为0而不是false,则检查将失败。