Учитывая определенные многобайтовые наборы символов, правильно ли я полагаю, что следующее не делает то, для чего оно предназначалось?
$string = str_replace('"', '\\"', $string);
В частности, если ввод был в наборе символов, который мог быиметь действительный символ, например 0xbf5c, поэтому злоумышленник может ввести 0xbf22, чтобы получить 0xbf5c22, оставив действительный символ, за которым следует двойная кавычка без кавычек (").
Есть ли простой способ решить эту проблему, или янеправильное понимание проблемы?
(В моем случае строка входит в атрибут value HTML-тега ввода: echo 'input type = "text" value = "'. $ string. '"> ';)
РЕДАКТИРОВАТЬ: В этом отношении, а как насчет такой функции, как preg_quote ()? У нее нет аргумента charset, поэтому она кажется совершенно бесполезной в этом сценарии. Когда у вас нет опцииограничив набор символов в UTF-8 (да, это было бы неплохо), кажется, что вы действительно инвалид. Какие функции замены и цитирования доступны в этом случае?