str_replace () em cadeias multibyte perigosas?

Dado certos conjuntos de caracteres multibyte, estou correto ao assumir que o seguinte não faz o que se destinava a fazer?

$string = str_replace('"', '\\"', $string);

Em particular, se a entrada estiver em um conjunto de caracteres que possa ter um caractere válido como 0xbf5c, um invasor poderá injetar 0xbf22 para obter 0xbf5c22, deixando um caractere válido seguido por aspas duplas (").

Existe uma maneira fácil de atenuar esse problema ou estou entendendo mal o problema?

(No meu caso, a string está entrando no atributo value de uma tag de entrada HTML: echo 'input type = "text" value = "'. $ String. '">';)

EDIT: Para esse assunto, que tal uma função como preg_quote ()? Não há argumento charset para isso, portanto parece totalmente inútil nesse cenário. Quando você NÃO tem a opção de limitar o charset para UTF-8 (sim, isso seria legal), parece que você está realmente deficiente. Quais funções de substituição e citação estão disponíveis nesse caso?

questionAnswers(4)

yourAnswerToTheQuestion