我在互联网上寻找可以做到这一点的东西,但它只能用一个词。
我正在尝试构建一个脚本来检测我的站点的错误用户名,如果用户名包含数组中的任何单词,则会检测到错误的用户名。
这是我制作的代码,但无法正常工作。
$bad_words = array("yo","hi");
$sentence = "yo";
if (strpos($bad_words,$sentence)==false) {
echo "success";
}
如果有人可以帮助我,我将不胜感激。
我在互联网上寻找可以做到这一点的东西,但它只能用一个词。
我正在尝试构建一个脚本来检测我的站点的错误用户名,如果用户名包含数组中的任何单词,则会检测到错误的用户名。
这是我制作的代码,但无法正常工作。
$bad_words = array("yo","hi");
$sentence = "yo";
if (strpos($bad_words,$sentence)==false) {
echo "success";
}
如果有人可以帮助我,我将不胜感激。
利用
对于数组使用以下函数
function substr_count_array( $haystack, $needle ) {
$count = 0;
foreach ($needle as $substring) {
$count += substr_count( $haystack, $substring);
}
return $count;
}
您可以使用以下代码:
$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";
// 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
你很近。您可以通过以下方式进行操作:
$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"; }
<?php
function isUserNameCorrect()
{
Foreach($badname in $badnames)
{
if(strstr($badname, $enteredname) == false)
{
return false;
}
}
return true;
}
也许这有帮助
我将按如下方式实现:
$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 时失败。
不幸的是,你不能Array
直接给函数 strpos/strstr 赋值。
根据 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";
}
我相信一句话不止一个词
尝试
$badwords = array("yo","hi");
$string = "i am yo this is testing";
$word = array_intersect( $badwords,explode(" " , $string));
if(empty($word))
{
echo "Sucess" ;
}