I'm trying to scan a string to check against a blacklist of words. I've used preg_quote
to handle special characters such as an asterisk but it doesn't seem to work for the dollar sign.
Here is a test I've been running:
$string_to_check = 'wordcontaining$';
$naughty_words = array('wordcontaining$', 'a*differentstring');
if(isset($naughty_words)){
foreach($naughty_words as $word){
if (preg_match('/\b'.preg_quote($word).'\b/i',$string_to_check)) {
var_export(array('found'=> true, 'word'=>$word));
}
}
}
which I would expect to return
array (
'found' => true,
'word' => 'wordcontaining$',
)
but unfortunately it's not. If I set $string_to_check = 'a*differentstring'
then everything works as expected.
Have I missed something very obvious here?