Jump to content

Using an array to restrict search


9999

Recommended Posts

This is a snipet of code I have.  I eventually may want to increase this list to 10 words.  What am  I doing wong?

[code]$search = $_GET['search'];

$not_allowed = array('and', 'or', 'of', 'is', 'the');


if (stristr($search, $not_allowed))
        {
            echo 'Your search contains a word that is not allowed';
        }[/code]
Link to comment
https://forums.phpfreaks.com/topic/17585-using-an-array-to-restrict-search/
Share on other sites

Try this:
[code]
<?php
$word_filter = array(
'and',
'or',
'of',
'is',
'the',
);

$search = $_GET['search'];

function has_bad_words($search)
{
global $word_filter;

$split = preg_split("#\s+#", $search, -1, PREG_SPLIT_NO_EMPTY);

if (is_array($split))
{
foreach ($split as $search_word)
{
if (in_array($search_word, $word_filter))
{
return true;
}
}
}

return false;
}

if (has_bad_words($search))
{
echo "Your search contains a word that is not allowed";
}
else
{
echo "success";
}
?>
[/code]
or a simpler way is this.

[code=php:0]
$search = $_GET['search'];
$list = array('and', 'or', 'of', 'is', 'the');
foreach($list as $banned) {
  $match = strpos($search, $banned);
}
if ($match !== false) {
    echo "Your search contains banned words";
}
//continue your search
[/code]

Hope this helps,
Tom

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.