Ich habe eine MySQL-Tabelle mit 120.000 Zeilen im UTF-8-Format gespeichert. Es gibt ein Feld, Produktname, das Text mit vielen Akzenten enthält. Ich muss ein zweites Feld mit dem gleichen Namen füllen, nachdem ich es in ein URL-freundliches Formular (ASCII) umgewandelt habe.iconv gibt "Illegal Character" mit smarten Zitaten - wie man sie los wird?
Da PHP nicht direkt behandeln UTF-8, ich bin mit:
$value = iconv ('UTF-8', 'ISO-8859-1', $value);
den Namen ISO-8859-1 zu konvertieren, durch eine massive strstr Anweisung gefolgt jede akzentuierte Zeichen zu ersetzen durch sein akzentfreies Äquivalent (à wird zum Beispiel zu a).
jedoch die ursprünglichen Textnamen mit typografischen Anführungszeichen eingegeben wurden, und iconv Drosseln, wenn es über einen kommt - ich:
Unknown error type: [8] iconv() [function.iconv]: Detected an illegal character in input string
loszuwerden, die typografischen Anführungszeichen zu erhalten, bevor iconv verwenden, ich habe versucht, mit drei Aussagen wie:
$value = str_replace('’', "'", $value);
(â € ™ ist der Rohwert einer UTF-8-Smart-Apostroph)
Da die Textdatei ist so lang, weil dieser str_replace des th Das Skript, um jedes Mal auszumerzen.
Was ist der schnellste Weg, um die typografischen Anführungszeichen (oder alle ungültigen Zeichen) aus einem UTF-8-String in Streife aus, vor iconv läuft?
Oder gibt es eine einfachere Lösung für dieses ganze Problem? Was ist der schnellste Weg, um einen Namen mit vielen Akzenten in UTF-8 in einen Namen ohne Akzente, richtig geschrieben, in ASCII zu konvertieren?
Haben Sie versucht, iconv() '// TRANSLIT Fähigkeit aus? Es sollte akzentuierte Zeichen in ihre lesbaren ASCII-Äquivalente konvertieren. – ceejayoz
Ich schaue mir die Dokumentation an, aber ich sehe nicht, wie es helfen wird - wenn iconv() bereits an einem schlauen Zitat erstickt, wird es dann nicht noch ersticken, wenn ich // TRANSLIT benutze? –
Dies ist mehr für Ihre "massive strstr Aussage" - deshalb habe ich einen Kommentar statt einer Antwort gemacht. – ceejayoz