私は120,000行のUTF-8形式で格納されたMySQLテーブルを持っています。多くのアクセントのあるテキストを含む1つのフィールド、製品名があります。私は、この同じ名前の2番目のフィールドを、URLに優しいフォーム(ASCII)に変換してから入力する必要があります。iconvは、スマートな引用符で "不正な文字"を与える - それらを取り除く方法?
PHPを直接UTF-8に対応していないので、私が使用しています:
$value = iconv ('UTF-8', 'ISO-8859-1', $value);
をISO-8859-1に名前を変換するには、ことによって、任意のアクセント付きの文字を置き換えるために大規模なはstrstrステートメントで(例えば、aはaとなります)。
しかし、元のテキスト名は引用符で入力された、そしてそれは1渡って来るたびのiconvチョーク - 私が取得:
Unknown error type: [8] iconv() [function.iconv]: Detected an illegal character in input string
はiconvのを使用する前に、スマート引用符を取り除くために、私が試してみましたテキストファイルには、これらのstr_replaceの原因番目、とても長いので
$value = str_replace('’', "'", $value);
(€™は、UTF-8スマート単一引用符の生の値であるA)
:のような3つの文を使用して毎回タイムアウトするスクリプト。
前のiconvを実行し、UTF-8文字列からスマート引用符(または無効な文字)を取り除くための最速の方法は何ですか?
または、この問題全体を簡単に解決できますか? UTF-8で多くのアクセントを持つ名前をアクセントのない名前に変換する最速の方法は、ASCIIで正確に綴られていますか?
iconv()の// TRANSLIT能力を試しましたか?アクセント付きの文字を読みやすいASCIIに変換する必要があります。 – ceejayoz
私はドキュメントを見ていますが、iconv()が既にスマートな見積もりでチョークしている場合、// TRANSLITを使用してもまだチョークしませんか? –
これはあなたの "大量のstrstrステートメント"のためのものです - 私は答えの代わりにコメントをしたのです。 – ceejayoz