を使用していくつかの文字列を操作するのに役立つ 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);
この正規表現を改善するにはどうすればよいですか?!
前もって感謝します。
編集: 質問をより説明的に更新しました。