2013-01-11 57 views
0

在一个应用程序中,我需要做一个特殊的字符检查动态设置的特殊字符,这是从db.I尝试了以下,但它不工作,任何帮助将不胜感激。PHP preg_match检查动态特殊字符集?

$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; 

回答

1

使用preg_quote引用您的特殊字符,像这样。

preg_match('/' . preg_quote($var, '/') . '/', $string) 

基于这样的事实,即从数据库中的结果是没有用方括号括起来的,我想你想是这样来匹配一个特殊字符在您的字符串:

preg_match('/[' . preg_quote($var, '/') . ']/', $string)