<?php
$s = 'stuff1 "?" AND stuff\"2=? AND stuff3=\'?\' AND stuff\\\'4=? AND ...';
$p = '?';
$v = '%s';
$r = '/\G((?:(?:[^\x5C"\']|\x5C(?!["\'])|\x5C["\'])*?(?:\'(?:[^\x5C\']|\x5C(?!\')' .
     '|\x5C\')*\')*(?:"(?:[^\x5C"]|\x5C(?!")|\x5C")*")*)*?)' . preg_quote($p) . '/';
print preg_match($r, $s) ? preg_replace($r, "$1" . $v, $s) : $s;
?>