我的 PHP 脚本需要一个正则表达式,它可以帮助我使用preg_replace
.
例如,假设我有以下字符串:
myvar = first_value AND var2 = second_value
我想将其转换为:
myvar = 'first_value' AND var2 = 'second_value'
但是,当值周围已经有一个单引号时,我也希望它忽略。所以myvar = first_value AND var2 = 'second_value'
会变成myvar = 'first_value' AND var2 = 'second_value'
而不是myvar = 'first_value' AND var2 = ''second_value''
。
当值周围已经有一个单引号时,我还希望它处理子字符串中的空格。所以myvar = first_value AND var2 = 'second value'
会变成myvar = 'first_value' AND var2 = 'second value'
而不是myvar = 'first_value' AND var2 = 'second' value'
。
注意:在任何时候,字符串都不会包含带有空格的未加引号的字符串值的变量赋值,即myvar = first value
永远不会出现的场景。但是,字符串可以包含任何其他字符,即使是特殊字符,例如myvar = &%$@_imspecial_*
也是完全有效的。
我正在使用的 PHP 代码如下所示(#DontLaugh):
$col_clause_str = "myvar = first_value AND var2 = second_value";
$replace_pattern_str = '/([\w\@\-]+)\s*(\=|\>|\>\=|\<|\<\=)\s*\'{0,1}([\w\@\.\:\+\-\/\|\{\}\[\]\~\%\$\*\!]+)\'{0,1}/i';
$replace_str = '\1 \2 \'\3\'';
$col_clause_str = preg_replace($replace_pattern_str, $replace_str, $col_clause_str);
我该如何改进这个正则表达式?!
提前致谢。
编辑: 我将问题更新为更具描述性。