2011-01-19 11 views
0

とにhtmlentities私はこのトピックに関するウェブ上の様々な/一貫性のない多くの情報を発見したので、私は誰かが、これらの問題で私を助けることができる願っています:UTF-8、XML、およびPHP/MySQLの

utf-8 mysql dbに挿入したり、utf-8 XMLファイルに書き込んだりすることができるように、文字列をクレンジングする関数が必要です。 utf-8に変換できない文字は削除する必要があります。

XMLファイルへの書き込みについては、htmlエンティティを数値エンティティに変換する問題にも取り掛かります。 htmlspecialchars()はほとんど常に動作しますが、無効なhtmlエンティティを含むすべての文字列を適切にクレンジングするには不十分であることを読んでいます。あなたの助け、ブライアン

答えて

0

ため

ありがとうございます、文字列から来た場所言いませんでしたが、あなたはHTMLフォーム送信からそれらを取得している場合は、この記事を参照してください。

Setting the character encoding in form submit for Internet Explorer

フォームの提出を希望する文字セットをブラウザに明示的に伝える必要があります。UTF-8を指定した場合は、ブラウザから無効なUTF-8を取得しないでください。あなたが悪意のある攻撃のいずれかのタイプから身を守るためにしたい場合は、iconvを使用する必要があります:

http://www.php.net/iconv

$ utf_8_string =のiconv($ from_charset、$ to_charset、$ original_string)。

$ from_charsetと$ to_charsetの両方に "utf-8"を指定すると、$ original_stringに無効なUTF-8が含まれているとiconv()がエラーを返すはずです。

文字列を別のソースから取得していて、文字エンコーディングが分かっている場合でも、iconv()を使用できます。米国の典型的なエンコーディングは、CP-1252(Windows)とISO-8859-1(他のすべて)です。

0

これは何か?

function cleanse($in) { 
    $bad = Array('”', '“', '’', '‘'); 
    $good = Array('"', '"', '\'', '\''); 
    $out = str_replace($bad, $good, $in); 
    return $out; 
} 
0

あなたはiconvのかMBSTRINGでUTF-8に任意のエンコーディングからの文字列を変換することができます:

// With the //IGNORE flag, this will ignore invalid characters 
iconv('input-encoding', 'UTF-8//IGNORE', $the_string); 

または

mb_convert_encoding($the_string, 'UTF-8', 'input-encoding'); 
関連する問題