在一个应用程序中,我需要对从db中获取的动态特殊字符集进行特殊字符检查。我已尝试过以下操作,但它不起作用,任何帮助都将不胜感激。
$specialCharacters = SystemParameters::model()->findByAttributes(array('sys_param_name' => 'SPLCHR'));
// [\^£$%&*()}{@#~?><>,|=_+¬-]'"; This is the resulting value
$var = addslashes($specialCharacters->sys_param_val);
if (preg_match('/' . $var . '/', $string))
return false;
else
return true;
答案 0 :(得分:1)
使用preg_quote
引用您的特殊字符。
preg_match('/' . preg_quote($var, '/') . '/', $string)
基于这样的事实,你的数据库结果没有用方括号括起来,我想你想要这样的东西与字符串中的一个特殊字符匹配:
preg_match('/[' . preg_quote($var, '/') . ']/', $string)