まだエスケープされていないすべての二重引用符をエスケープしたいと思います。
私はすでにreal_escape_string()を使用していますが、次の正規表現/アプローチの何が問題になっているのかを理解したいと思います。
$str = '"Hello "" """ world!\"';
preg_replace('/(^|[^\\\\]{1})\"/', '${1}\"', $str);
(追記:私は知っています- \ \ "はエスケープされず、他の場合には問題になる可能性がありますが、これは私のスクリプトには関係ありません。)
結果は次のとおりです。
\"こんにちは世界!\"
しかし、私はそれを次のようにしたかった:
\"こんにちは世界!\"