在Gravity表单中,我想包括一个小型的关键字检查器,用于检查用户消息中的“垃圾邮件”单词,并停止向管理员发送条目。为此,隐藏字段会更改其值。我的函数中包含此代码。迄今为止的php
function strpos_arr($haystack, $needle) {
if(!is_array($needle)) $needle = array($needle);
foreach($needle as $what) {
if(($pos = stripos($haystack, $what))!==false) return $pos;
}
return false;
}
/*
* Our bad words validation function
*/
add_action(\'gform_pre_submission_1\', \'keywords_check\');
function keywords_check($validation_result){
$form = $validation_result["form"];
$stop_words = array(
\'outsource\',
\'Madam\', // this covers all variations of \'Sir/Madam\' \'Sir /Madam\' \'Sir/ Madam\' \'Sir / Madam\' etc
\'SEO\',
\'long term relationship\',
);
$stop_id = array();
foreach($_POST as $id => $post)
{
if(strpos_arr($post, $stop_words))
{
/*
* We have a match so store the post ID so we can count it
*/
$stop_id[] = $id;
}
}
if(sizeof($stop_id) > 0)
{
$validation_result[\'is_valid\'] = false;
$_POST[\'input_55\'] = "No";
}
}
这段代码开头的部分似乎有问题,尤其是foreach($needle as $what) {
if(($pos = stripos($haystack, $what))!==false) return $pos;
}
发送表单后,我收到以下警告Warning: stripos() expects parameter 1 to be string, array given on line 109
在问这个问题之前,我已经有几个小时的php noob测试和错误测试了。有人能帮我解决这个问题吗?