以前に解決されたこの質問の後で、特殊文字や二重引用符などに別の問題があるようです。
以前は、「&」などの記号をXMLの数値コードに変換するこの関数を使用していました。
function convert_specialchars_to_xmlenties($string)
{
# in order to convert <, >, &, ' and ", include them into the square brackes [<\'"&>\x80-\xff]
$output = preg_replace('/([<\'"&>\x80-\xff])/e', "'&#' . ord('$1') . ';'", $string);
# return the result
return $output;
}
だから私の入力が裁判官-FürstováMila&裁判官-FürstováMilaの場合
私は取得しますJudge-Fürstová Mila & Judge-Fürstová Mila
しかし、私はPDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
すべての特殊文字を処理するために使用しているので、私の入力が次のようなものである場合
裁判官-FürstováMila&裁判官-FürstováMila
今戻ってきます、
Judge-Fürstová Mila & Judge-Fürstová Mila
これはXMLでは正しくないと思います。
したがって、<、>、&、'および"のみを変換する必要があると思いますが、 üやáなどの他の特殊文字は変換しないでください。
どうすればこれができるのか、何かアイデアはありますか?または、問題を誤って考え/理解したことがあり、この問題を解決するための他のより良い方法がありますか?
編集:
<、>、&、'と"だけを変換する関数を変更しただけなので、間違っていました。
$output = preg_replace('/([<\'"&>])/e', "'&#' . ord('$1') . ';'", $string);
XMLはまだ以下の変換されたコードを受け入れません、
Judge-Fürstová Mila & Judge-Fürstová Mila
私はそれがそれをする他の理由を考えることができません!何か案は?