我在互联网上寻找可以做到这一点的东西,但它只能用一个字。
我正在尝试构建一个脚本来检测我网站的错误用户名,如果用户名包含数组中的任何字词,则会检测到错误的用户名。
这是我制作的代码,但没有成功。
$bad_words = array("yo","hi");
$sentence = "yo";
if (strpos($bad_words,$sentence)==false) {
echo "success";
}
如果有人可以帮助我,我会很感激。
答案 0 :(得分:6)
使用
对于数组使用以下函数
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,则检查将失败。