use*_*926 19 php arrays string compare
这是一个聊天页面.我有一个$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! }
}
Run Code Online (Sandbox Code Playgroud)
除非我这样做,当用户键入$bads列表中的单词时,输出为NO!是的!所以由于某种原因,代码运行了两次.
Nir*_*ara 64
function contains($str, array $arr)
{
foreach($arr as $a) {
if (stripos($str,$a) !== false) return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
T.T*_*dua 12
1)最简单的方法:
if ( in_array( 'eleven', array('four', 'eleven', 'six') ))
...
Run Code Online (Sandbox Code Playgroud)
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 !!" }
}
}
Run Code Online (Sandbox Code Playgroud)
你可以试试这个而不是你的代码
$string = "This dude is a mothertrucker";
$bads = array('truck', 'shot');
foreach($bads as $bad) {
$place = strpos($string, $bad);
if (!empty($place)) {
echo 'Bad word';
exit;
} else {
echo "Good";
}
}
Run Code Online (Sandbox Code Playgroud)
有一个非常短的 php 脚本,您可以使用它来识别字符串中的坏词,该脚本使用 str_ireplace ,如下所示:
$string = "This dude is a mean mothertrucker";
$badwords = array('truck', 'shot', 'ass');
$banstring = ($string != str_ireplace($badwords,"XX",$string))? true: false;
if ($banstring) {
echo 'Bad words found';
} else {
echo 'No bad words in the string';
}
Run Code Online (Sandbox Code Playgroud)
单行:
$banstring = ($string != str_ireplace($badwords,"XX",$string))? true: false;
Run Code Online (Sandbox Code Playgroud)
完成所有工作。