Mysqlにインポートされているいくつかの乱雑なデータに対していくつかのデータクレンジングを行っています。
データには「疑似」Unicode文字が含まれていますが、実際には「u00e9」などの文字列に埋め込まれています。
したがって、1つのフィールドが.. 'Jalostotitlu00e1n'になる可能性があります。不器用な 'u00e1n'を削除して、対応するutf文字に置き換える必要があります。
Mysqlで部分文字列とCHRを使用してこれを行うことができますが、ImはPHPを介してデータを事前処理するため、そこでも実行できます。
Mysqlとphpを設定してutfデータを処理する方法についてはすでに知っています。問題は、インポートするソースデータに本当にあります。
ありがとう
方法があります。すべてのuXXXX
をHTML表現で置き換え、html_entity_decode()
を実行します
つまりecho html_entity_decode("Jalostotitlán");
_u1234
_形式のすべてのUTF文字は、HTMLでは_ሴ
_として印刷できます。しかし、UTFシーケンスの開始を識別する文字が他にない場合、多くの誤検知が発生する可能性があるため、置換を行うのは非常に困難です。単純な正規表現は
preg_replace('/u([\da-fA-F]{4})/', '&#x\1;', $str)
/ * utf8 htmlをansiに変換するための関数php * /
public static function Utf8_ansi($valor='') {
$utf8_ansi2 = array(
"\u00c0" =>"À",
"\u00c1" =>"Á",
"\u00c2" =>"Â",
"\u00c3" =>"Ã",
"\u00c4" =>"Ä",
"\u00c5" =>"Å",
"\u00c6" =>"Æ",
"\u00c7" =>"Ç",
"\u00c8" =>"È",
"\u00c9" =>"É",
"\u00ca" =>"Ê",
"\u00cb" =>"Ë",
"\u00cc" =>"Ì",
"\u00cd" =>"Í",
"\u00ce" =>"Î",
"\u00cf" =>"Ï",
"\u00d1" =>"Ñ",
"\u00d2" =>"Ò",
"\u00d3" =>"Ó",
"\u00d4" =>"Ô",
"\u00d5" =>"Õ",
"\u00d6" =>"Ö",
"\u00d8" =>"Ø",
"\u00d9" =>"Ù",
"\u00da" =>"Ú",
"\u00db" =>"Û",
"\u00dc" =>"Ü",
"\u00dd" =>"Ý",
"\u00df" =>"ß",
"\u00e0" =>"à",
"\u00e1" =>"á",
"\u00e2" =>"â",
"\u00e3" =>"ã",
"\u00e4" =>"ä",
"\u00e5" =>"å",
"\u00e6" =>"æ",
"\u00e7" =>"ç",
"\u00e8" =>"è",
"\u00e9" =>"é",
"\u00ea" =>"ê",
"\u00eb" =>"ë",
"\u00ec" =>"ì",
"\u00ed" =>"í",
"\u00ee" =>"î",
"\u00ef" =>"ï",
"\u00f0" =>"ð",
"\u00f1" =>"ñ",
"\u00f2" =>"ò",
"\u00f3" =>"ó",
"\u00f4" =>"ô",
"\u00f5" =>"õ",
"\u00f6" =>"ö",
"\u00f8" =>"ø",
"\u00f9" =>"ù",
"\u00fa" =>"ú",
"\u00fb" =>"û",
"\u00fc" =>"ü",
"\u00fd" =>"ý",
"\u00ff" =>"ÿ");
return strtr($valor, $utf8_ansi2);
}
私のTwitterタイムラインスクリプトは、éなどの特殊文字を\ u00e9に返すため、バックスラッシュを取り除き、@ rubbudeのpreg_replaceを使用しました。
// Fix uxxxx charcoding to html
$text = "De #Haarstichting is h\u00e9t medium voor alles Into: De #Haarstichting is hét medium voor alles";
$str = str_replace('\u','u',$text);
$str_replaced = preg_replace('/u([\da-fA-F]{4})/', '&#x\1;', $str);
echo $str_replaced;
それは私のために働き、それは変わります:De #Haarstichting is h\u00e9t medium voor alles
に:De #Haarstichting is hét medium voor alles