私は正規表現にかなり慣れていません。私がそのような文字列を持っているとしましょう:
UPDATE table_name SET column = :column WHERE column IN(:column_32, :column_34, :column_347)
そして、私が配列を持っていると仮定します:
$arr = array(
'column' => 'Test',
'column_32' => 'Tester',
'column_34' => 'Faux data',
'column_347' => 'Column data'
);
私がやりたいのは、プレースホルダー(:column、:column_32など)を配列内の対応する値に置き換えることです。問題は、:columnを「Test」に置き換えると:column_32が:Test_32になるため、str_replaceはそれをカットしないことです。
それで、私はいくつかのカスタム正規表現を書き始めました。これが私が実行しているテストスクリプトです:
foreach($arr as $k => $v){
var_dump(preg_match_all('(:'.$v.'[^_])', $str, $matches));
}
正しい文字列と一致します。問題は、一致の一部として「、」と「)」も返すことです。私はここで何かを見落としていますか?