At 2:27 PM -0500 5/29/06, Steven Osborn wrote:
Can someone please advise a faster solution to do what I'm doing below? All I need to be able to do is determine if any of the strings in the array are contained in $q. The method I have works, but I'm sure its not the most efficient way to do it.

$dirtyWord = array("UNION","LOAD_FILE","LOAD DATA INFILE","LOAD FILE","BENCHMARK","INTO OUTFILE");
                foreach($dirtyWord as $injection)
                {
                        if(stristr($q,$injection))
                        {
                                //Do Something to remove injection and log it
                        }
                }


Thank you.
--Steven

--Steven:

This is the way I would attempt it.

$q = explode(" ", $q);
$result = array_intersect($dirtyWord,$q);

If (count($result))
   {
    // then you have dirty words
   }

If you want to remove them, then try this:

$q = explode(" ", $q);
$result = array_diff($dirtyWord,$q);
$q = implode(" ", $result);

But why are you doing this?

hth's

tedd
--
------------------------------------------------------------------------------------
http://sperling.com  http://ancientstones.com  http://earthstones.com

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to